SelfHostCost

Methodology: how every figure on this site is produced

This page exists so you can check our arithmetic, disagree with our assumptions, and see exactly which prices we have confirmed and which we have not. If a number on this site cannot be traced back to something here, it is a bug.

The shape of the problem

Per-seat software has no floor and a steep slope. A server has a high floor and almost no slope. Every comparison here is the point where those two lines cross, which is why the honest answer is never "self-hosting is cheaper" but "cheaper above roughly this many people, assuming your time is worth roughly this much".

Sizing a self-hosted tool

For a tool and a team size, the required memory is:

memory = (base_ram + ram_per_user × users) × 1.25

and the required disk is:

disk = base_disk + disk_per_user × users

Where a project publishes a minimum or recommended specification, the base figures come from that and the page says so. Where it does not, the base figures are derived from the services in its reference Compose stack and the page labels them an estimate. The per-user increments are always ours. They are set generously rather than optimistically, because undersizing the server flatters self-hosting and we would rather the bias ran the other way.

Picking the server

We take the cheapest plan, among providers whose prices we have read ourselves, whose memory and disk both meet or exceed the requirement. No partial fits, and no pretending a tool will squeeze onto a plan that is a gigabyte short.

We only trust 1 provider today. That is a real limitation. Several hosts render their prices client-side or gate them behind a region selector, and we do not publish a price we could not read. The most important consequence: Hetzner Cloud, Vultr, PikaPods are absent from every calculation, and Hetzner in particular is usually cheaper per gigabyte of memory than what we quote. Treat our server costs as an upper bound.

ProviderPlans pricedSourceRead on
DigitalOcean9 plansvendor page2026-09-12

The three costs of running it yourself

LineHow it is setWhy
ServerThe plan chosen above, at list priceNo committed-use or annual discounts are assumed.
Backups20% of the server price Roughly what provider snapshots cost. Treating backups as optional would make every figure on this site meaningless.
Your time 0.5 to 3 hours a month by difficulty, at $75 an hour This is usually the largest line, and leaving it out is the single most common way these comparisons mislead.
Setup, once 2 to 16 hours by difficulty, at $75 an hour Amortised against the monthly saving to give the break-even point.

Difficulty, and what it implies

RatingMeaningSetupPer month
easyOne container, no external dependencies, nothing to do beyond keeping the image current 2 h0.5 h
mediumMulti-container stack with a database you are responsible for backing up 6 h1.5 h
hardSeveral stateful services, a non-trivial upgrade path, and a real risk of data loss if you rush it 16 h3 h

If your time is free

Every page also shows the figure without labour. Both numbers are real. Which one applies to you depends on whether those hours would otherwise have been billable, or whether you would have spent the evening on it for fun anyway. We lead with labour included because that is the number a business should plan against.

Pricing the commercial side

We compare against the cheapest tier a team would realistically land on, not the cheapest tier that exists. Quoting a vendor's entry plan, with its response caps and missing features, against a full self-hosted deployment would be dishonest, and it is how most comparison pages arrive at their conclusions. The tier used is named on every page.

Seat minimums are honoured. Where a vendor bills something other than seats, such as tasks executed, monthly active users, or subscriber count, the page says so explicitly rather than pretending team size is the right axis. Where a vendor's free tier already covers the team in question, the page says that too, and makes no savings claim.

Prices we have confirmed

Read directly from the vendor's own pricing page on the date shown:

ProductTier comparedSourceRead on
1PasswordBusinessvendor page2026-09-12
Atlassian StatuspageStartupvendor page2026-09-12
Auth0Essentials (B2B)vendor page2026-09-12
Google Analytics 4Freevendor page2026-09-12
NotionBusinessvendor page2026-09-12
TypeformPlusvendor page2026-09-12
ZapierProfessionalvendor page2026-09-12
ZendeskSuite Teamvendor page2026-09-12

Prices we have not confirmed

36 products in our dataset have no confirmed price. Because strict mode is on, no page that would depend on one of them has been published. They are: Amplitude, Asana, Better Stack Uptime, Bitwarden, Calendly, Clerk, Confluence, Datadog, DocuSign, Dropbox Business, Fathom Analytics, Freshdesk, Google One storage, Google Workspace, Help Scout, HubSpot Sales Hub, Intercom, Jira, LastPass, Linear, Looker Studio Pro, Mailchimp, Make, Mixpanel, Mode, monday.com, Okta Workforce Identity, Pingdom, Pipedrive, Retool, Salesforce Sales Cloud, Sentry, Slack, SurveyMonkey, Tableau, Trello.

Currency

Some vendors served their pricing page in euros. Those figures are converted at a single dated rate, 1 EUR = 1.1592 USD, the Frankfurter, European Central Bank reference rates rate for 2026-09-11. Any page using it says so and links here.

The horizon and the break-even

Totals run over 36 months. The break-even point is the setup cost divided by the monthly saving:

break_even_months = setup_cost / (saas_monthly - selfhosted_monthly)

When the monthly saving is zero or negative there is no break-even, and the page says "never" rather than quietly omitting the row.

What this model deliberately ignores

How stale is this page

Prices are a snapshot with a date attached, not a live feed. Every figure links to the page it came from, and the vendor's page is the authority. A price older than about 45 days should be treated as indicative and re-checked before anyone spends money on the strength of it.

Currently: 24 comparison pages published, wave 1, reference team size 10 people, strict price checking on.