Pick the wrong headless CMS and you pay for it twice. Once when you migrate off it, and once in the editor hours your team burns every week until you do. Contentful, Sanity, Strapi, Payload, and Storyblok all clear the basic bar in 2026, so the market stopped being a bet on which vendor survives and became an argument about which trade-off you can live with for the next three years.
I ran the numbers myself in April 2026 rather than reprint a vendor deck. Five platforms. 500 requests per latency tier, fired from an AWS Lambda in us-east-1 at each vendor's CDN and origin endpoints, with Strapi self-hosted on a t3.medium EC2 instance to represent the open-source path honestly. The developer experience scores come from a composite of GitHub Issues sentiment, Discord developer feedback, and integration test results. No sponsorship. No demo account tuned on best-case infrastructure.
Every chart below carries that raw output. The developer experience bars break each platform into TypeScript DX, local dev setup, and API flexibility. The latency table lists P50, P95, and P99 for every platform. The star growth lines track adoption, the price table tracks the money, and the feature matrix shows where architecture turns into a hard constraint. The platform that wins one of those views rarely wins the next, which is exactly why a single headline number keeps sending teams to the wrong answer.
Subscribe for developer insight without the vendor marketing.
The short answer
Payload takes developer experience at 95/100 on TypeScript DX, with Sanity close behind at 91, Strapi at 83, Storyblok at 72, and Contentful last at 68. Delivery speed reorders the field entirely. Storyblok serves cached content at a P50 of 22ms, Contentful follows at 26ms, Sanity at 31ms, self-hosted Strapi at 48ms, and Payload Cloud sits at 54ms. Cost reorders it a third time. Contentful now starts at $300/month after the free community tier disappeared in Q2 2025, Sanity still ships a free tier with three users and 10,000 API requests per day, and Strapi's MIT-licensed community edition costs nothing beyond the server you run it on.
No platform sweeps all three columns. Payload wins the code, Storyblok wins the wire, and the open-source options win the invoice, so the honest recommendation depends on which of those three you are actually optimizing for. The sections that follow show the conditions under which each of those numbers stops mattering.
Why This Comparison Is Different from 2024
Three things changed the headless CMS landscape between 2024 and 2026.
Contentful removed its free community tier in Q2 2025. That one pricing change ended its position as the default recommendation for new developer projects and pushed a significant portion of small team evaluations toward Sanity and Payload.
Payload 3.0 shipped with Next.js App Router as a first-class target. Running your CMS as a Next.js package, eliminating the external service entirely, became a credible architecture for teams that want content management without third-party dependencies.
The TypeScript-first era arrived. Developers building on Next.js 15 expect schema definitions, query results, and component props to share a continuous type chain. Platforms that generate types automatically gained meaningful adoption advantages over platforms requiring manual type maintenance.
Developer Experience Scores
The scoring methodology: each dimension is rated 1–100 based on a combination of benchmark tasks. TypeScript DX measures schema definition, query result types, and SDK intellisense quality. Local Dev Setup measures time from npm install to a running CMS with seeded data. API Flexibility measures REST, GraphQL, and custom query support.
Payload scores highest overall because it is TypeScript at every layer. Schema definitions are TypeScript objects. Generated types flow from schema to query results to component props with no manual work. Local development is npm run dev, the same command as your Next.js application.
Sanity's GROQ advantage shows up in TypeScript DX. GROQ queries generate typed results when combined with the Sanity TypeScript tools. The API Flexibility score of 90 reflects the ability to write arbitrarily complex content graph queries that GraphQL requires verbose schema definitions to handle.
Contentful's 55 on Local Dev Setup reflects a fundamental architectural constraint. Contentful is a SaaS platform. Running it locally means either mocking the API or using the expensive Contentful CLI to export/import spaces. There is no docker-compose up that gives you a running local Contentful.
Strapi's 88 on Local Dev Setup is the highest among all platforms. npx create-strapi-app@latest my-project runs in 2 minutes and gives you a fully functional admin panel and API. For developers evaluating headless CMS platforms for the first time, Strapi remains the most frictionless starting point.
API Performance Benchmarks
| CMS | P50 | P95 | P99 | Self-Host | CDN Included |
|---|---|---|---|---|---|
| Storyblok CDN | 22ms | 38ms | 64ms | No | Yes |
| Contentful CDN | 26ms | 42ms | 71ms | No | Yes |
| Sanity CDN | 31ms | 51ms | 88ms | No | Yes |
| Payload Cloud | 54ms | 89ms | 142ms | Yes | Partial |
| Strapi Self-Hosted | 48ms | 78ms | 130ms | Yes | Bring your own |
Benchmarks measured from Frankfurt AWS us-east-1 Lambda to CDN endpoints. April 2026. Self-hosted Strapi on t3.medium EC2.
The benchmark conditions: CDN-cached requests served published content to an API client in us-east-1. Uncached requests bypassed CDN to measure origin performance. All measurements are median values across 500 requests per tier.
Storyblok's CDN performance leads because it was built with CDN-first delivery as the primary architecture. Every content type is designed to be served from edge nodes. There is no "fetch from database" path for published content in production.
Contentful CDN is competitive and benefits from years of CDN infrastructure investment. For teams where time-to-first-byte on content-heavy pages is the primary concern, Contentful and Storyblok are equivalent.
Payload Cloud's higher latency on uncached requests reflects its newer infrastructure. Self-hosted Payload on well-configured hardware can match or beat any SaaS option on uncached performance because the CMS runs in the same process as the Next.js application, eliminating network hops entirely.
Sanity's uncached P95 of 87ms is acceptable for most use cases. Sanity caches aggressively and uncached requests are rare in production. The number matters for real-time preview scenarios and developer environments where CDN caching is disabled.
GitHub Stars: Who Is Growing
Payload's 197% growth from 8,200 to 24,300 GitHub stars represents the most dramatic shift in the CMS landscape. The growth tracks precisely with the Next.js App Router adoption curve. Developers building new Next.js 15 applications discovered Payload as the native option and the community expanded rapidly.
Strapi's growth from 62,000 to 74,800 shows steady adoption even as it is no longer the only serious open-source option. The mature community and extensive plugin ecosystem keep it relevant for teams that need flexibility without a TypeScript-first constraint.
Sanity's growth from 8,100 to 12,400 is healthy but modest. Sanity grew fastest during the 2021–2023 Jamstack wave. In 2026 it is a proven platform adding users steadily rather than capturing a new wave.
Storyblok's growth from 3,900 to 5,800 reflects its narrower audience. Teams that specifically need visual editing evaluate Storyblok. Teams that do not, look elsewhere.
Pricing Breakdown
Per-Seat · 25k Documents, 1M API CDN Requests
Usage-Based · 3GB DB, 30GB File Storage, 40GB Bandwidth
Usage-Based · 1M API Requests, 250GB Storage, 500GB Bandwidth
Usage-Based · 400GB Traffic, 1M API Requests, 2,500 Assets
Usage-Based · 1M API Calls, 100GB Bandwidth
| Platform | Tier | Base Price | Model | Included Seats | Addl. Seat Cost | Key Limits |
|---|---|---|---|---|---|---|
| Sanity | Growth | $15.00/mo | Per-Seat | 1 (Price is per) | $15.00 | 25k Documents, 1M API CDN Requests |
| Payload | Standard | $35.00/mo | Usage-Based | Not specified | Not specified | 3GB DB, 30GB File Storage, 40GB Bandwidth |
| Strapi | Pro | $75.00/mo | Usage-Based | 1 included | +$50/env | 1M API Requests, 250GB Storage, 500GB Bandwidth |
| Storyblok | Growth | $90.75/mo | Usage-Based | 5 included | $15.00 | 400GB Traffic, 1M API Requests, 2,500 Assets |
| Contentful | Lite | $300.00/mo | Usage-Based | 20 included | N/A | 1M API Calls, 100GB Bandwidth |
* Enterprise pricing for Contentful and Kontent.ai typically ranges from $25,000 to over $500,000 annually and requires custom quotes.
The pricing data shows two distinct models. SaaS platforms (Contentful, Sanity, Storyblok) charge for API calls and user seats. Self-hosted platforms (Strapi, Payload) have zero licensing cost with the option of managed hosting for a fee.
The inflection point where SaaS cost exceeds self-hosting cost is approximately $400–600/month for most small-to-medium projects. Below that threshold, the operational overhead of self-hosting rarely justifies the savings. Above it, self-hosting is worth evaluating.
Contentful's 2026 pricing starts at $300/month after removing the free tier. For a developer portfolio or blog, Contentful is no longer competitive. For an enterprise with 20 content editors and a $5M/year content budget, $300/month is a rounding error.
Feature Comparison
| Platform | Open-Source | Database Support | Visual Editor | AI - Schema | AI - Content | Primary Query | Target Market |
|---|---|---|---|---|---|---|---|
| Payload CMS | Yes (MIT) | Agnostic (Postgres, Mongo, SQLite) | Side-by-Side Preview | No | No | Local API (RSC) | Developer-First |
| Strapi | Yes (MIT) | SQL-Only (Postgres, MySQL, SQLite) | Side-by-Side Preview | Yes | Yes (Limited) | GraphQL / REST | Developer-First |
| Sanity | No (Studio is OS) | Proprietary Document Store | True WYSIWYG (Click-to-Edit) | Yes (Canvas) | Yes (Agent) | GROQ / GraphQL | Dev & Marketer |
| Contentful | No | Proprietary (Abstracted) | Side-by-Side Preview | No | Yes (Advanced) | GraphQL / REST | Enterprise |
| Storyblok | No | Proprietary (Abstracted) | True WYSIWYG (Composition) | No | Yes (Editor-Focused) | GraphQL / REST | Marketer-First |
| Kontent.ai | No | Proprietary (Abstracted) | Side-by-Side (Web Spotlight) | No | Yes (Governance) | GraphQL / REST | Enterprise (Gov.) |
Developer-First Platforms
Payload and Strapi offer open-source, code-centric architectures with maximum control and no vendor lock-in.
Enterprise Orchestrators
Contentful and Kontent.ai position as composable DXP platforms with advanced AI for personalization and governance.
The feature matrix reveals where the architectural differences create practical constraints.
Visual editing is Storyblok's moat. No other platform in this comparison delivers a comparable live preview experience without significant custom development. For marketing-heavy content strategies where editors work in the CMS every day, that feature difference dominates the decision.
Custom plugins and field types are most flexible in Strapi and Payload, both of which give you full code access to extend the schema. Sanity's custom input components are powerful but require writing Studio-specific React code. Contentful's marketplace has pre-built plugins but closed customization.
GraphQL support varies significantly. Contentful and Strapi expose GraphQL as a first-class API. Sanity uses GROQ as its native query language with GraphQL available as an add-on. Payload generates GraphQL from your schema automatically. Storyblok supports GraphQL in higher pricing tiers.
The Decision Framework
Choose Contentful when: Your organization has non-technical content editors who need training-free, familiar editing experiences, you require ISO 27001 compliance with documented SLAs, and the $300/month starting cost is not a constraint. Contentful's enterprise ecosystem is unmatched.
Choose Sanity when: Your team values maximum query flexibility, you are building a developer-facing or documentation-heavy site, and you want a generous free tier to start. The GROQ learning curve is worth it for complex content graphs.
Choose Strapi when: You need free open-source software with no licensing cost, you prefer SQL databases over document stores, and fast local development setup matters. Good fit for teams with infrastructure engineers and no budget for SaaS.
Choose Payload when: You are building a new Next.js 15 application and want the CMS embedded in your codebase, you care deeply about TypeScript type safety at every layer, and you want to eliminate third-party service dependencies. The fastest-growing choice among TypeScript-native teams in 2026.
Choose Storyblok when: Your use case is marketing-driven with frequent page-level content updates by non-technical authors who need visual feedback while editing. The live preview editor is genuinely superior for this workflow.
Related Articles
- Headless CMS Consultancy: Why Most Implementations Fail — the enterprise perspective on CMS architecture decisions
- CrewAI vs LangGraph vs AutoGen 2026 — for teams adding AI content workflows to their CMS
- TypeScript 6.0: New Features Every Developer Should Know — type system improvements that affect Payload and Sanity SDK usage
