---
title: "Sanity vs Contentful vs Payload: Headless CMS in 2026"
description: "Sanity vs Contentful vs Payload, Strapi and Storyblok: hosting, previews, translations, export and real monthly cost for 5- and 12-person teams."
url: "https://dardo.studio/en/blog/sanity-vs-contentful-vs-payload/"
language: "en"
translations: {"es":"https://dardo.studio/es/blog/sanity-vs-contentful-vs-payload/","pt":"https://dardo.studio/pt/blog/sanity-vs-contentful-vs-payload/"}
updated: "2026-10-15T05:17:11.427Z"
---

[Blog](https://dardo.studio/en/blog/)

# Sanity vs Contentful vs Payload: the best headless CMS for your team in 2026

Sanity, Contentful, Payload, Strapi and Storyblok compared on hosting, previews, translations, export and real monthly cost for 5- and 12-person teams.

By [Nicolás Cerón](https://dardo.studio/en/nicolas-ceron/) ·October 15, 2026

![An antique card-catalogue cabinet in a cobbled courtyard at night, one drawer open and a crimson thread running from it across wet stones to three lamplit windows.](https://dardo.studio/_astro/01M4YY10EKYYY4VQJWFM3Y2RJ9_Z2bTjP2.webp)

## Key takeaways

- As of 14 October 2026, a 12-person team with 3 languages and about 30,000 items pays about USD 349 a month on Storyblok, 479 on Sanity and 1,150 on Contentful at list prices.
- Contentful's USD 300 Lite plan keeps the free plan's 10,000-record space; lifting it to 50,000 records costs another USD 850 a month.
- Sanity's Free plan has only Administrator and Viewer roles, so a team that wants a real Editor role needs Growth at USD 15 per seat.
- Salesforce completed its purchase of Contentful on 1 September 2026; Payload stays MIT-licensed under Figma but has paused new Payload Cloud projects.
- If only developers edit the site, Markdown in the repository with Astro content collections can replace a headless CMS entirely.

## Which headless CMS should you choose in 2026?

For most marketing sites run by a small team, Sanity or Storyblok is the safest hosted choice: both have entry plans a business can actually use, live visual previews, and no price cliff at two languages. Choose Payload when the CMS belongs inside a Next.js application with its own database, Strapi when you must self-host and don't use Next.js, and Contentful when you need enterprise governance and buying from Salesforce, which now owns it, is an advantage. If only developers edit the site, you may not need a headless CMS at all.

That's our view after reading each vendor's pricing page and documentation on 14 October 2026, and after running our own sites on a sixth option, EmDash. Every price below is a list price on that date, in US dollars; check it again before you sign. We set these systems up as part of our [headless CMS development](https://dardo.studio/en/services/headless-cms-development/) work, and we aren't a partner or reseller of any of them.

## How the six differ before you look at price

The first split is where your content lives: in the vendor's cloud (Sanity, Contentful, Storyblok) or in a database you run (Payload, Strapi, EmDash). Cost, export and risk all follow from that.

| CMS        | Where content lives                        | Editing and preview                                                                                                  | Translation model                                                 | License                                       |
| ---------- | ------------------------------------------ | -------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- | --------------------------------------------- |
| Sanity     | Sanity's hosted Content Lake               | Sanity Studio, a React app configured in code; live preview and visual editing on every plan                         | Per field, or one document per language, through official plugins | Studio is MIT; the database is a paid service |
| Contentful | Contentful's cloud, now part of Salesforce | Web app with a field-based entry editor; live preview beside the entry editor, drafts through a separate Preview API | Per field, with fallback chains between locales                   | Proprietary service                           |
| Storyblok  | Storyblok's cloud                          | Visual Editor on every plan, with 2 preview URLs on Starter and 6 on Growth                                          | Per field, a folder per language, or a space per market           | Proprietary service                           |
| Strapi     | Your server, or Strapi Cloud               | Admin panel; the free preview opens full screen, side-by-side Live Preview is paid                                   | Per field, free in the Community edition                          | Community edition is MIT                      |
| Payload    | Your MongoDB, Postgres or SQLite database  | Admin panel installed inside your Next.js app; Live Preview in an iframe                                             | Per field, switched on field by field                             | MIT                                           |
| EmDash     | Your Cloudflare D1 or SQLite database      | Admin panel from an Astro integration, with inline visual editing                                                    | One linked entry per language, the way we use it                  | MIT                                           |

The translation model matters more than it looks. Sanity's docs point out that field-level translation makes every language publish at the same time, while one document per language lets each publish on its own schedule ([Sanity docs](https://www.sanity.io/docs/localization)). Contentful lets a locale fall back to another, so Mexican Spanish can fall back to Spain's Spanish and then to English ([Contentful docs](https://www.contentful.com/developers/docs/tutorials/general/setting-locales/)). Payload warns that switching an existing field to localized changes how it is stored and can lose data ([Payload docs](https://payloadcms.com/docs/configuration/localization)), so decide before content goes in. Our [multilingual websites](https://dardo.studio/en/services/multilingual-websites/) work starts from that decision.

## What each one costs for a 5-person and a 12-person team

Headline prices hide the limit that actually moves you up a tier. We priced two realistic teams from the pricing pages of [Sanity](https://www.sanity.io/pricing), [Contentful](https://www.contentful.com/pricing/), [Storyblok](https://www.storyblok.com/pricing) and [Strapi](https://strapi.io/pricing-self-hosted), in US dollars a month, subscription only:

- **Team A:** 5 people who edit or build, 2 languages, about 2,000 content items
- **Team B:** 12 people, 3 languages, about 30,000 content items

| CMS        | Team A                                                              | Team B                                                                                    | What pushes you up a tier                        |
| ---------- | ------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------ |
| Sanity     | 0 on Free, but everyone who edits is an Administrator; 75 on Growth | 479: 12 seats at 15, plus the 299 add-on for more than 25,000 documents                   | Roles, documents, API requests, attribute limits |
| Contentful | 0 on Free, which Contentful pitches for learning; 300 on Lite       | 1,150: Lite plus an 850 Lite Space, because Lite's included space stops at 10,000 records | Records, content types, a fourth locale          |
| Storyblok  | 99 on Growth, or 90.75 billed yearly                                | 349 on Growth Plus, because Growth stops at 10 seats and 25,000 stories                   | Seats, stories, assets, locales                  |
| Strapi     | 0 on Community; 75 on Growth for Live Preview and Releases          | 180 on Growth: 45 with 3 seats, plus 9 seats at 15                                        | Seats, plus your hosting                         |
| Payload    | 0 license, plus hosting                                             | 0 license, plus hosting                                                                   | Your hosting and upkeep                          |
| EmDash     | 0 license, plus hosting                                             | 0 license, plus hosting                                                                   | Your hosting and upkeep                          |

Three limits stood out when we read the fine print:

- **Contentful's Lite plan keeps the free plan's space.** Lite costs USD 300 a month and raises users to 20 and locales to 3, but its included Starter Space still allows 25 content types and 10,000 records, and Contentful counts entries plus assets as records ([Contentful help center](https://www.contentful.com/help/faq/apis/)). If every page section is its own entry with an image or two, a 1,000-page site reaches that cap. The Lite Space that lifts it to 50,000 records costs another USD 850 a month, and a fourth language means Enterprise.
- **Sanity's Free plan has no Editor role.** Free includes 20 seats but only the Administrator and Viewer roles, so everyone who edits can also change project settings. Its datasets are public only, which Sanity's docs describe as readable by anyone ([Sanity docs](https://www.sanity.io/docs/content-lake/datasets)): fine for a public site, wrong for gated content. Locales cost nothing, but each dataset has a cap on unique attributes, 2,000 on Free and 10,000 on Growth, and object-based field translations add attributes for every language. Viewers are free on every plan, and self-serve plans bill monthly only.
- **Storyblok's Growth plan caps assets at 2,500.** That covers every image and file, against 25,000 stories, and seats stop at 10. Growth Plus raises the caps to 10,000 assets and 100,000 stories, but its 15 seats are a hard maximum.

Self-hosting moves the cost rather than removing it. Strapi Cloud, Strapi's own hosting, starts at USD 35 a month per project on a Starter plan that sleeps when idle; the always-on Pro plan is USD 90 ([Strapi Cloud pricing](https://strapi.io/pricing-cloud)). For Payload and EmDash you pay a host and a database, plus the hours to upgrade, back up and patch them.

## Who owns them now, and why it matters

Contentful and Payload both changed hands, and neither change breaks a working site today. Both belong in a risk review before you sign anything long.

Salesforce announced on 1 June 2026 that it would buy Contentful and completed the deal on 1 September 2026. It says Contentful will be integrated natively across its Customer 360 platform, while preserving the composability developers expect, and will make structured content available to its Agentforce agents ([Salesforce](https://www.salesforce.com/news/stories/salesforce-signs-definitive-agreement-to-acquire-contentful/)). The announcement says nothing about standalone plans. If you're signing a multi-year Contentful contract now, ask for a cap on renewal increases and written export terms.

Payload's team joined Figma on 17 June 2025, and Figma's CTO wrote that Payload will remain open source ([Figma](https://www.figma.com/blog/payload-joins-figma/)); the code is still MIT. Hosting is what changed: Payload has paused deployment of new projects on Payload Cloud and says existing Cloud customers will eventually need to migrate, without a rush ([Payload](https://payloadcms.com/payload-has-joined-figma)). Plan to host Payload yourself, on any host that runs Next.js.

EmDash is the newest option. Cloudflare released its stable 1.0 on 28 September 2026 under the MIT license, with plugins that each run in their own sandbox and a built-in MCP server for AI agents ([Cloudflare](https://blog.cloudflare.com/emdash-cms-plugin-registry/)). Young software means fewer plugins, fewer developers who know it and interfaces that may still move.

## How hard is it to leave each one?

All six let you take your content out. They differ in what comes with it and how many tools the job takes.

| CMS        | How you export                                                                                                               | What doesn't come with it                                                                                                   |
| ---------- | ---------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| Sanity     | The CLI's datasets export: a tarball with one NDJSON file of documents plus image and file folders                           | The schema, which lives in your Studio code                                                                                 |
| Contentful | The contentful-export tool: JSON with content types, entries, assets, locales, webhooks and editor settings                  | Asset files, unless you switch on their download                                                                            |
| Storyblok  | No single export: the CLI for stories and components, the Management API for versions and settings, a script for asset files | Built-in backups exist only on Premium and Elite, and skip story versions, presets, space settings and the files themselves |
| Strapi     | The strapi export command: an encrypted, compressed archive with configuration, entries, relations, uploads and schemas      | Admin users and API tokens                                                                                                  |
| Payload    | Nothing to export: the data is already in your database                                                                      | Nothing, if you back up the database                                                                                        |
| EmDash     | Nothing to export: the data is already in your D1 or SQLite database                                                         | Nothing, if you back up the database                                                                                        |

Sources: Sanity's export guide, the contentful-export README, Storyblok's backups documentation and Strapi's data export docs, all listed below.

The data is rarely the hard part. The lock-in is what gets built around it: rich text stored in each vendor's own JSON format, front-end queries written in its query language or SDK, and preview code tied to its visual editing tools. Keep the content model documented and the schema in your own repository, and a later [website migration](https://dardo.studio/en/services/website-migration/) is conversion work rather than a rebuild.

## When you don't need a headless CMS at all

A headless CMS adds a second system to run, pay for and secure. Skip it when:

- **Only developers edit the site.** Markdown or MDX files in the repository, validated by [Astro content collections](https://docs.astro.build/en/guides/content-collections/), give you typed content, review in pull requests and no subscription.
- **Marketers build new layouts every week.** Structured fields will slow them down, and a visual builder fits better. Our comparison of [Webflow and Framer](https://dardo.studio/en/blog/webflow-vs-framer/) covers that choice, and we build on both through [Webflow development](https://dardo.studio/en/services/webflow-development/) and [Framer development](https://dardo.studio/en/services/framer-development/).
- **Your team is productive in WordPress** and relies on its plugins. Our guide to [WordPress or a custom website](https://dardo.studio/en/blog/wordpress-vs-custom-website/) sets out when staying is the better call.
- **The site is a dozen pages that change a few times a year.** A developer editing the code costs less than CMS seats.

## What running our own CMS taught us

We run dardo.studio on [Astro](https://dardo.studio/en/services/astro-development/) with its content in EmDash, which we host ourselves. This article reached the CMS as a draft through its MCP server, and a person decides when it goes live. Three lessons carry over to whichever CMS you choose:

- **Decide what happens when the CMS is down.** Our public pages are built ahead as static HTML, and a failed CMS read fails the build, so an outage delays a deploy instead of publishing empty pages.
- **Let the CMS own redirects.** When an editor changes a slug, the CMS records a 301 and the next build serves it, so a renamed page never breaks an old link.
- **Self-hosting makes upgrades your job.** We took on a young 1.0 product because the content sits in a database we control and the front end is plain Astro; if EmDash stalls, the site can move without a rewrite.

## How we would choose

- **Sanity** when developers will shape the editing interface in code, content is reused across pages and channels, and you want it hosted. Budget Growth for real roles and watch the document quota.
- **Storyblok** when marketers want to assemble pages in a visual editor from components you define. Watch seats and assets.
- **Contentful** when you need enterprise governance and the Salesforce relationship helps rather than worries you. Budget beyond Lite.
- **Payload** when the site is part of a Next.js product with its own database, users and access rules; our [Next.js development](https://dardo.studio/en/services/nextjs-development/) work often starts there, and our [Astro vs Next.js](https://dardo.studio/en/blog/astro-vs-nextjs/) comparison helps if the framework is still open.
- **Strapi** when you must self-host on Node.js without Next.js. Budget Growth if editors need side-by-side preview.
- **EmDash** when the site is Astro on Cloudflare, you want no license fee and AI agents in the publishing loop, and you accept a small ecosystem.

If you're choosing now, [send us what you publish, who edits it and in how many languages](https://dardo.studio/en/contact/?service=headless-cms-development). We'll recommend a CMS, or none, before we quote.

## Common questions

**Is Sanity better than Contentful?**

For most small and mid-size teams, Sanity gives more on its entry plans: unlimited locales, live preview and visual editing on every plan, and seats from USD 15 a month. Contentful's first paid plan is USD 300 a month and allows 3 locales. Contentful's case is enterprise governance and, since September 2026, Salesforce ownership, which helps if you already run Salesforce. The trade-off with Sanity is that its editor is configured in code, so it needs a developer to set up well.

**Is Payload CMS still free and open source after joining Figma?**

Yes. Payload is still MIT-licensed, and Figma's CTO wrote in June 2025 that it will remain open source, and Payload says it remains a self-hosted product. What changed is Payload Cloud: deployment of new projects is paused, existing projects keep running, and Payload says Cloud customers will eventually need to migrate. For a new build, plan to host Payload yourself on any platform that runs Next.js, with MongoDB, Postgres or SQLite.

**What does the Salesforce acquisition mean for Contentful customers?**

Salesforce completed the deal on 1 September 2026 and says Contentful will be integrated across Customer 360 and feed content to Agentforce. Its announcement says nothing about changes to standalone plans, and on 14 October 2026 the pricing page still listed Free, Lite at USD 300 a month and Enterprise. If you're renewing, ask for a cap on price increases, written export terms and clarity on where your data is hosted.

**Which headless CMS is cheapest for a small team?**

By license, Payload, Strapi's Community edition and EmDash cost nothing, but you pay for hosting and for someone to upgrade and back them up. Among hosted options for five people, Sanity Growth is USD 75 a month, Storyblok Growth USD 99 and Contentful Lite USD 300, as of October 2026. Sanity's Free plan costs nothing if everyone who edits can be an administrator. The cheapest over three years depends on who maintains the server.

**Can I switch headless CMS later without losing content?**

Yes, if you plan it. Sanity, Contentful and Strapi export entries and assets with their own tools, Storyblok needs its CLI, Management API and an asset script, and Payload and EmDash already keep the data in your database. The work is converting rich text and references between formats, rewriting front-end queries and redirecting any URL that changes. Keeping the schema in your repository makes that much easier.

**Do I need a headless CMS for a marketing website?**

Not always. If only developers edit the site, Markdown files with Astro content collections are simpler and free. If marketers design new layouts every week, Webflow or Framer suits them better than structured fields. A headless CMS pays off when non-developers publish often, content appears on several pages, sites or apps, or the site runs in several languages with its own slugs and publish states.

## Sources & further reading

Sources behind this page, with further detail from the original publishers.

- [Sanity: Pricing](https://www.sanity.io/pricing) · sanity.io
- [Contentful: Pricing](https://www.contentful.com/pricing/) · contentful.com
- [Storyblok: Pricing](https://www.storyblok.com/pricing) · storyblok.com
- [Strapi: Self-hosted pricing](https://strapi.io/pricing-self-hosted) · strapi.io
- [Salesforce: Salesforce signs definitive agreement to acquire Contentful](https://www.salesforce.com/news/stories/salesforce-signs-definitive-agreement-to-acquire-contentful/) · salesforce.com
- [Figma: Welcoming Payload to the Figma team](https://www.figma.com/blog/payload-joins-figma/) · figma.com
- [Payload: Payload has joined Figma](https://payloadcms.com/payload-has-joined-figma) · payloadcms.com
- [Cloudflare: EmDash 1.0, the stable CMS with a secure plugin registry](https://blog.cloudflare.com/emdash-cms-plugin-registry/) · blog.cloudflare.com
- [Sanity docs: Export a dataset](https://www.sanity.io/docs/content-lake/exporting-data) · sanity.io
- [Contentful: contentful-export on GitHub](https://github.com/contentful/contentful-export) · github.com
- [Strapi docs: Data export](https://docs.strapi.io/cms/data-management/export) · docs.strapi.io
- [Storyblok docs: Backups](https://www.storyblok.com/docs/concepts/backups) · storyblok.com

[Nicolás Cerón](https://dardo.studio/en/nicolas-ceron/)

Nicolás Cerón is the founder of Dardo, a brand, web design and development studio in Bogotá, Colombia.

## Related articles

- [**WordPress or a custom website? How to choose, and when each one pays off**When WordPress is the right choice, when a custom site pays off, and the middle path of headless WordPress, compared on cost, speed, updates and ownership.](https://dardo.studio/en/blog/wordpress-vs-custom-website/)
- [**Astro vs Next.js: which to choose for a marketing site or a product in 2026**Astro for sites that look the same to every visitor, Next.js for signed-in products: rendering, JavaScript, hosting and support compared.](https://dardo.studio/en/blog/astro-vs-nextjs/)
- [**Webflow alternatives in 2026: what each one costs to run, and what it takes to move off Webflow**Framer, WordPress, a coded site, Wix Studio, Squarespace or HubSpot: what each costs to run a 20-page site with a blog, and what leaving Webflow takes.](https://dardo.studio/en/blog/webflow-alternatives/)
- [**Webflow pricing 2026: what changes at renewal, what you'll pay and when to leave**Webflow merged its CMS and Business plans into Premium. What your site pays at renewal, with the math, and when staying beats moving to Framer or Astro.](https://dardo.studio/en/blog/webflow-pricing-2026/)

## Keep exploring.

- [Service · **Headless CMS development: Sanity, Payload, Contentful and more**](https://dardo.studio/en/services/headless-cms-development/)

- [Your project · **Start a conversation**](https://dardo.studio/en/contact/)
