[NOW AVAILABLE] 👋 Hey Content Agent, tell me what you do that other AI tools can’t →
Skip to content
Sanity
  • Content operations

    • Sanity Studio
    • Media Library
    • Canvas
    • Content AgentNew
    • Content Releases
    • Insights
    • App SDK

    Content backend

    • Content Lake
    • Live CDN
    • Compute
    • Agent Actions
    • MCP ServerNew
    a white background with orange and black dots on it

    The only platform powering content operations

    Start building for free
    Start building for free
  • Use Cases

    • Headless CMS
    • E-commerce
    • Marketing
    • Media and publishing
    • PIM
    • LMS
    • Build your own

    Users

    • Developers
    • Content Editors
    • Product Owners
    • Business Leaders
    a man sits on a fence next to a horse

    Tecovas strengthens their customer connections

    Read the story
    Read the story
  • Build and Share

    • Sanity 101New
    • Sanity Learn
    • Frameworks
    • Templates
    • Tools and plugins
    • Schemas and snippets
    • Join our community

    Insight

    • Blog
    • Events
    • Customer stories
    • Guides
    A dark-themed collage showcasing branded merchandise including t-shirts, a cap, mug, tote bag, and socks, alongside various digital design elements and logos, prominently featuring "Sanity" branding.

    Grab your gear: The official Sanity swag store

    Read Grab your gear: The official Sanity swag store
  • Docs
  • Enterprise
  • Pricing
Sanity

  • Content operations

    • Sanity StudioHeadless CMS
    • Media LibraryCentralized asset management
    • CanvasAI-assisted, free-form writing
    • Content AgentNewAI for content operations
    • Content ReleasesStack and stage content updates
    • InsightsUnderstand content performance
    • App SDKRapidly build content apps

    Content backend

    • Content LakeThe content optimized database
    • Live CDNSimple, scalable, real-time
    • ComputeEvent handlers for content changes
    • Agent ActionsBuilt-in, content aware AI
    • MCP ServerNew
  • Use Cases

    • Headless CMS
    • E-commerce
    • Marketing
    • Media and publishing
    • PIM
    • LMS
    • Build your own

    Users

    • Developers
    • Content Editors
    • Product Owners
    • Business Leaders
  • Build and Share

    • Sanity 101NewA quick series covering key areas of Sanity to get you up to speed.
    • Sanity Learn
    • Frameworks
    • Templates
    • Tools and plugins
    • Schemas and snippets
    • Join our community

    Insight

    • Blog
    • Events
    • Customer stories
    • Guides
  • Docs
  • Enterprise
  • Pricing
Join our community on Discord
Subscribe to our newsletter

Products

  • Sanity Studio
  • Media Library
  • Canvas
  • Content Agent
  • MCP Server
  • Content Releases
  • Insights
  • App SDK
  • Content Lake
  • Live CDN
  • Compute
  • Agent Actions
  • AI Assist
  • Use cases

Resources

  • Docs
  • Sanity 101
  • Sanity Learn
  • Tools and plugins
  • Frameworks
  • Templates
  • Schemas and snippets
  • Guides
  • Headless CMS explained
  • Resource library
  • Explainers
  • Enterprise CMS guides
  • Headless CMS Guides
  • Enhancing your CMS with AI
  • Compare Sanity
  • Glossary
  • Pricing

Company

  • Contact
  • Blog
  • Shop
  • Events
  • Careers
  • Changelog
  • Customer Stories
  • Agency Partners
  • Technology Partners

Trust and compliance

  • Privacy policy
  • Terms of service
  • Accessibility statement
  • Transparency statement
  • Security and compliance
  • Open Source Pledge

Keep in touch

© SANITY 2026

OSL, NOR (CET)

SFO, USA (PST)

Loading system status...
Change Site Theme
When Contentful's limits become walls

You're stuck at 49 of 50 content types. Again.

Your content team's campaign launch waits for procurement to approve an Enterprise upgrade. Sanity removes these barriers so content can ship at the speed of business.

Get startedContact sales
Sanity vs Contentful G2 Satisfactions Scores
The operational reality check

What Contentful's sales team won't tell you

We've seen a lot of Contentful projects: real customer migrations, public forums, their docs. Once your Contentful project hits production you get into friction, where Sanity removes it.

We're CMS nerds who think deeply about these problems, and we're sharing everything we know in detail so you can make up your own judgement.

Capability
Sanity
Contentful
Why it matters
Editorial experience
Easily configurable conditional fields, field groups/tabs, initial values for any type, and validations.
Limited out-of-the-box options, or else requires custom components
Smart content forms out of the box vs build everything beyond basics yourself
Data-driven and framework agnostic, click-to-edit, available on free and up
Contentful Studio on custom plans only, React-only requires significant developer work to implement
Visual editing should be for everyone and fit your stack
Fully extensible Portable Text Editor with inline blocks, annotations, and styles
Remove features only, can't add, blocks has to be references
The formatting you need vs what they allow
Flexible content types in documents
Rigid entry-reference model
Natural content flow vs forced fragmentation
Developer Experience
TypeScript schemas, Git workflow, hot reload for previewing editor experience
API-only versioning, no Git workflow
PR reviews and rollbacks vs API-only tracking
First-class React customization in codebase
UI extensions and App Framework requires separate hosting
Write components vs manage infrastructure
GROQ + GraphQL, 100MB queries
GraphQL only, 8KB limit
Query what you need vs work around limits
AI & Agent Experience
Canvas freeform writing with automatic content mapping, Agent that understands your content and schema
Basic field-level AI generation features (Premium+ only). No out-of-the-box native AI writing tool.
Transform any writing into content vs structured input only
Programmable schema-aware Agent Actions that works across Studio and Functions
Manual UI actions that can be triggered via API
Automate content pipelines vs manual repetition
AI models generate complete schemas and customizations
AI can only guide UI clicking
Build in minutes with AI vs manual configuration
Sanity

Sanity

Comparison

Contentful

Sanity
Supported
Supported
Easily configurable conditional fields, field groups/tabs, initial values for any type, and validations.
Contentful
Limited
Limited
Limited out-of-the-box options, or else requires custom components
Why it matters
Smart content forms out of the box vs build everything beyond basics yourself
Sanity
Data-driven and framework agnostic, click-to-edit, available on free and up
Contentful
Contentful Studio on custom plans only, React-only requires significant developer work to implement
Why it matters
Visual editing should be for everyone and fit your stack
Sanity
Supported
Supported
Fully extensible Portable Text Editor with inline blocks, annotations, and styles
Contentful
Limited
Limited
Remove features only, can't add, blocks has to be references
Why it matters
The formatting you need vs what they allow
Sanity
Supported
Supported
Flexible content types in documents
Contentful
Limited
Limited
Rigid entry-reference model
Why it matters
Natural content flow vs forced fragmentation

This table is based on public docs and user reports as of September 2025.

Trusted by 2000+ leading brands

PUMA
PUMA
PUMA
Operational reality

What breaks teams in production

The hidden limits and frustrating realities that turn a "safe" choice into daily friction. Real issues from real migrations.

Capability
Sanity
Contentful
Why it matters
Performance and scale
Per IP address (each user/service gets full limits)
Per space (entire organization shares one limit)
100 editors? Still 10 req/s total. Migration script? Everyone stops work.
25 req/s per IP
7-10 req/s for entire space
"Mission-critical systems competing with auxiliary systems" - actual user quote
500 req/s pr IP, unlimited CDN
55-78 req/s pr space, unlimited CDN
When your CI/CD pipeline hits rate limits, content publishing stops.
100mb query size, 1GB response
8KB query, 7MB response
TOO_COMPLEX_QUERY error becomes a frequent blocker
Thousands of doc mutations per mutation/action
200 items max, 5 concurrent, only publish actions
10,000 products? 50 separate operations. At 10 req/s = blocked for hours
Live Content API (CDN), Instant push
Webhook polling only
"Is it live yet?" becomes minutes of waiting
Team collaboration
Real-time sync across all surfaces
Changes outside of entry visible only after save
Real-time as a native platform primitive vs "tacked-on"
Real-time sync, no locking
Slow, users reports being locked and having to resolve conflicts
Hinders efficient collaboration, human and agent collab gets risky
Comments, tasks, presence built-in (Growth)
100 comments max, tasks need app install
Hit limits, add plugins
Git history for schemas, full content audit trail, content versions
Audit logs on Enterprise only
Pay to see changes
Field-level or document-level flexibility
All-or-nothing per content type
Can't mix strategies
Full git history for schemas, content versions, full edit trail
Audit logs on Enterprise only
Pay to see changes
Content Operations
Non-destructive, git versioned
Delete field = lose data
Simple change = data loss
Transactional patches, JSONMatch targeting
Replace entire entry each time
Race conditions guaranteed
Many docs per transaction, 4MB payload
200 items, 5 concurrent actions
Migration runs blocks hours of production work
Global doc limits, mutation limits (100s/s)
200 entities, 2 actions/min
Slice big campaigns
Field-level or document-level
All-or-nothing per content type
Can't mix strategies
Data management
32MB Documents, 4MB mutations
2MB entry, 7MB response, 1MB rich text
Split content unnaturally
10k unique paths (Growth), custom limits available (Enterprise)
50 fields per type (Team-Premium), "higher limits" (Enterprise)
Product variants hit the field ceiling, forced to split into multiple types
Common fields count once globally
Every type loses slots to common fields
"title, slug, seo" costs 3 paths total vs 3 slots on EACH of 50 types
10k paths can support hundreds of document types (Growth)
50 fields per type (Lite), no matter how many shared
"Add Instagram field to authors" blocked - already using 50 fields
Choose: weak or strong refs
Only hard references (no choice)
Can't archive old content
10M docs, 10GB JSON (negotiable)
5M records per space
Both scale differently
Stream entire dataset in one request, comprehensive CLI export
Paginated, rate limited
Hours to backup locally. Users reports that CLI is rate limited on lower plans.
GROQ filters, trigger on before/after conditions
Basic type filters only
Webhook spam
AI & Content Intelligence
Event-driven & programmatic
Limited API to trigger UI-focused actions
Manual AI = no scale. Automation = AI at production speed.
Programmable agents, event triggers
UI-only, manual triggers
Build custom AI workflows. No API = no automation.
Unlimited in Growth/Enterprise
20 actions/space, 20/min
Build without artificial constraints.
Validates against content model
Basic field validation
AI respects your data model. Prevents broken content. Can interface with complete documents
Functions + Agent Actions
API limited to trigger UI defined actions
Complex workflows need orchestration, not clicking.
Free-form to structured mapping with Canvas
AI can only work on single fields
Natural writing becomes structured data.
Document-level operations
Single field at a time
Process entire documents, not just fields.
Real-time everything
Real-time updates over CDN
Traditional CDN only
Content updates instantly. No cache delays.
Google Docs-style
Slow, no user presence
No conflicts. No lost work. Like Google Docs.
Global real-time preview with support for sub second optimistic updates
Referenced content needs to saved and required refresh
See changes instantly. No save-refresh cycles.
Eventstreams for patch events and opaque sync tags
Polling only
Real updates vs constant polling.
Granular invalidation tracking with opaque tags
Sync tokens for pagination
Granular vs bulk invalidation.
Listen endpoint for streaming mutations
REST/GraphQL only
Developer platform
TypeScript schemas, hot reload
Only as JSON for import/export
Git workflow vs UI clicking. Code review vs hope.
GROQ + GraphQL
Paginated REST, GraphQL only (8KB limit)
Query power determines frontend complexity.
500 req/s, unlimited CDN
10-55 req/s by plan
Limits determine build and migration speed.
Native for schemas + queries
Via GraphQL Codegen (non-native)
Type safety prevents runtime errors.
Free tier and up
Premium/Enterprise only
Automation shouldn't require an enterprise contract
1-10GB memory, up to 900s timeout, unlimited HTTP, real Node.js
128MB memory, 30s timeout (10s CPU), 20 HTTP requests max, custom runtime
Fixed memory, artificial HTTP limits, and a custom runtime make sophisticated automation impossible. Real workflows need real Node.js and the freedom to call multiple services.
Local dev server for Studio, Functions, Apps, and migrations
Limited local tools
Faster feedback loops means more efficient teams
Transactional, safe
Manual scripting
Safe vs scary migrations.
Multiple / Async / TypeScript for any field type
One limited regex rule for text fields
Catch errors before publish.
Editorial experience
Fully customizable React
Fixed UI with extensions
Your workflow, not theirs
32MB payload limit (document limit)
1MB payload limit
Your comprehensive guide crashes the editor at save. No warning, no graceful handling.
Different UIs per team/role
One app for all
Marketing ≠ Ads team ≠ Engineering needs.
Code-defined
Limited options
Match your actual process.
Global preview, live preview, click-to-edit, drag'n'drop, custom actions
Limited to single document
See what you're building
Unlimited comments, built-in tasks
100 comment limit per entry, tasks is plugin
Stop using Slack for feedback
1000s of documents
200 entities max
Launch campaigns atomically
Organization wide access
Per-space assets only
Reuse assets across projects
Full history and rollback of atomic changes
Basic history only
Undo disasters quickly
Customer Success & Support
Add-on for Growth, included on Enterprise
Premium/Enterprise required
Pay extra or upgrade tier
Modular - add what you need
Bundled - must upgrade entire tier
Flexibility vs package deal
Free, group workshops included for Enterprise
Paid certification only
Your team becomes experts, free
Dedicated Slack/Teams channels + email + emergency phone
Email ticketing system
Real-time help vs ticket queue
Monthly check-ins with Sr Solution Architects
Quarterly business reviews only
Continuous optimization, not checkboxes
Solution Architects guide implementation, migration planning included
Separate paid engagements
Included expertise vs extra costs
Sanity

Sanity

Comparison

Contentful

Sanity
Supported
Supported
Per IP address (each user/service gets full limits)
Contentful
Limited
Limited
Per space (entire organization shares one limit)
Why it matters
100 editors? Still 10 req/s total. Migration script? Everyone stops work.
Sanity
Supported
Supported
25 req/s per IP
Contentful
Limited
Limited
7-10 req/s for entire space
Why it matters
"Mission-critical systems competing with auxiliary systems" - actual user quote
Sanity
500 req/s pr IP, unlimited CDN
Contentful
55-78 req/s pr space, unlimited CDN
Why it matters
When your CI/CD pipeline hits rate limits, content publishing stops.
Sanity
100mb query size, 1GB response
Contentful
8KB query, 7MB response
Why it matters
TOO_COMPLEX_QUERY error becomes a frequent blocker
Sanity
Supported
Supported
Thousands of doc mutations per mutation/action
Contentful
Limited
Limited
200 items max, 5 concurrent, only publish actions
Why it matters
10,000 products? 50 separate operations. At 10 req/s = blocked for hours
Sanity
Supported
Supported
Live Content API (CDN), Instant push
Contentful
Not supported
Not supported
Webhook polling only
Why it matters
"Is it live yet?" becomes minutes of waiting

This table is based on public docs and user reports as of September 2025.
The results are in

Sanity is ranked #1 out of 85 CMSes on G2

G2.com, the world's largest marketplace for software, has rated Sanity as the #1 leader in the Headless CMS category, as measured by customer review ratings and market presence

Read G2 reviews
G2 Winter 2026 Grid chart with 'Leader' designation, showing multiple companies plotted and a large G2 logo.

Get a custom demo today

A technical team assigned to you.

  • Architects who've migrated your stack before. They know how to move you off Contentful, AEM, Leagcy, or homegrown without breaking production.
  • Support that writes scripts, not reads from them. Dedicated Slack/Teams channel. Connect with engineers who get your architecture.
  • Continuous technical partnership. Regular check-in calls to answer your questions as you scale.

When Riot Games needed to handle global traffic spikes, when AT&T required enterprise-grade architecture, when SKIMS demanded flawless commerce experiences – they all worked with the same technical teams you'll get.

By submitting this form, you confirm that you have read and understood Sanity's Privacy Policy. This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Things people often ask about us versus Contentful

We see daily how Sanity's schema-as-code approach offers significant advantages for development teams. By defining content models in JavaScript or TypeScript, developers can version control schemas using Git, just like any other piece of code. This enables better collaboration, code reviews, and seamless integration into CI/CD pipelines. Oh, and AI can totally assist in this work.

In contrast, Contentful's UI-driven content modeling can be more restrictive and lead to a disconnect between the content structure and the application code. Sanity gives developers the flexibility to build complex, nested data structures without being confined to a graphical interface.

  • Introduction to schemas - Core foundation
  • Schemas and Forms - Technical implementation
  • Getting started with Sanity - Practical setup

Sanity is designed to be highly customizable and prevent vendor lock-in. Sanity Studio, the editing interface, is an open-source React application that developers can completely customize to fit specific workflows and business needs. With App SDK, developers can also stand up standalone apps that can work across an organizations projects and datasets.

This level of control is not possible with Contentful's proprietary and more rigid App Framework. Sanity's open architecture and flexible data modeling empower developers to build truly bespoke solutions.

  • Studio customization - Complete customization guide
  • Studio Components - UI customization API
  • Custom component for Sanity Studio - Advanced customization

Sanity is built for real-time applications and offers excellent performance and scalability. Its "Content Lake" architecture is designed for low-latency queries and real-time data syncing, making it ideal for dynamic and collaborative applications. We run sophisticated global infrastructure that can deliver real-time content over the CDN for both public and private content.

While Contentful relies on a traditional CDN-based approach for content delivery, Sanity's real-time capabilities provide a more responsive experience for both editors and end-users. Sanity's GROQ query language is another key advantage, allowing for efficient and precise data fetching.

  • Live Content API - Real-time performance
  • API CDN - Global performance optimization
  • Real-time Updates - Architecture overview

Sanity's real-time collaboration feature is a significant advantage for content teams, allowing multiple editors to work on the same document simultaneously without the risk of overwriting each other's work.

This is a feature that is limited in Contentful lacks. We were able to create race conditions and data loss in our testing of their interface.

Furthermore, the ability to customize the Sanity Studio means you can create a tailored editing experience that matches your team's specific needs and workflows, ultimately boosting productivity.

  • Comments for Sanity Studio - Team collaboration
  • Tasks for Sanity Studio - Workflow management
  • Content Releases - Publishing coordinatio

Sanity's flexibility and developer-friendliness directly translate to the ability to create more innovative content experiences. The customizable nature of Sanity Studio allows for the creation of bespoke editing interfaces that can include features like in-line previews and custom components, giving content creators more control and a better understanding of the final output.

This level of customization is not as easily achievable in Contentful's more rigid environment.

  • Visual Editing with Next.js - Live preview setup
  • Studio customization - Tailored editing experience
  • Custom GROQ functions - Advanced querying

Sanity's usage-based pricing model can be more cost-effective, especially for growing teams. You pay for what you use, which provides greater flexibility and predictability in your expenses. You also get more features on lower tiers, as Sanity's philosophy is to earn team's trust by letting them build and validate the value.

Contentful's tier-based pricing can quickly become expensive as you add more users, content types, or locales, leading to significant cost increases as your needs evolve. They tend to prioritize enterprise for new features.

For example, a setup with 5 users and 30 content types could be significantly more affordable on Sanity's Growth plan compared to Contentful's Lite plan with a Lite Space add-on.

  • Sanity Pricing - Current pricing plans
  • Get started free - Try without commitment

Sanity provides a more flexible and powerful set of tools for programmatic content management. While both platforms offer robust APIs, Sanity's GROQ (Graph-Relational Object Queries) query language gives developers a significant advantage for fetching and manipulating content with a high degree of precision.

This, combined with Sanity's real-time APIs, enables more dynamic and responsive applications. For developers looking to build custom integrations and automate content workflows, Sanity's API-first architecture and flexible data model provide a more powerful and less restrictive environment than Contentful's.

  • GROQ introduction - Query language overview
  • HTTP API Overview - Complete API documentation
  • Webhooks API - Event-driven integrations

Sanity's "schema-as-code" approach is a game-changer for development teams that value version control and collaboration. By defining content models in JavaScript or TypeScript, you can manage your content schema in the same way you manage your application code—with Git. This enables branching, pull requests, and code reviews for schema changes, which is a significant improvement over Contentful's UI-based content modeling.

This approach reduces the risk of unintended changes and provides a clear history of how the content model has evolved over time.

We often hear from earlier Contentful customers that they had to lock down the Content type configurations, because non-developers would accidentally break their site by changing the content model and thus the API signature.

  • Schema deployment - Version control integration
  • Content migration cheat sheet - Migration patterns
  • Using TypeScript in Sanity Studio - Type safety

Sanity's open-source Sanity Studio provides a superior and more customizable visual editing experience. Because the Studio is a React application, it can be fully tailored to your team's specific needs, including the creation of bespoke in-line previews that show content exactly as it will appear on the front end. This level of customization is not possible with Contentful's more rigid, out-of-the-box interface. Furthermore, Sanity's real-time collaboration capabilities allow multiple editors to work on the same content simultaneously, which is a significant advantage for team productivity.

  • Visual Editing with Next.js App Router - Complete setup
  • Previewing content in Sanity Studio - Preview configuration
  • Presentation Resolver API - Advanced preview features

Sanity's flexible, code-driven approach to content modeling empowers you to create the exact content structures your product needs, without the limitations of a GUI-based system. This means you can easily create complex, nested content structures and define relationships between different pieces of content in a way that is more difficult to achieve in Contentful. This flexibility is crucial for product owners who want to create rich, interconnected content experiences and future-proof their content strategy.

  • Structure Builder - Content organization
  • Studio Plugins - Extensibility platform
  • Dashboard tool - Unified workspace

That's a common misunderstanding, but the opposite is often true, especially when you consider the entire project lifecycle. While Contentful’s GUI might seem faster for initial setup, Sanity's code-first approach accelerates development in the long run. You will also get instant visual feedback when you build out the editorial experience, unlike in Contentful where you have to click and navigate back and forth in their hosted UI to see the effects of changes.

By defining your schema in code, you can leverage version control, reuse configurations across projects, and integrate with CI/CD pipelines for more reliable and faster deployments.

With the rise of agentic coding and AI-powered development, having your content model as code allows you to programmatically generate, test, and update schemas, which is a significant speed advantage over manual, UI-based modeling.

Sanity provides a rich "out-of-the-box" experience that allows you to get up and running in minutes. You can start with pre-built templates and a fully-featured, open-source studio that can be customized as needed. You only need to define content types with a few lines of code and a simple command line to deploy your Studio for your content team. Sanity Studio ships with a lot of features out of the box that you might have to install as additional plugins in a Contentful project, and fast configuration options that's not possible to do with Contentful without resolving to UI customization, conditional fields being one example.

The "code-first" aspect doesn't mean you're starting from scratch; it means you have the power to extend and adapt without limitations. This is a key part of our evolution into a Content Operating System—we provide the core infrastructure, including the Sanity Studio and our Content Lake, so your team can focus on building custom applications and workflows on top of a solid foundation, rather than being constrained by a rigid UI.

While "out-of-the-box" can sound appealing, it often means you have to adapt your workflows to the software. It's more "into-the-box" or the box is really shallow once you start poking at it.

Sanity’s approach is to provide a powerful, customizable platform that adapts to your team's needs. We design the platform with great defaults and progressive disclosure, so you can get started quickly and then customize as you learn.

We've evolved beyond just a CMS into a Content Operating System, which includes a central Dashboard with Apps, and Canvas for a more visual, collaborative workspace.

This means you can create a tailored editing experience that matches your team's exact workflow, which boosts efficiency and adoption. It's the difference between a one-size-fits-all tool and a custom-built solution that empowers your team to do their best work.

The Content Operating System is a fundamental shift from the limitations of a traditional headless CMS. It’s an engineering platform that treats content as a core business asset. This means you're not just getting a place to store and edit content; you're getting a platform to build content-powered applications.

For example, with our App SDK, your developers can build custom dashboards and tools directly into Sanity, creating a central hub for all your content operations.

This allows you to create highly specific, efficient workflows that are simply not possible in a more constrained system like Contentful. It's about future-proofing your content strategy and giving you the tools to innovate, rather than just manage.

Builder Talk

How loveholidays cut the cost of launching new markets by 97%

See how AI-powered translation and automated content workflows unlocked £300k cost savings and lightning-fast market expansion for travel company loveholidays:

  • AI translations are automated
  • Editors compare the original document to the translated one in one view
  • The translation architecture automatically adapts to schema changes
  • A new domain and market can be introduced without code
Watch the recording
A grid of blue-toned hotel offers displaying names, locations, star ratings, and discounted prices.

How Sanity stacks up against contentful

This is our point of view on Contentful as builders in the CMS space for over a decade.

When you're suddenly out of content types and realize you need to delete something to add something new? When your editors are copy-pasting from Google Docs because the CMS is too painful? When you're running migration scripts at 2am because changing a field means touching every piece of content?

That's not how content operations should feel. That's what we hear building with Contentful feels like.

What developers who switched tell us

We've watched hundreds of teams migrate from Contentful to Sanity. Here's what they say made the difference: radically better flexibility and customization. Not the "configure it in our UI" kind, but the "shape it exactly how your team works" kind.

Here's what we think actually matters when you're choosing between us.

The thing about flexibility

Or: why Content Lake vs CMS matters

In our view: Contentful wasn't designed for true flexibility. They built a CMS in the browser with an opinionated API on top. At Sanity, we built a Content Lake, a database where your content is the source of truth, not our interface.

This fundamental difference shows everywhere. With Contentful, you're configuring their system through their UI. With Sanity, you're defining your content model in code, version-controlled alongside your application. With hot-module-reloading to instantly see how the editor experience turns out. Your content exists as structured data that you can shape, query, and transform however you need.

We see customers moving from Contentful because of this. It's hard to spot at first, but you slowly feel the walls closing in as your project matures. What seemed like helpful guardrails become permanent constraints.

The type ceiling you'll hit

Here's what a developer working on a major Contentful enterprise account recently told us: they're stuck at 149 out of 150 content types. Dead in the water. Can't add the second report type their client needs without deleting something else. Or go into contract negations.

This isn't edge-case stuff. Contentful forces everything to be references: no inline objects in documents. Every reusable button? That's a content type. Every SEO block? Another type. That single document list in Contentful becomes a junkyard of loose content pieces, differentiated by emojis because that's all you've got.

With Sanity, you decide what should be reusable references and what should be inline. You can tailor document lists to be exactly what you need.

Your content model, your rules.

Migration impossibility

Changing your mind seem to cost extra with Contentful. Need to restructure content? It's hard to do schema change management. You soft-deprecate by hiding fields because deletion is destructive. Their "solution" for evolving content models is making you accumulate cruft until your schema looks like archaeological layers.

It's like they are not incentivized to let you get rid of content types.

With Sanity? Update multiple documents in a single transaction. Use createOrReplace and patch for smart upsert. Provide determinstic IDs for predictable migrations. Our transaction API means you can refactor confidently: no hoping that API call #3 doesn't fail after #1 and #2 succeeded. Our schema migration tooling gives you just-enough-abstraction to scaffold, write, validate, and run schema and content migrations efficiently.

When preview becomes a puzzle

Let's talk about that "superior editorial experience" Contentful claims.

Want live preview? Digging into their docs, you'll discover that it entails adding 5-10 lines of boilerplate to every single component. Want to change a button? Better remember that button might be referenced on 17 other pages: hope you meant to change them all. Need to preview changes? Publish the referenced documents first (separately), then refresh the preview. We think all of that should just work, including previewing draft versions of your references.

What might look nice and clean in that demo or in the start, quickly becomes messy. And content creators risk subtly breaking stuff unless engineering has spent a lot of time adding all the safe guards.

One agency showed us their workflow: editors work in Google Docs, developers copy-paste into Contentful. That's not a content management system, that's expensive manual labor and wasted engineering time.

Meanwhile, with Sanity you can start writing free-form content with AI assistance in Canvas, and then automatically map it directly to your fields in the Studio. You can give different teams completely different Studios and specialized content ops apps. Your merchandisers get their e-commerce interface. Editors see authors and posts. Not just permissions, completely tailored interfaces that make sense for each team's actual job.

And all working on the same single-source-of-truth content.

The AI development gap

While Contentful makes you click through their UI to add fields one by one, our developers are building entire content models in minutes. They screenshot a Figma design, describe what they want to an AI agent, and get working schemas.

Contentful offer Agent Actions through a simple GUI dashboard (you can trigger it via an API call). And… that's it.

Developers using Sanity can deploy Functions with Agent Actions and their own business logic that automatically triggers on any content change made by humans/agents and does the work automatically: with full attribution and transparency. And without causing race conditions.

Here's the kicker: Sanity Functions use GROQ patterns for surgical precision. Trigger only when the body changes AND contains "sale" AND price < 10. Try setting that up in Contentful's webhook panel.

The agent even understands your schema.

Using AI development tools with Sanity means actually developing with AI. With Contentful, it means asking AI where to click next.

True composability vs. "headless"

While Contentful talks about being "composable," they're still surprisingly opinionated about how you structure and access your content. True composability means you can swap out any part of your stack: including how your content is modeled, stored, and delivered. It's what they call interoperability.

Contentful's reference-only architecture makes this surprisingly rigid. You can't refactor your content model without touching every piece of content. You can't optimize queries without their specific GraphQL limitations. You can't build the editorial UI your team actually needs. You can't easily update content programmatically either.

Sanity gives you the same powerful mutation APIs that our editing environment uses for real-time updates. It's pretty wild: You can actually point to a specific nested property in a JSON document and conditionally patch it in a transaction. If you don't understand what that means, hopefully it sounds cool that you can (but it's also pretty useful!)

Real-time by default

The difference between a CDN and a Live Content API

Contentful gives you a standard CDN. Sanity give you a Live Content API where the CDN automatically updates only what changes, and your front-end can subscribe to updates.

No refresh needed—disable that "Add to cart" button the instant inventory hits zero. Show breaking news as it happens. Update prices across all channels simultaneously. This isn't a feature you configure. It's just how Sanity's content API works.

What 300 Contentful customers said

A December 2024 study surveyed 300 actual Contentful users. The highlights:

  • 45% reported sluggish performance during normal usage
  • 40% struggled with basic navigation and setup
  • 35% needed more customization but hit platform limits
  • 30% worried about scaling costs
  • 25% found collaboration tools inadequate for real projects

These aren't competitors talking. These are their customers. And these are only the ones who realize that you can have higher expectations to your CMS.

When Contentful might work for you

Let's be honest. Contentful can be fine if:

  • Your content model is simple and unlikely to evolve
  • You have a small team with clearly defined roles
  • You prefer GUI-based CMS configuration over code
  • You're building a straightforward marketing site with standard requirements (and no ambitions to expand it)

If that's you, Contentful might genuinely be enough. We built Sanity for everyone else.

Things you can actually do in Sanity

(that you can't neatly do with Contentful)

✓ Define your entire content model in code
✓ Have unlimited content types (not 150) and locales
✓ Use inline objects, even in rich text
✓ Build custom editorial interfaces that match your workflow
✓ Create multiple Studios for different teams
✓ See all your content as actual JSON in the dashboard
✓ Generate schemas with AI in your favorite IDE
✓ Actually migrate content without risking overwriting data
✓ Version control your content model alongside your code
✓ Give editors a UI that makes sense for their actual job
✓ Query your content with a language built for content (not generic data)
✓ Copy and paste entire field values (complex objects, not just text)
✓ Build purpose-specific content apps beyond just the Studio
✓ Subscribe to real-time content updates without polling

The technical reality

For the developers who want specifics:

Content modeling: Contentful locks you into their UI with hard type limits. Sanity has no artificial limits on content types: you'll hit their limit way before you hit our technical constraints.

Field types: Contentful forces everything to be references. Sanity supports both inline objects and references. Use what makes sense.

Validation: Contentful gives you a subset of regex. Sanity gives you full JavaScript validation. Write the rules you actually need and that helps your content team.

Query language: Contentful offers generic REST/GraphQL. Sanity built GROQ specifically for content: query content as data.

Real-time collaboration: Contentful's is slow and prone to race conditions. Sanity is fast and shows you who's working where. Even agents.

Migration: Contentful requires custom API scripts and prone to accidental content deletion. Sanity supports declarative migrations that actually work.

Customization: Contentful limits you to UI extensions. Sanity lets you build full React components: your UI, your way. With fast local developer experience.

AI development: Contentful's AI stops at their UI. Sanity supports full code generation. Let AI build your entire content model, even custom content operations apps.

Already invested in Contentful?

We get it. Migration feels daunting. You've got content, you've got workflows, you've got a team that finally knows where to click.

Here's what teams who've made the switch tell us: the migration itself took weeks, but they got months of development time back in the first year. No more wrestling with reference puzzles. No more content type Tetris. No more "sorry, that customization isn't possible."

We've built migration tools specifically for Contentful. Your content comes over structured and clean. Your team gets trained on a system that actually makes sense. Our solution and support engineers have done this migration many times before.

Why this matters now

Every workaround you build in Contentful becomes technical debt. Every content type you carefully ration delays your next feature. Every reference-publishing puzzle your editors solve is time not spent on actual content.

The architectural decisions Contentful made years ago, Everything as references, UI-based configuration, rigid type limits: these aren't bugs. They're features of a business model that profits from deliberate constraints.

The bottom line

We built Sanity because we were tired of content systems that made easy things hard and hard things impossible. Where Contentful gives you forms to fill out, we give you code to shape. Where they count your content types, we let you model freely. Where they lock you into their UI, we let you build your own.

This isn't about features. It's about fundamentally different philosophies. Contentful believes they know how you should work. We believe you know better than anyone.

What's next?

Just evaluating?

Start with our free tier and 30 day Growth trial →
Build something real with most of the features, and see how different it feels when your content system works with you, not against you.

Stuck on Contentful?

Talk to our sales team →
We've helped enough teams make the move to know exactly what works, what doesn't, and how to preserve your content while upgrading your capabilities.

P.S. If you're reading this while waiting for Contentful's preview to refresh, or trying to figure out which of your 147 content types you can sacrifice to add a new feature... yeah, we built Sanity for you.