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 ·

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.
On this page

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 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.

CMSWhere content livesEditing and previewTranslation modelLicense
SanitySanity's hosted Content LakeSanity Studio, a React app configured in code; live preview and visual editing on every planPer field, or one document per language, through official pluginsStudio is MIT; the database is a paid service
ContentfulContentful's cloud, now part of SalesforceWeb app with a field-based entry editor; live preview beside the entry editor, drafts through a separate Preview APIPer field, with fallback chains between localesProprietary service
StoryblokStoryblok's cloudVisual Editor on every plan, with 2 preview URLs on Starter and 6 on GrowthPer field, a folder per language, or a space per marketProprietary service
StrapiYour server, or Strapi CloudAdmin panel; the free preview opens full screen, side-by-side Live Preview is paidPer field, free in the Community editionCommunity edition is MIT
PayloadYour MongoDB, Postgres or SQLite databaseAdmin panel installed inside your Next.js app; Live Preview in an iframePer field, switched on field by fieldMIT
EmDashYour Cloudflare D1 or SQLite databaseAdmin panel from an Astro integration, with inline visual editingOne linked entry per language, the way we use itMIT

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). Contentful lets a locale fall back to another, so Mexican Spanish can fall back to Spain's Spanish and then to English (Contentful docs). Payload warns that switching an existing field to localized changes how it is stored and can lose data (Payload docs), so decide before content goes in. Our 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, Contentful, Storyblok and Strapi, 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
CMSTeam ATeam BWhat pushes you up a tier
Sanity0 on Free, but everyone who edits is an Administrator; 75 on Growth479: 12 seats at 15, plus the 299 add-on for more than 25,000 documentsRoles, documents, API requests, attribute limits
Contentful0 on Free, which Contentful pitches for learning; 300 on Lite1,150: Lite plus an 850 Lite Space, because Lite's included space stops at 10,000 recordsRecords, content types, a fourth locale
Storyblok99 on Growth, or 90.75 billed yearly349 on Growth Plus, because Growth stops at 10 seats and 25,000 storiesSeats, stories, assets, locales
Strapi0 on Community; 75 on Growth for Live Preview and Releases180 on Growth: 45 with 3 seats, plus 9 seats at 15Seats, plus your hosting
Payload0 license, plus hosting0 license, plus hostingYour hosting and upkeep
EmDash0 license, plus hosting0 license, plus hostingYour 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). 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): 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). 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). 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); 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). 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). 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.

CMSHow you exportWhat doesn't come with it
SanityThe CLI's datasets export: a tarball with one NDJSON file of documents plus image and file foldersThe schema, which lives in your Studio code
ContentfulThe contentful-export tool: JSON with content types, entries, assets, locales, webhooks and editor settingsAsset files, unless you switch on their download
StoryblokNo single export: the CLI for stories and components, the Management API for versions and settings, a script for asset filesBuilt-in backups exist only on Premium and Elite, and skip story versions, presets, space settings and the files themselves
StrapiThe strapi export command: an encrypted, compressed archive with configuration, entries, relations, uploads and schemasAdmin users and API tokens
PayloadNothing to export: the data is already in your databaseNothing, if you back up the database
EmDashNothing to export: the data is already in your D1 or SQLite databaseNothing, 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 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, 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 covers that choice, and we build on both through Webflow development and Framer development.
  • Your team is productive in WordPress and relies on its plugins. Our guide to WordPress or a 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 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 work often starts there, and our Astro vs Next.js 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. 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.