# Contentful vs Sanity: which one for a marketing site

> A dated Sanity vs Contentful comparison for US marketing teams: content modeling, editors, queries, preview, locales, pricing, limits, and when each wins.

**TL;DR:** Pick Sanity when your content model will keep changing and you have developers who can own a schema-as-code Studio. Pick Contentful when governance, a big app marketplace, and a hosted editor that works on day one matter more than customization. Prices are from each vendor's public pricing page, checked on 27 Oct 2026.

**Published:** 2026-10-06 | **Updated:** 2026-10-28 | **Categories:** Sanity, CMS
---

I lean Sanity for most marketing sites. It's easier to reshape as your content model changes, if you have developers who'll own the Studio. Under 20 editors, it's usually cheaper too. Pick Contentful if you want a hosted editor that works on day one, a big app marketplace, and an established enterprise vendor for procurement. Past 3 locales or 25 content types, Contentful moves you to a bigger plan, so price that in early.

If you're shortlisting a headless CMS for a US marketing site, you'll end up comparing these two. Both are API-first, both run big brands, and they're not interchangeable. We build on both, so this is the comparison I give people on calls, written down.

Prices and plan limits come from [Sanity's pricing page](https://www.sanity.io/pricing) and [Contentful's pricing page](https://www.contentful.com/pricing/), checked on 27 Oct 2026. Where we lean on our own project experience, I say so. Where we only have the vendor docs, I stick to the docs.

If you already know you want Sanity and need someone to build it, start at [our Sanity page](/services/sanity). If you're mid-move, [Contentful to Sanity migration](/migration/contentful-to-sanity) covers that direction.

## Sanity vs Contentful at a glance

| | Sanity | Contentful |
| --- | --- | --- |
| Content modeling | Schema as code (JS/TS), versioned with the app | Content types in a hosted web app (plus migration scripts) |
| Editor UI | Open-source React Studio you shape | Hosted web app, App Framework for extensions |
| Primary query | GROQ (GraphQL also available) | REST Content Delivery API and GraphQL, plus Preview API |
| Rich text | Portable Text (blocks as data) | Rich text editor |
| Collaboration | Real-time editing and presence on every plan | Comments, tasks, live collaboration (Lite and up) |
| Live preview | Presentation tool and Live Content API | Live Preview SDK and Preview API |
| Locales | Unlimited (attribute limit applies) | Free 2, Lite 3, Enterprise custom |
| Mid-tier list price (27 Oct 2026) | Growth: $15 per seat per month | Lite: $300 per month |
| Content type caps | None | Starter Space 25, Lite Space 50 |
| Best default fit | Dev-led teams, changing models, Next.js | Governance-first teams, marketplace, enterprise procurement |

## Content modeling: the choice that's hardest to undo

**Sanity** stores your content model as [schema types in code](https://www.sanity.io/docs/studio/schema-types). Schemas live in the repo, go through pull requests, and deploy with the Studio. You can nest objects inline, use references where sharing matters, and write validation in JavaScript. There's no ceiling on document types. The limit you'll meet is [unique attributes per dataset](https://www.sanity.io/docs/content-lake/attribute-limit): 2,000 on Free and 10,000 on Growth. Sanity's docs say moving to Enterprise doesn't raise it, so design for 10,000.

**Contentful** models content types in the web app. That's friendlier on day one for a producer who has never opened a terminal. It also comes with a budget. A Starter Space includes 25 content types and a Lite Space goes to 50. Every distinct repeatable shape counts: page, blog post, author, category, and each page-builder block. Our sites typically have 25 to 30 page-builder blocks. On a Starter Space, that alone fills the 25-type budget before you add a page type, a blog post or an author. I made [a whole video](/videos/contentful-pricing-free-vs-lite-vs-enterprise-what-you-actually-need) counting this out on their pricing page, because the space limits sit in a second table that's easy to miss.

Contentful also pushes you toward references for reuse. Its own [SEO modeling guide](https://www.contentful.com/seo-guide/content-modeling-seo/) offers two options: SEO fields on the page type, or a separate SEO Metadata content type. On a 25-type budget I'd take the first. A separate type spends a slot on something you rarely reuse, since nobody wants the same meta title on ten pages, and editors click through an extra layer on every page.

The upside of references is reuse. Put a CTA in a shared entry, edit it once, and every page that uses it updates. In our experience, it's worth planning for one-off changes too, so a tweak meant for one page doesn't change the shared entry everywhere. On either CMS, keep nesting shallow. Editors we've worked with found reusable blocks nested several levels deep hard to find their way around.

If your marketing site is a stable brochure with a handful of types, either CMS is fine. If you expect the model to grow every quarter (new landing modules, product lines, campaigns), Sanity's schema in code is easier to extend. Contentful handles complex models too. The cost is more space setup and careful migrations when types change.

## AI tools and agents: why the model's format matters

This has become a big part of how we choose. In our experience, a schema in code is easier for AI coding tools and agents to read and extend than a model built by dragging fields around in a web app. When the Sanity schema sits in the same repo as the frontend, an agent can read both, add a new page-builder block with its component, and open a pull request for a person to review.

Contentful's model isn't closed to automation. Its [Content Management API](https://www.contentful.com/developers/docs/references/content-management-api/) is read/write, so scripts and tools can change content and models there too. It's one more step to get the model and the code in the same place. On the editor side, Contentful's [AI Actions](https://www.contentful.com/pricing/) give Enterprise teams translation, rewriting and SEO metadata templates inside the entry editor.

## Editor experience: hosted polish vs a Studio you own

**Contentful** ships a polished hosted editor. Roles, scheduled publishing, comments, tasks and live preview are product features you configure rather than build. For a marketing team that wants "log in and write" with light developer involvement after launch, that's a real advantage. The [Marketplace](https://www.contentful.com/marketplace/apps/) means you can often install translation, DAM and A/B testing connectors instead of building them. It's quick to start, and if your company already holds a Contentful license or a higher tier through another team, it's the natural pick. The procurement work is done, and budget can go to products like Personalization.

**Sanity Studio** is an [open-source](https://github.com/sanity-io/sanity) React app you own. Configured well, it matches how the team works: custom inputs, a desk structure per team, field-level helpers, and Presentation so editors click the page instead of guessing field names. The trade-off is a learning curve. There's more to set up and learn at the start, and in our experience that pays off over the life of the site. For editors, the result feels familiar: they click on the page to edit it, and rich text works much like Word, with components such as CTAs dropped inline. How good the Studio is depends on the implementation, which is why we treat Studio design as part of the build on [Sanity projects](/services/sanity) and not a polish pass at the end.

On collaboration, Sanity's pricing page lists real-time editing and multiplayer presence on every plan, including Free, so two people can work the same document without a lock. Contentful lists live collaboration, comments and tasks from Lite upward. I haven't put two editors on the same Contentful entry recently enough to tell you how close that gets to the Sanity experience, so I won't.

If your editors are coming from WordPress and want a visual canvas more than structured fields, neither of these is Storyblok. Be honest about that on the shortlist. Sanity's Presentation and Contentful's Live Preview both let editors see the page while they edit, without turning into a site builder.

## Querying: GROQ vs GraphQL and REST

**Sanity's default is [GROQ](https://www.sanity.io/docs/content-lake/how-queries-work)** (Graph-Relational Object Queries). You filter the dataset, project only the fields you need, and follow references in one query. You can also combine several queries into one request, so a page's core content can come back in a single cacheable call. Sanity [also offers GraphQL](https://www.sanity.io/docs/content-lake/graphql), generated from your Studio schema. The catch is that you redeploy it with the CLI whenever the schema changes. We reach for GROQ on most Next.js builds because the query can mirror the page shape without an extra glue layer.

**Contentful** leads with the [Content Delivery API](https://www.contentful.com/developers/docs/references/content-delivery-api/) (REST) and the [GraphQL Content API](https://www.contentful.com/developers/docs/references/graphql/), plus the [Content Preview API](https://www.contentful.com/developers/docs/references/content-preview-api/) for drafts. Its GraphQL schema is generated from the content model at request time, so it never drifts from the space. Both APIs allow 55 uncached requests a second by default, and CDN cache hits don't count. That limit is worth knowing about during builds and migrations, when most requests miss the cache.

Neither API style is "more enterprise". Pick the one your team will maintain. A GraphQL-only engineering team will be happier on Contentful's defaults. A TypeScript team that wants queries next to components will be happier on GROQ.

## Real-time updates and preview

Sanity's [Presentation tool](https://www.sanity.io/docs/visual-editing/presentation-tool) loads your frontend inside the Studio with click-to-edit overlays. Pair it with the [Live Content API](https://www.sanity.io/docs/content-lake/live-content-api), which is on every plan including Free, and published changes reach the page without polling. Draft mode still needs some setup in Next.js or whatever framework you use. It's documented, and it's part of every build we ship.

Contentful's [Live Preview](https://www.contentful.com/developers/docs/tutorials/general/live-preview/) has two levels. Side-by-side preview only needs content preview set up. Live updates and click-to-inspect need the Live Preview SDK, and your Content Security Policy has to let Contentful frame the site. Then you teach editors which environment they're looking at. On a custom Next.js app it's rarely zero-config.

For surfaces that should update without a rebuild, like news, live dashboards or pricing tables, Sanity's real-time setup is the stronger default. For a mostly static marketing site that rebuilds on publish, both are fine if preview is built properly.

## Localization: where plan limits show up first

International sites run into locale limits well before query language matters.

Sanity doesn't charge for locales. Every plan lists unlimited locales, bounded by the attribute limit per dataset. That matters when you add markets without calling sales. Watch field-level localization, though: [each locale multiplies the attribute count](https://www.sanity.io/docs/content-lake/attribute-limit) of every localized field, so a big model with many languages can reach 10,000 sooner than you'd expect.

Contentful Free includes 2 locales and Lite includes 3. Beyond that you're on Enterprise, which is also where locale-based publishing and localized workflows show up. If you're launching English and Spanish next quarter and five more markets next year, that fourth locale moves you off the $300 sticker price. Get it into the Contentful quote before you compare numbers.

There are two common ways to structure translations, and teams make both work. Field-level translation keeps every language in one entry, with a value per locale on each field. Editors see languages side by side and the structure stays in sync, but each locale adds to the entry, and on Sanity to the attribute count. Document-level translation keeps one linked document per language. Each language can be reviewed and published on its own and the attribute count stays flat, but you keep the structure in sync across copies. The right one depends on how many languages you'll run and who reviews them. If you use AI translation, a glossary of brand terms and a human review step help with either.

## Pricing: small, mid, and enterprise

These are list prices in USD from the vendor pages on 27 Oct 2026. Enterprise quotes vary, usage overages vary, and this is not a quote.

### Sanity ([sanity.io/pricing](https://www.sanity.io/pricing))

| Plan | List price | Seats | Useful limits |
| --- | --- | --- | --- |
| Free | $0 | Up to 20 | 10k documents, 1M API CDN requests/mo, 250k API requests/mo, 100GB assets, 100GB bandwidth, 2 public datasets, 2 roles |
| Growth | $15 per seat per month | Up to 50 | 25k documents, same base API and bandwidth with pay-as-you-go overages, private datasets, 5 roles, comments, tasks, scheduled drafts |
| Enterprise | Custom | Custom | Custom roles, SSO (SAML), uptime SLA, custom datasets and retention, Media Library add-on |

Growth add-ons on the public page: Dedicated Support at $799 a month, Increased quota at $299 a month, and extra datasets at $999 per dataset per month. That last one is the Sanity line item worth planning for if you want separate datasets per brand or market.

### Contentful ([contentful.com/pricing](https://www.contentful.com/pricing/))

| Plan | List price | Users | Useful limits |
| --- | --- | --- | --- |
| Free | $0 | 10 | 2 roles, 2 locales, 100k API calls/mo and 50GB CDN/mo with no overages, 1 Starter Space |
| Lite | $300 per month | Up to 20 | 3 roles, 3 locales, 1M API calls/mo, 100GB CDN/mo, paid overages. Starter Space still 25 content types, 2 environments, 10k records |
| Lite Space (add-on) | $850 per month | n/a | 50 content types, 4 environments, 50k records, up to 5 workflows, +2M API calls, +750GB bandwidth |
| Enterprise | Custom | Custom | Unlimited API calls, custom bandwidth, 24/7 support, up to 99.99% uptime SLA, AI Actions quotas included. Personalization and Studio are separate products |

The same page lists overages at $5 per extra 1M API calls and $0.15 per extra GB of bandwidth. Free has no overages, so you stop at the cap.

### What a marketing team actually pays

Platform fees only, not the build:

| Team shape | Sanity | Contentful |
| --- | --- | --- |
| 3 editors, simple site | Free, or Growth at $45/mo | Free if you stay inside 25 types, 2 locales and 100k API calls, otherwise Lite at $300/mo |
| 5 editors, modular marketing site | Growth at $75/mo plus light usage | Lite at $300/mo, and once types pass 25, a Lite Space too: $1,150/mo |
| 15 editors | Growth at $225/mo | Lite at $300/mo, if 20 users and 3 locales hold |
| SSO, governance, multiple spaces | Sanity Enterprise, custom | Contentful Enterprise, custom, plus Personalization or Studio if you buy them |

Platform fees are rarely the number that decides the project. Bad modeling and a second replatform cost more.

If Enterprise is likely, talk to the vendor early, on either side. Contentful's pricing FAQ says its Enterprise price is shaped mainly by the number and complexity of your use cases, and Sanity lists its Enterprise plan as custom pricing too.

For a Sanity-only breakdown, see [Sanity CMS pricing: which plan is right for you?](/blog/sanity-cms-pricing-which-plan-is-right-for-you). If you're weighing Sanity Enterprise, read [should you upgrade to Sanity Enterprise?](/blog/should-i-upgrade-to-sanity-enterprise) first.

## Limits that force upgrades

Sanity upgrades usually come from:

- Needing scheduled drafts, comments or tasks (Growth)
- Needing SSO, custom roles or a contractual SLA (Enterprise)
- Document, API or bandwidth usage (pay-as-you-go on Growth, or the Increased quota add-on)

Contentful upgrades usually come from:

- Hitting 25 content types on the Starter Space
- Needing a third locale on Free, or a fourth on Lite
- Hitting Free's 100k API call or 50GB CDN caps
- Needing more than 20 users on Lite
- Needing SSO, more spaces, or a 99.99% SLA (Enterprise)

Sanity's triggers are mostly collaboration features and raw usage. Contentful's are structural (types, locales, spaces), and they tend to show up while the site is still small.

## Migration effort: a modeling job before a script job

Moving between these two is a content-model problem first and an export script second.

**Contentful to Sanity.** Entries, assets and locales map into documents and fields, and references stay references. The part that takes longest is turning reference-based blocks into inline objects where reuse isn't needed. Time depends on type count, reference depth, and whether the frontend is being rewired in the same project. Details are on the [Contentful to Sanity page](/migration/contentful-to-sanity), and our process is in [how we migrate content without breaking stuff](/blog/how-we-migrate-content-without-breaking-stuff).

**Sanity to Contentful.** It's doable. Plan the model around Contentful's content type limits and reference patterns. Teams sometimes move to Contentful for procurement or personalization reasons, not because the Studio was failing. Budget time for remodeling as well as exporting JSON.

**From WordPress or another CMS into either.** The CMS choice still matters, but redirects, URL mapping and editor training carry most of the risk. If the migration is the bigger job, see [our CMS migration service](/services/cms-migration).

In our experience, migrations take about the same work in either direction, and the rules are the same. Keep every public page, map every URL, and redirect everything that gets traffic. If you also change the site structure during the move, any traffic change after launch gets harder to explain.

One more thing for the diligence pack. [Salesforce announced it would buy Contentful](https://www.salesforce.com/news/stories/salesforce-signs-definitive-agreement-to-acquire-contentful/) on 1 June 2026, and its [SEC filing](https://www.sec.gov/Archives/edgar/data/1108524/000110852426000195/forms-8xcontentfulequitypl.htm) says the deal closed on 1 September 2026. Salesforce [says Contentful will keep being sold as standalone products](https://www.salesforce.com/blog/contentful-salesforce-and-the-content-layer-for-the-agentic-enterprise/). If you're signing a multi-year term, ask how the Salesforce roadmap affects the products you're buying and get pricing commitments in the contract. That's good practice with any CMS vendor.

## When to pick Sanity

Pick **Sanity** when most of these are true:

- You have frontend developers, in-house or agency, who'll own the Studio
- The content model will change after launch
- You want preview and real-time collaboration as default behavior
- You're on or moving to Next.js and care about draft mode done properly
- You want unlimited content types and locales on a mid-tier budget
- You have fewer than 20 editors, where $15 a seat beats $300 a month flat
- You want AI tools and agents working on the content model next to the code

That covers most of the marketing-site builds we recommend Sanity for.

We're a Preferred Sanity partner (one of 15 in Sanity's 219-agency directory, verified Oct 25).

## When to pick Contentful

Pick **Contentful** when most of these are true:

- You need a hosted editor that's good enough without a custom Studio build
- Your company already has a Contentful license, or a higher tier through another team
- Procurement wants a familiar enterprise CMS vendor, SSO, and paper that matches the last RFP
- The app marketplace matters more than schema flexibility (translation, DAM, marketing automation)
- You plan to buy Personalization or AI Actions as part of the platform. In our experience, Personalization is one of Contentful's strongest products, and it covers something most headless CMSs leave to a separate tool
- Your content model is fairly stable and fits under the space's content type budget
- You have a large editor team and the budget for an Enterprise contract, where Contentful's governance features matter most

For many marketing teams, Contentful is the right choice. We implement it when the fit is right ([Contentful service page](/services/contentful)), and we'll flag early if content type or locale limits are likely to push you onto a bigger plan.

## How we usually decide on a scoping call

Five questions, and I want numbers for each:

1. How many content types do you need in year one (count the page-builder blocks)?
2. How many locales ship in year one vs year two?
3. How many people need write access vs view access?
4. Who maintains the editing UI after launch: your team, us, or nobody?
5. Which preview behavior is non-negotiable on day one?

If questions 1 and 2 go past Free and Lite, Sanity Growth is usually the cleaner mid-market path. If questions 4 and 5 point at minimal engineering and maximum governance, Contentful Enterprise with a clear space plan is usually cleaner. If the answer to question 4 is "nobody", fix that before you pick a CMS. Both platforms work best with a named owner after launch.

For the SEO side of a Sanity build, we wrote up [AEO and SEO best practices for Sanity](/blog/aeo-seo-best-practices-for-sanity).

> **Sanity CMS development**: Schema design, Studio builds, and Contentful-to-Sanity migrations from a Preferred Sanity partner (one of 15 in Sanity's 219-agency directory, verified Oct 25). [See Sanity services](/services/sanity)

## Next step

If you want a second pair of eyes on a Sanity vs Contentful shortlist, [book a scoping call](/contact). Bring your content type count, locale list and editor headcount. We'll tell you which side of this comparison you're on, including when it's Contentful.

## Frequently asked questions

### Is Sanity cheaper than Contentful?

For most small and mid-size marketing teams, yes. As of 27 Oct 2026, Sanity Growth is $15 per seat per month and Contentful Lite is $300 per month flat for up to 20 users. A 5-seat Sanity Growth project is $75 a month before usage overages. The two meet at 20 seats, which is also where Lite's user cap sits. Lite also caps you at 3 locales and 25 content types per Starter Space. Sanity lists both content types and locales as unlimited.

### What is the main difference between Sanity and Contentful?

Sanity defines content models in code and ships an open-source React Studio you customize. Contentful defines content types in a hosted web app with a more fixed editing experience. Most other differences follow from that. Sanity is easier to reshape and needs more developer time up front. Contentful is faster to set up and harder to reshape later.

### Does Sanity use GraphQL or GROQ?

Both. GROQ is Sanity's primary query language, and Sanity can also generate and deploy a GraphQL API from your Studio schema. You redeploy that GraphQL API whenever the schema changes. Contentful's delivery APIs are REST (the Content Delivery API) and GraphQL, plus a Preview API for drafts. Contentful generates its GraphQL schema from the content model at request time.

### How much does Contentful Lite cost?

Contentful Lite is $300 per month as of 27 Oct 2026, for up to 20 users, 3 roles, 3 locales, 1M API calls and 100GB of CDN bandwidth a month. It includes one Starter Space with 25 content types, 2 environments and 10,000 records. A Lite Space is an $850 per month add-on with 50 content types, 4 environments and 50,000 records. Enterprise pricing is custom.

### How much does Sanity Growth cost?

Sanity Growth is $15 per seat per month as of 27 Oct 2026, for up to 50 seats. Included usage covers 25,000 documents, 1M API CDN requests, 250,000 API requests, and 100GB each of assets and bandwidth, with pay-as-you-go overages above that. Enterprise is custom.

### Can I migrate from Contentful to Sanity?

Yes. Contentful entries, assets, references and localized fields map into Sanity documents and fields. How long it takes depends on how many content types you have, how deep the references go, and whether the frontend is being rewired at the same time. The slow part is usually merging types that were split into too many references to stay under Contentful's content type budget.

### Which is better for localization, Sanity or Contentful?

Sanity doesn't charge per locale. All plans list unlimited locales, bounded by the unique attribute limit per dataset: 2,000 on Free and 10,000 on Growth and Enterprise. Contentful Free includes 2 locales and Lite includes 3. Beyond that you're talking to Contentful about Enterprise, which is also where locale-based publishing and localized workflows sit.

### When should I pick Contentful over Sanity?

Pick Contentful when you want a hosted editor with little Studio engineering, a large app marketplace, enterprise procurement requirements, and products like Personalization or AI Actions that your marketing team already plans to buy. It's also the natural pick when your company already holds a Contentful license. Past 20 editors you're comparing Sanity's per-seat bill with a custom Contentful Enterprise quote, so get both numbers before you decide.

### Does Sanity have live preview?

Yes. Sanity's Presentation tool loads your frontend inside the Studio with click-to-edit overlays, and the Live Content API pushes content changes to the page without polling. Both need draft mode wired into your frontend. Contentful has Live Preview and a Preview API. Side-by-side preview needs content preview set up, and live updates plus click-to-inspect need Contentful's Live Preview SDK.

### What are Contentful's content type limits?

As of 27 Oct 2026, a Contentful Starter Space includes 25 content types and a Lite Space includes 50. That sounds like plenty until you count page types, authors, categories and every page-builder block as its own type. Sanity doesn't cap content types. It caps unique attributes per dataset instead.

### Can we run a production marketing site on the Sanity or Contentful free tier?

Sometimes. Sanity Free covers 20 seats, 10,000 documents and 1M API CDN requests a month, which fits a lot of small marketing sites. Contentful Free works until you need a third locale, a 26th content type, or more than 100,000 API calls a month, and those are hard caps with no overages.

### Do we need Sanity Enterprise or Contentful Enterprise on day one?

Only if SSO, custom roles, a contractual SLA or multi-space governance are hard requirements from the start. Otherwise start on Sanity Growth or Contentful Lite and upgrade when you hit a real limit or a real procurement requirement.

### Which has better SEO tooling, Sanity or Contentful?

Neither ships a Yoast-style analyzer in the core product. On both, you model SEO fields like title, meta description, canonical URL and noindex, then render them in your frontend. Sanity's own Yoast-based SEO Pane plugin is now deprecated. Contentful's Marketplace has third-party SEO apps such as Surfer, which needs its own paid account, and AI Actions can generate SEO metadata on Enterprise plans. Most of the SEO result comes from the frontend build either way.

### Which is better for AI tools and agents, Sanity or Contentful?

In our experience, a schema in code, as in Sanity, is easier for AI coding tools and agents to read and extend than a model defined in a web app, because the schema and the frontend live in the same repo. Contentful's model can also be changed through its read/write Content Management API, and its AI Actions add translation, rewriting and SEO metadata templates inside the editor on Enterprise plans.

### Did Salesforce buy Contentful?

Yes. Salesforce announced the deal on 1 June 2026, and its SEC filing says the acquisition closed on 1 September 2026. Salesforce says Contentful will keep being sold as standalone products.

## Related posts

- [Sanity CMS pricing: which plan is right for you?](/blog/sanity-cms-pricing-which-plan-is-right-for-you)
- [How we migrate content without breaking stuff](/blog/how-we-migrate-content-without-breaking-stuff)
- [Should I upgrade to Sanity Enterprise?](/blog/should-i-upgrade-to-sanity-enterprise)