# Umbraco 13 reaches end of life on 14 December 2026: upgrade to 17 or move to Sanity?

Reviewed by Martin Dejnicki · facts verified 25 October 2026 · canonical: https://deploi.ca/sanity/migration/leaving-umbraco

## Short answer

Umbraco 13 reaches end of life on 14 December 2026; the in-place upgrade is Umbraco 17 LTS (long-term support), which Umbraco lists as security-only from 27 November 2027 and end of life 27 November 2028 ([Umbraco](https://umbraco.com/products/knowledge-center/long-term-support-and-end-of-life/umbraco-13-end-of-life-eol/), [schedule](https://umbraco.com/products/knowledge-center/long-term-support-and-end-of-life/), October 2026). Umbraco 14 removed AngularJS, Nested Content and Grid Layout ([Umbraco](https://docs.umbraco.com/umbraco-cms/get-started/upgrading-and-migrating/find-your-upgrade-path), October 2026), so price Sanity when that upgrade rebuilds your backoffice.

- **Umbraco 13 end of life:** 14 December 2026. No security patches or updates after that date; sites keep running, and Umbraco strongly advises against running them ([Umbraco, Umbraco 13 End-of-Life (EOL)](https://umbraco.com/products/knowledge-center/long-term-support-and-end-of-life/umbraco-13-end-of-life-eol/); [Umbraco, Long-term Support and End-of-Life for Umbraco](https://umbraco.com/products/knowledge-center/long-term-support-and-end-of-life/))
- **Umbraco 17 LTS:** End of life 27 November 2028. Released 27 November 2025 on .NET 10, security fixes only from 27 November 2027, as Umbraco lists it ([Umbraco, Long-term Support and End-of-Life for Umbraco](https://umbraco.com/products/knowledge-center/long-term-support-and-end-of-life/); [Umbraco Documentation, Upgrade Your Project](https://docs.umbraco.com/umbraco-cms/17.latest/get-started/upgrading-and-migrating/upgrade-details))
- **Umbraco 13 XLTS:** 6, 12 or 24 months, quoted on request. Security patches only, starting the day after end of life, delivered through a private NuGet feed; Umbraco publishes no price ([Umbraco, Extended Long-Term Support for Umbraco 13](https://umbraco.com/products/knowledge-center/long-term-support-and-end-of-life/xlts/umbraco-13-xlts/); [Umbraco, Umbraco 13 End-of-Life (EOL)](https://umbraco.com/products/knowledge-center/long-term-support-and-end-of-life/umbraco-13-end-of-life-eol/))
- **Sanity Growth plan:** $15 per seat a month, billed monthly. Umbraco CMS itself is free and open source; Sanity's Enterprise plan is custom pricing, as of October 2026 ([Sanity, Plans that scale with you](https://www.sanity.io/pricing); [Sanity, Sanity for Startups](https://www.sanity.io/startups); [Umbraco, umbraco/Umbraco-CMS on GitHub](https://github.com/umbraco/Umbraco-CMS))

## Deploi's call

Upgrade a clean Umbraco 13 site to Umbraco 17 before 14 December 2026: the deadline forces a version upgrade, not a new CMS. Price Sanity only when the upgrade audit shows you're rebuilding the backoffice anyway, or when one content model must feed several channels. Then you're comparing two rebuilds, and that comparison is fair.

**UPGRADE: Upgrade Umbraco 13 to Umbraco 17 when**

- Your backoffice has few or no AngularJS extensions, so Umbraco 14's rewritten backoffice costs you little.
- Your content already sits in Block List or Block Grid, Umbraco's block editors, not in Nested Content, Grid Layout or macros, which Umbraco's docs say Umbraco 14 removed.
- One website rendered by your .NET (Microsoft's development platform) team is the main channel, or Umbraco's Content Delivery API (application programming interface) covers the others.
- Policy requires you to host the content database, because Sanity hosts the Content Lake and only Sanity Studio can be self-hosted.

**SANITY: Replatform from Umbraco to Sanity when**

- Custom AngularJS editors and dashboards would be rewritten for Umbraco 14 and later anyway, so the editing layer is new on either path.
- The same content feeds several sites, apps or brands from one content model.
- Your front end is moving to a JavaScript framework and your developers work in TypeScript and React, which is what Sanity Studio runs on.
- You accept per-seat fees, because Umbraco's open-source core is free but Sanity charges per seat from its Growth plan up, as of October 2026 (Sanity pricing).

## What does Umbraco 13's end of life on 14 December 2026 change?

Umbraco 13's end of life on 14 December 2026 ends security patches and updates; the site keeps running, against Umbraco's strong advice ([Umbraco, Umbraco 13 End-of-Life](https://umbraco.com/products/knowledge-center/long-term-support-and-end-of-life/umbraco-13-end-of-life-eol/), October 2026). From 24 October 2026, 51 days remain (Deploi arithmetic from Umbraco's dates). Umbraco 18 can't upgrade from Umbraco 13, so Umbraco 17 is the landing point ([Umbraco Docs, Find Your Upgrade Path](https://docs.umbraco.com/umbraco-cms/get-started/upgrading-and-migrating/find-your-upgrade-path); [Breaking Changes Overview](https://docs.umbraco.com/umbraco-cms/get-started/upgrading-and-migrating/version-specific), October 2026). Umbraco 13's runtime, .NET (Microsoft's development platform) 8, loses support sooner, on 10 November 2026 ([Microsoft](https://learn.microsoft.com/en-us/lifecycle/products/microsoft-net-and-net-core), October 2026); [the deadline calendar](https://deploi.ca/sanity/migration/leaving-a-legacy-cms/cms-end-of-life-calendar) lists both.

**Umbraco 17 is the only supported long-term release after 14 December 2026**

| Umbraco version | Release type | Released | Security fixes only from | End of life |
| --- | --- | --- | --- | --- |
| Umbraco 13 | LTS | 14 December 2023 | 14 December 2025 | 14 December 2026 |
| Umbraco 17 | LTS | 27 November 2025 | 27 November 2027 | 27 November 2028 |
| Umbraco 18 | STS | 25 June 2026 | 25 March 2027 | 25 June 2027 |
| Umbraco 19 | STS | 10 December 2026 | 10 September 2027 | 10 December 2027 |
| Umbraco 21 | LTS | 9 December 2027 | 9 December 2029 | 9 December 2030 |

LTS (long-term support) and STS (standard-term support) are Umbraco's terms. Umbraco 19 and 21 are scheduled, not shipped. Sources: [Umbraco, Long-term Support and End-of-Life for Umbraco](https://umbraco.com/products/knowledge-center/long-term-support-and-end-of-life/); [Umbraco, Umbraco 13 End-of-Life (EOL)](https://umbraco.com/products/knowledge-center/long-term-support-and-end-of-life/umbraco-13-end-of-life-eol/). As of 24 October 2026.

## What does upgrading Umbraco 13 to Umbraco 17 involve?

Upgrading Umbraco 13 to Umbraco 17 is an in-place NuGet upgrade that also moves your project from .NET (Microsoft's development platform) 8 to .NET 10 ([Umbraco Docs, Upgrade Your Project](https://docs.umbraco.com/umbraco-cms/17.latest/get-started/upgrading-and-migrating/upgrade-details), October 2026). The work sits in the releases you cross on the way ([Umbraco Docs, Find Your Upgrade Path](https://docs.umbraco.com/umbraco-cms/get-started/upgrading-and-migrating/find-your-upgrade-path), October 2026):

- **Umbraco 14** removed AngularJS from the backoffice, so every AngularJS property editor, dashboard or package extension is rewritten; the new backoffice is built with TypeScript, Web Components and Lit ([Umbraco blog](https://umbraco.com/blog/umbraco-14-release-candidate/), October 2026).
- **Umbraco 14** also removed Nested Content, Grid Layout, the legacy Media Picker and macros. Umbraco recommends rebuilding them with Block Grid or Block List.
- **Umbraco 15** changed the Block Editor data format, and the content migration "can take a while" on a large site, which stays unresponsive while it runs.
- **Umbraco 16** removed the TinyMCE option of the Rich Text Editor, which is now built on Tiptap ([Umbraco Docs, Rich Text Editor](https://docs.umbraco.com/umbraco-cms/model-your-content/property-editors/built-in-umbraco-property-editors/rich-text-editor), October 2026).

A site built on Block List, Block Grid and the built-in editors carries little of this list. A site with years of custom AngularJS backoffice code carries most of it (Deploi's judgment).

## Should an Umbraco 13 site upgrade in place or rebuild on Umbraco 17?

An Umbraco 13 site should upgrade in place when it's healthy and well understood, and rebuild on Umbraco 17 when it carries legacy backoffice code; that's Umbraco's own split ([Umbraco blog, Going from Umbraco 13 to 17](https://umbraco.com/blog/going-from-umbraco-13-to-17/), October 2026). Umbraco names two paths:

- **In place.** Upgrade the existing solution and run the migrations.
- **Fresh build.** Build a fresh Umbraco 17 solution and move content and schema with Umbraco Deploy's import and export.

Umbraco's blog goes further: "For most cases, it makes more sense to build fresh on Umbraco 17." Read that as vendor opinion, because the same post sells Umbraco Cloud, which includes Umbraco Deploy with every plan.

The split matters for a Sanity decision because it changes what you compare. An in-place upgrade against a Sanity migration is lopsided: one keeps your content model, views and hosting, the other replaces all three. A fresh Umbraco 17 build against a Sanity build is two rebuilds of the editing layer, which is where the cost of moving comes closest to the cost of staying (Deploi's judgment).

## When does replatforming from Umbraco to Sanity win?

Replatforming from Umbraco to Sanity wins when you're rebuilding the backoffice anyway and one content model has to feed several channels. Going headless isn't a reason on its own, because Umbraco 13 and 17 ship an opt-in Content Delivery API (application programming interface) that serves content as JSON ([Umbraco Docs, Content Delivery API](https://docs.umbraco.com/umbraco-cms/13.latest/reference/content-delivery-api); [current version](https://docs.umbraco.com/umbraco-cms/develop-with-umbraco/headless-and-apis/content-delivery-api), October 2026). Sanity Studio, Sanity's editing app, is an open-source React app that connects to Sanity's hosted APIs and Content Lake ([Sanity Docs, Hosting and deployment](https://www.sanity.io/docs/studio/deployment), October 2026).

Three situations favor the move:

- Custom AngularJS editors, dashboards or Grid Layout pages make Umbraco 17 a rebuild too.
- The same content feeds several sites, apps or brands, which is the case for [running several sites from one content platform](https://deploi.ca/sanity/use-cases/cms-consolidation).
- Your front end is moving to a JavaScript framework, and your team wants rich text as Portable Text, a JSON rich text format. Umbraco's Rich Text Editor returns HTML ([Umbraco Docs](https://docs.umbraco.com/umbraco-cms/model-your-content/property-editors/built-in-umbraco-property-editors/rich-text-editor), October 2026), and its Content Delivery API outputs HTML unless you enable `RichTextOutputAsJson` ([Umbraco Docs](https://docs.umbraco.com/umbraco-cms/13.latest/reference/content-delivery-api), October 2026).

## When should you stay on Umbraco, buy XLTS, or pick a CMS other than Sanity?

Stay on Umbraco when the upgrade audit is small or policy says you host the content database, because Sanity hosts it and you can't self-host the Content Lake ([Sanity Docs, Studio development](https://www.sanity.io/docs/studio/development), October 2026). Buy Extended Long-Term Support (XLTS) only to bridge a funded plan: 6, 12 or 24 months from the day after end of life, security patches only, quoted on request ([Umbraco, Umbraco 13 XLTS](https://umbraco.com/products/knowledge-center/long-term-support-and-end-of-life/xlts/umbraco-13-xlts/), October 2026). Umbraco Heartcore is Umbraco's hosted headless content management system (CMS) ([Umbraco, Heartcore](https://umbraco.com/products/umbraco-heartcore/), October 2026).

**Four answers to Umbraco 13's end of life**

| Verdict | What you do | When it wins |
| --- | --- | --- |
| UPGRADE | Upgrade to Umbraco 17 in place with NuGet | Few AngularJS extensions, content in Block List or Block Grid |
| WAIT | Buy XLTS for 6, 12 or 24 months | A funded rebuild can't launch by 14 December 2026 |
| ELSEWHERE | Move to Umbraco Heartcore or a self-hosted CMS | You want a hosted Umbraco editor, or must self-host and leave Umbraco |
| SANITY | Replatform to Sanity | The backoffice is a rebuild anyway and content feeds several channels |

Sources: [Umbraco, Umbraco 13 End-of-Life (EOL)](https://umbraco.com/products/knowledge-center/long-term-support-and-end-of-life/umbraco-13-end-of-life-eol/); [Umbraco, Extended Long-Term Support for Umbraco 13](https://umbraco.com/products/knowledge-center/long-term-support-and-end-of-life/xlts/umbraco-13-xlts/); [Umbraco Documentation, Find Your Upgrade Path](https://docs.umbraco.com/umbraco-cms/get-started/upgrading-and-migrating/find-your-upgrade-path); [Umbraco, Umbraco Heartcore](https://umbraco.com/products/umbraco-heartcore/); [Sanity Docs, Studio development](https://www.sanity.io/docs/studio/development). As of 24 October 2026.

> **When not to replatform to Sanity**
>
> - Your only reason is the deadline: Umbraco 17 meets it on a free, open-source CMS.
> - Your only reason is going headless: Umbraco 13 and 17 already serve content as JSON.

## What changes for Umbraco editors and .NET developers on Sanity?

Umbraco editors move from Umbraco's backoffice to Sanity Studio, and .NET (Microsoft's development platform) developers move to JavaScript or TypeScript, because you configure Sanity Studio in code ([Sanity Docs, Configuration](https://www.sanity.io/docs/studio/configuration), October 2026). Three things change for the team:

- **Where the content model lives.** Document Types, Element Types and Block List blocks become Sanity document and object types, defined in code instead of in the backoffice.
- **What renders the site.** The front end reads content from Sanity's APIs (application programming interfaces) instead of Umbraco; whether a .NET back end can keep reading it is answered in Sanity with PHP, .NET or Java.
- **Who can publish.** Sanity's Growth plan has five fixed roles, including a Contributor who "Can write but not publish documents" ([Sanity Docs, Roles](https://www.sanity.io/docs/user-guides/roles), October 2026). Anything finer needs custom roles, which are Enterprise only as of October 2026 ([Sanity pricing](https://www.sanity.io/pricing)).

The [Umbraco to Sanity playbook](https://deploi.ca/sanity/migration/umbraco-to-sanity) maps each Umbraco user group, Document Type and block to its Sanity equivalent, so the mapping lives there.

## How do you compare the cost of staying on Umbraco with the cost of moving to Sanity?

Compare staying on Umbraco with moving to Sanity driver by driver, over the same horizon: Umbraco 17's end of life on 27 November 2028, about two years after Umbraco 13's (Deploi arithmetic from [Umbraco's schedule](https://umbraco.com/products/knowledge-center/long-term-support-and-end-of-life/), October 2026). Umbraco's open-source core is free ([Umbraco on GitHub](https://github.com/umbraco/Umbraco-CMS), October 2026), but add-ons such as Umbraco Forms are paid ([Umbraco, Umbraco Forms](https://umbraco.com/products/add-ons/forms/), October 2026). [Sanity's Growth plan](https://deploi.ca/sanity/faq/is-sanity-free) costs $15 per seat a month, billed monthly, as of October 2026 ([Sanity pricing](https://www.sanity.io/pricing)).

**Cost drivers of staying on Umbraco against moving to Sanity**

| Cost driver | Staying on Umbraco | Moving to Sanity |
| --- | --- | --- |
| Backoffice code | AngularJS extensions rewritten | Rebuilt in Sanity Studio |
| Front end and URLs | Kept | New front end; a redirect for every URL that changes |
| Software fees | Core free; add-ons and Extended Long-Term Support (XLTS) paid | Growth per seat, or Enterprise |
| Next forced event | Umbraco 17 end of life, 27 November 2028 (security-only from 27 November 2027) | Old API (application programming interface) versions retired with notice |

Sources: [Umbraco, Long-term Support and End-of-Life for Umbraco](https://umbraco.com/products/knowledge-center/long-term-support-and-end-of-life/); [Umbraco, Extended Long-Term Support for Umbraco 13](https://umbraco.com/products/knowledge-center/long-term-support-and-end-of-life/xlts/umbraco-13-xlts/); [Umbraco Documentation, Find Your Upgrade Path](https://docs.umbraco.com/umbraco-cms/get-started/upgrading-and-migrating/find-your-upgrade-path); [Umbraco, umbraco/Umbraco-CMS on GitHub](https://github.com/umbraco/Umbraco-CMS); [Umbraco, Umbraco Forms](https://umbraco.com/products/add-ons/forms/); [Sanity, Plans that scale with you](https://www.sanity.io/pricing); [Sanity Learn, Re-modelling your existing content](https://www.sanity.io/learn/course/re-platforming-to-sanity/re-modelling-your-existing-content); [Sanity Docs, API Versioning](https://www.sanity.io/docs/content-lake/api-versioning). As of 24 October 2026.

> **Why Deploi gives no totals for an Umbraco move**
>
> Our view of Umbraco rests on its documentation and public sources, and each line depends on your site, so we publish no totals. Count your AngularJS extensions, removed editors and Document Types, then price each line.

## Deploi's point of view

**Where we disagree.** Two standard answers are wrong. The first says you must leave Umbraco to go headless; Umbraco 13 and 17 already ship a Content Delivery API that serves content as JSON. The second says 13 to 17 is a rebuild for everyone; Umbraco documents an in-place NuGet upgrade, and the rebuild case depends on how much AngularJS backoffice code and how many removed editors your site carries.

**What we'd tell you to do first.** Before any replatforming talk, inventory the backoffice: every AngularJS property editor, dashboard and package, and every use of Nested Content, Grid Layout and macros. That list is the size of staying. Then count Document Types, Element Types and Block List blocks, which is the size of moving.

**What we refuse to promise.** We won't quote hours or a timeline for an Umbraco to Sanity move from a call, because each estimate starts from your own extensions, editors and Document Types. Our view of Umbraco rests on its documentation and public sources.

## When this answer changes

- Umbraco moves Umbraco 13's 14 December 2026 end of life or changes its XLTS terms
- Umbraco 19 ships, or slips from 10 December 2026
- Umbraco changes Umbraco 17's 27 November 2028 end of life or the 9 December 2027 date for Umbraco 21
- Sanity publishes an Umbraco migration guide, course or skill reference
- Sanity changes Growth's $15 per seat price or offers custom roles below Enterprise

## Ready to decide between Umbraco 17 and Sanity?

Contact us today to weigh both paths for your Umbraco 13 site before 14 December 2026. [Contact us](https://deploi.ca/contact)

## Sources

1. [Umbraco, Umbraco 13 End-of-Life (EOL)](https://umbraco.com/products/knowledge-center/long-term-support-and-end-of-life/umbraco-13-end-of-life-eol/), checked 24 October 2026
2. [Umbraco, Long-term Support and End-of-Life for Umbraco](https://umbraco.com/products/knowledge-center/long-term-support-and-end-of-life/), checked 24 October 2026
3. [Umbraco, Extended Long-Term Support for Umbraco 13](https://umbraco.com/products/knowledge-center/long-term-support-and-end-of-life/xlts/umbraco-13-xlts/), checked 24 October 2026
4. [Umbraco Documentation, Find Your Upgrade Path](https://docs.umbraco.com/umbraco-cms/get-started/upgrading-and-migrating/find-your-upgrade-path), checked 24 October 2026
5. [Umbraco Documentation, Upgrade Your Project](https://docs.umbraco.com/umbraco-cms/17.latest/get-started/upgrading-and-migrating/upgrade-details), checked 24 October 2026
6. [Umbraco, Going from Umbraco 13 to 17](https://umbraco.com/blog/going-from-umbraco-13-to-17/), checked 24 October 2026
7. [Umbraco, umbraco/Umbraco-CMS on GitHub](https://github.com/umbraco/Umbraco-CMS), checked 24 October 2026
8. [Umbraco Documentation, Content Delivery API (Umbraco 13)](https://docs.umbraco.com/umbraco-cms/13.latest/reference/content-delivery-api), checked 24 October 2026
9. [Umbraco Documentation, Content Delivery API](https://docs.umbraco.com/umbraco-cms/develop-with-umbraco/headless-and-apis/content-delivery-api), checked 24 October 2026
10. [Umbraco Documentation, Rich Text Editor](https://docs.umbraco.com/umbraco-cms/model-your-content/property-editors/built-in-umbraco-property-editors/rich-text-editor), checked 24 October 2026
11. [Umbraco, Umbraco Heartcore](https://umbraco.com/products/umbraco-heartcore/), checked 24 October 2026
12. [Umbraco, Umbraco 14 Release Candidate](https://umbraco.com/blog/umbraco-14-release-candidate/), checked 24 October 2026
13. [Umbraco Documentation, Breaking Changes Overview](https://docs.umbraco.com/umbraco-cms/get-started/upgrading-and-migrating/version-specific), checked 24 October 2026
14. [Sanity, Plans that scale with you](https://www.sanity.io/pricing), checked 24 October 2026
15. [Sanity, Sanity for Startups](https://www.sanity.io/startups), checked 24 October 2026
16. [Sanity Docs, Hosting and deployment](https://www.sanity.io/docs/studio/deployment), checked 24 October 2026
17. [Sanity Docs, Studio development](https://www.sanity.io/docs/studio/development), checked 24 October 2026
18. [Sanity Docs, Roles](https://www.sanity.io/docs/user-guides/roles), checked 24 October 2026
19. [Sanity Learn, Re-modelling your existing content](https://www.sanity.io/learn/course/re-platforming-to-sanity/re-modelling-your-existing-content), checked 24 October 2026
20. [Sanity Docs, Configuration](https://www.sanity.io/docs/studio/configuration), checked 24 October 2026
21. [Sanity Docs, API Versioning](https://www.sanity.io/docs/content-lake/api-versioning), checked 24 October 2026
22. [Umbraco, Umbraco Forms](https://umbraco.com/products/add-ons/forms/), checked 24 October 2026
23. [Microsoft, Microsoft .NET and .NET Core lifecycle](https://learn.microsoft.com/en-us/lifecycle/products/microsoft-net-and-net-core), checked 24 October 2026
