Umbraco vs Sanity and Next.js: what each really costs over three years
Umbraco's licence is free. Sanity's free plan is free. Neither fact tells you what either platform costs. We priced both properly — every tier, add-on licence, metered overage and the developer time on top — across three real project shapes.

Umbraco's licence costs nothing. Sanity's free plan costs nothing. Neither fact tells you anything useful about what either platform will cost you over three years, and both get quoted constantly as though they did.
So we priced both properly: every tier, every add-on licence, every metered overage rate, the infrastructure underneath and the developer time on top, across three realistic project shapes. We build on both — Umbraco and headless Sanity — so this is a buying guide rather than a pitch. If you want the one-sided versions, we wrote those too: the case for Umbraco and the case for Sanity and Next.js.
Which Umbraco do you actually mean?
Start here, because most comparisons are unusable for skipping it. They set one Umbraco against one Sanity. There are four Umbracos and they are not within a factor of twenty of each other.
- Self-hosted Umbraco. The CMS is MIT-licensed and free for commercial use, no per-server or per-seat fee. You supply hosting, a SQL Server, a CDN, a WAF, TLS and backups.
- Umbraco Cloud. The vendor's managed platform, billed per project: €45 a month on Starter, €280 on Standard, €730 on Professional, Enterprise on request.
- Umbraco plus its commercial add-ons. Forms, Deploy, Workflow, Engage, Commerce and UI Builder are separately licensed, from $130 to $22,500 a year, some per domain and some per installation.
- Umbraco's SaaS line. Heartcore, the headless CMS, and Compose, a content-orchestration platform that federates content from several source systems into a single API. Compose Professional is €12,000 a year and Enterprise €48,000, both metered by ingestion.
Consolidating ten brand sites costs €0 in licence fees on self-hosted Umbraco and €2,800 a month on Umbraco Cloud, because Cloud is per project and the vendor recommends one site per project. Anyone comparing Umbraco with a headless stack without saying which Umbraco is off by twentyfold.
That SaaS line is not a fourth point on the same curve — it is a different order of magnitude. Compose Professional at €12,000 a year is roughly twenty-two times a Cloud Starter, and it meters ingestions: 100,000 a month included, then €50 per additional thousand. Enterprise is €48,000 a year with a million included and €30 per thousand beyond it. An ingestion is one entity sent to the ingestion endpoint that causes a cache refresh, so the meter tracks how often your source systems change rather than how much traffic you serve. A third Custom tier is quote-only.
Heartcore deserves care if you are choosing today. It is still sold and still priced, but community discussion on Umbraco's own forum reads it as maintenance mode: no entries on the public roadmap, a last release note dated April 2025, and a product still built on Umbraco 13, which loses security patches on 14 December 2026. That is a community reading rather than a vendor statement, and Umbraco has announced no end of life either way. It matters here because if Heartcore were wound down, the published destination is Compose — at an order-of-magnitude higher price.
What does a small brochure site cost?
One site, English and Arabic, about thirty pages, two editors, roughly 20,000 visits a month, no uptime guarantee required.
- Self-hosted Umbraco, cheapest legitimate setup: about $25 a month of infrastructure — and $5,200 to $15,200 all-in over three years.
- Umbraco Cloud Starter, plus the second environment Umbraco's documentation requires for upgrade testing: $118 a month, about $7,850 over three years.
- Sanity Growth plus Vercel Pro: $67 a month, about $6,000 over three years.
- Sanity Free plus Cloudflare Workers Paid: $6.25 a month — the lowest infrastructure bill here, and not the lowest total.
That Umbraco range is the finding, not a hedge. Over three years the infrastructure is about $900 and the maintenance labour is $10,080 at an outsourced rate — thirteen times the hosting. At six maintenance days a year self-hosting wins; at fourteen it loses badly. At this size the platform decision is a labour-rate decision, not a licence decision, and any comparison printing a single number for it is hiding the only variable that matters.
What does a bilingual marketing site cost?
One site, English and Arabic with genuine right-to-left support, 80 to 150 documents, three to five editors, roughly 100,000 visits a month, staging plus production, editor preview, AI-assisted translation.
THREE-YEAR TOTAL, BILINGUAL MARKETING SITE monthly 3 years
-------------------------------------------------------------------------
A Umbraco self-hosted, cheapest
Hetzner VPS + SQL Server Express + Cloudflare free $34 $1,224
Umbraco Forms licence ($130/yr) $11 $390
Maintenance: 18 dev-days/yr @ $240/day $12,960
-------------------
$44 $14,543
C Umbraco Cloud Standard (SLA + 2 environments)
Standard plan (EUR 280/mo) $330 $11,880
Extra environment $85 $3,060
Maintenance: 8 dev-days/yr $5,760
-------------------
$393 $19,914
E Sanity Growth + Vercel Pro
Sanity Growth, 4 occupied seats @ $15 $60 $2,160
Vercel Pro ($20 incl. 1 seat + $20 usage credit) $20 $720
Vercel CDN request tier (traffic exceeds included) $20 $720
Sanity uncached API reads (useCdn disabled) $33 $1,188
AI translation credits, steady state $35 $1,260
Redis (rate limiting) + embeddings + DIY backups $15 $540
Maintenance: 8 dev-days/yr $5,760
-------------------
$185 $13,000
Labour at $30/hr outsourced. At $90/hr (EU/UAE) every maintenance
line triples and managed hosting wins by a wider margin. Excludes VAT.Our own first pass at that headless figure came out at $124 a month. It rose by half once we forced in the Vercel CDN request tier the traffic already exceeds, real AI-credit consumption rather than the included allowance, the fact that a front end tuned for content freshness pays the uncached read rate, the Redis the rate limiter needs, metered embeddings queries and the DIY backups a non-enterprise Sanity plan does not include. It still wins — by about 40 per cent rather than the 55 per cent the first pass implied. Treat any headless estimate that lands suspiciously low the same way, including ours.
What does a multi-brand estate cost?
Three brands, four locales, fifteen editors with roles and approval workflow, a million visits a month, an uptime SLA and an audit trail. At this size both families stop being self-service.
- Umbraco Cloud Professional across three projects is the only configuration here with a published uptime target: roughly $205,000 over three years once multilingual content production is included.
- Self-hosted Umbraco cannot buy an uptime SLA at any price — the support contracts starting at €8,000 a year per installation buy ticket response times, not availability. Licensing SQL Server Standard on a sixteen-core box is also about $31,560 plus Software Assurance, not the four-core floor most estimates use, and per-VM licensing generally requires Software Assurance that shared-tenancy hosts may not permit at all.
- Sanity Growth plus Vercel Pro models at about $69,000 over three years but cannot meet the brief: uptime SLA, custom roles, full audit trail and backups are enterprise-only and unpurchasable on Growth.
So the honest answer at this size is that both routes end in an unpriced enterprise quote, and the comparison should be run on those quotes rather than on either vendor's public pricing.
| Criterion | Umbraco self-hosted | Umbraco Cloud | Sanity + Next.js |
|---|---|---|---|
| Licence cost | MIT, free | From €45/mo per project | Free plan, then $15/seat |
| Editor seats included | Unlimited | Unlimited | $15 each |
| Form builder for editors | $130/yr add-on | Included | Custom build |
| Uptime SLA available | Not at any price | From €280/mo | Enterprise only |
| Field-level bilingual authoring | Variants, v15+ | Variants, v15+ | Native |
| Right-to-left Arabic admin UI | No Arabic locale | No Arabic locale | Unverified |
| Click-to-edit preview of the front end | |||
| AI translation built in | Metered credits | ||
| Patch surfaces you own | Four | Majors only | npm only |
| Data residency or on-premises | Any region | 5 regions listed | Not published |
| Annual price escalator | None | 5–7% each January | None published |
| Three-year total, bilingual site | ~$14,500 | ~$19,900 | ~$13,000 |
Eight cliffs that make the headline price misleading
- Umbraco Cloud Starter's real floor is €90 a month, not €45. Umbraco's own pricing page states that minor and major upgrades require testing in a second environment — and Starter ships only a Live environment. A Development environment is a €45 add-on, and Staging is not offered on Starter at any price.
- Starter to Standard is a 6.2x step — €45 to €280 with nothing in between. It triggers the moment you need an availability target, because Starter has none at all. Standard's target is 99.9%, though the service credits you could claim against it begin only at Professional.
- Umbraco Cloud bandwidth and media quotas have no published per-GB overage. Exceeding Starter's 5 GB of media means a tier upgrade or a negotiation, not a bill you can forecast.
- Umbraco Cloud environments are hard-capped at four, even on Enterprise. A branching model needing five cannot be served at any price.
- Sanity's document count is a hard cap, not an overage: 10,000 on Free, 25,000 on Growth, 50,000 with a $299-a-month add-on that is also Growth's technical ceiling. Assets, bandwidth and requests all meter and keep working — documents simply stop.
- A third Sanity dataset costs $999 a month. Two are included, so production plus staging is free, but datasets cannot be used as per-brand containers.
- Sanity's uncached and cached reads are ten times apart — $1 per 25,000 API requests against $1 per 250,000 CDN requests. A front end that bypasses the CDN to keep content fresh pays the higher rate on every read. That is an architecture decision with a price attached.
- Vercel's Hobby plan is a licence cliff, not a usage one. Its fair-use terms restrict Hobby to non-commercial personal use and define commercial use to include both advertising a product and being paid to build or host the site — so agency work breaches it twice. Any commercial site belongs on Pro from day one.
Why multilingual is the line that usually decides it
Umbraco has no product equivalent to field-level AI translation. Sanity's editor assistant understands its internationalised array fields and translates them in place, metered in AI credits. On Umbraco the same job is a bespoke integration against a third-party model, or it is human translation.
Priced as professional Modern Standard Arabic at $0.10 to $0.15 a word, a 150-document bilingual pass is roughly 60,000 words — about $7,200, against roughly $40 of AI credits. A four-locale estate of 450 documents is about 540,000 words: $54,000 to $81,000, against roughly $760. That is the largest single line in any multilingual comparison and it appears on neither vendor's pricing page.
Two honest qualifications. Machine translation with human review is not the same product as human translation, and for some Gulf brands it is not an acceptable substitute — we cover what bilingual quality actually demands in multilingual SEO for the GCC. And the saving only lands this way if your content model is field-level: Umbraco's block-level culture variance only arrived in version 15, and block structure stays invariant across languages, so reordering blocks in English reorders them in Arabic.
The finding that surprised us
Umbraco's backoffice has no right-to-left layout and ships no Arabic culture file. Version 17.7.0 includes 28 backoffice languages, Hebrew among them, and no Arabic. The open issue was closed as stale, with Umbraco stating they lack the in-house expertise to implement it correctly. Front-end Arabic rendering is fine on either stack — see our guide to RTL engineering — but Arabic-first editors would be authoring in a left-to-right English admin.
How should you actually decide?
Five questions, in this order. The first two are constraints; only the last three are preferences.
- Is there a residency clause or a .NET mandate? If yes, self-hosted Umbraco, and stop. It is a hard constraint, not a preference — Vercel has no Middle East region among its priced regions and Sanity publishes no residency options.
- Must editors create their own forms without a developer? If yes, and there is no budget for a custom build, Umbraco. Forms is free on every Cloud plan.
- How many locales, and will their content genuinely diverge? Two or more diverging locales push hard toward field-level localisation.
- What does an hour of your maintenance labour cost? Below roughly $30 an hour, self-hosting is defensible. Above it, managed hosting is usually cheaper than the time it saves.
- How many brands, and will you self-host? Ten or more self-hosted brands favour Umbraco. Any number of brands on Umbraco Cloud favours almost anything else.
A note on these numbers
Being straight about sourcing. Every Umbraco Cloud figure here was read directly from umbraco.com/pricing on 27 September 2026, where the page reports itself last modified on 20 August 2026; an earlier draft of this article flagged Professional as contested between €730 and €750, and the live page settles it at €730. The Sanity, Vercel, Azure, Cloudflare and Hetzner figures were confirmed live on 26 September 2026. All prices exclude VAT. The Compose and Heartcore figures are the one exception: those product pages sit behind bot protection that we did not attempt to circumvent, so they come from a capture of Umbraco's own pages dated 21 September 2026 — six days before publication, but not live.
What nobody publishes
Several lines are simply not available publicly, and any comparison claiming otherwise is guessing: Umbraco Cloud Enterprise, its Redis and load-balancing add-ons (which compound, because load balancing requires Redis plus multiple dedicated-resource units), Umbraco's extended-support pricing, Sanity Enterprise and Vercel Enterprise. For a highly available Umbraco Cloud setup or any enterprise-tier headless deal, get a written quote before comparing anything.
If you want this run against your actual project — document count, locales, traffic, team size, residency constraints — that is a conversation rather than a pricing page. Talk to us, or see what a website costs in Dubai for the build side of the same question.
Is Umbraco cheaper than Sanity?
Not at any of the three sizes we modelled, once every line is counted. For a bilingual marketing site, Umbraco Cloud Standard — the first tier with an uptime target and a second environment — runs about $393 a month against roughly $185 to $220 for Sanity Growth plus Vercel Pro. Self-hosted Umbraco is cheaper on infrastructure at about $44 a month, but its three-year total lands near $14,500 because maintenance labour dominates. Umbraco Cloud is also billed per project rather than per organisation, so a three-brand estate triples while the headless equivalent does not.
Is Umbraco really free?
The CMS genuinely is. Umbraco core is MIT-licensed, free for commercial use, with no per-server and no per-seat fee. But the licence is the cheapest part of the bill: you still pay for hosting, a SQL Server, a CDN, TLS and backups, and several first-party add-ons are separately licensed products — Forms, Deploy, Workflow, Engage, Commerce and UI Builder. A free licence is not a free site.
What does Umbraco Cloud cost in 2026?
Umbraco Cloud is billed per project: €45 a month on Starter, €280 on Standard, €730 on Professional, with Enterprise quoted on request. The practical floor is higher than the headline, because Umbraco's own documentation states that CMS upgrades require testing in a second environment and Starter includes only one — the extra environment is another €45, so Starter is really €90. Prices rose 5 to 7 per cent on 1 January 2026 for new and existing customers, and annual billing is exactly twelve times monthly, so paying up front buys no discount.
What does Sanity cost beyond the free plan?
Growth is $15 per occupied seat per month with viewer seats free. Metered overages are $1 per 25,000 uncached API requests, $1 per 250,000 CDN requests, $0.30 per GB of bandwidth and $0.50 per GB of assets. Two things are hard caps rather than overages and matter more than the rates: documents stop at 25,000 on Growth, and a third dataset costs $999 a month. An uptime SLA, custom roles, a full audit trail and backups are enterprise-only and cannot be bought on Growth at any price.
Which is cheaper to maintain?
Managed, in both families. Self-hosted Umbraco gives you four patch surfaces — the OS or PaaS, the .NET runtime, the CMS and the add-ons — plus a SQL Server to operate and back up. At a small site's scale that labour costs more than the entire hosting saving. Sanity is the only component in either stack where the vendor patches the CMS itself, because there is no CMS server you run. Neither vendor patches your framework, though: Vercel's own guidance on Next.js advisories is that patching is the only complete mitigation.
How much does multilingual content change the cost?
More than hosting does, and it is the line that decides most bilingual projects. Umbraco has no product equivalent to field-level AI translation, so the same job is human translation or a bespoke integration. Priced as professional Modern Standard Arabic at $0.10 to $0.15 a word, a 150-document bilingual pass is roughly 60,000 words — about $7,200, against roughly $40 of AI credits on the headless side. A four-locale estate of 450 documents is $54,000 to $81,000 against roughly $760.