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
- base_ram covers the entire stack at rest, including the database and every sidecar container the project ships in its own reference Compose file. It is not the application process alone.
- The 25% headroom is deliberate. A box sized exactly to its working set is a box that dies during an upgrade.
- vCPU is carried through from the project's baseline and is not scaled with team size. For these workloads memory runs out first. This is a simplification and we would rather name it than hide it.
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.
| Provider | Plans priced | Source | Read on |
|---|---|---|---|
| DigitalOcean | 9 plans | vendor page | 2026-09-12 |
The three costs of running it yourself
| Line | How it is set | Why |
|---|---|---|
| Server | The plan chosen above, at list price | No committed-use or annual discounts are assumed. |
| Backups | 20% 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
| Rating | Meaning | Setup | Per month |
|---|---|---|---|
| easy | One container, no external dependencies, nothing to do beyond keeping the image current | 2 h | 0.5 h |
| medium | Multi-container stack with a database you are responsible for backing up | 6 h | 1.5 h |
| hard | Several stateful services, a non-trivial upgrade path, and a real risk of data loss if you rush it | 16 h | 3 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:
| Product | Tier compared | Source | Read on |
|---|---|---|---|
| 1Password | Business | vendor page | 2026-09-12 |
| Atlassian Statuspage | Startup | vendor page | 2026-09-12 |
| Auth0 | Essentials (B2B) | vendor page | 2026-09-12 |
| Google Analytics 4 | Free | vendor page | 2026-09-12 |
| Notion | Business | vendor page | 2026-09-12 |
| Typeform | Plus | vendor page | 2026-09-12 |
| Zapier | Professional | vendor page | 2026-09-12 |
| Zendesk | Suite Team | vendor page | 2026-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
- Migration effort. Getting your existing data out of the incumbent and into the replacement is real work and is not counted anywhere. For a large historical dataset it can dwarf the setup figure.
- Feature parity. The tools are near-substitutes, not identical. Cost is one axis and often not the deciding one.
- Risk. A bad upgrade, a lost database, or a weekend spent on an outage has an expected cost that a spreadsheet cannot capture honestly.
- Bandwidth overages, managed databases and object storage beyond what the chosen plan includes. A few tools genuinely need external object storage and their pages name it, but it is not priced in.
- Annual and committed-use discounts on the hosting side. Both sides are quoted at the basis the vendor's page displayed, and the page states which that was.
- Your existing infrastructure. If you already run a server with spare memory, the marginal cost of one more container is close to zero and none of these figures apply to you.
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.