Picking a headless CMS in 2026 is harder than picking one in 2022 was. Back then the contest was Strapi vs Contentful and you mostly chose by budget. In May 2026 the field is far more crowded, the pricing pages are far more aggressive, and three of the four contenders here ship breaking changes to their flagship versions every few months. Picking wrong now means a rip-and-replace nine months later when your editor needs visual editing and your CMS does not support it, or when your free self-hosted CMS suddenly requires a commercial license because your revenue ticked over a threshold.
I have been shipping content sites and SaaS dashboards on these tools for years through Warung Digital Teknologi (wardigi.com). Across the 50+ projects we have shipped β including Photography Studio Manager, Hotel Management Suite, Smart POS, ContentForge AI Studio, and the seven aggregator blogs in our editorial portfolio β I have personally picked, deployed, migrated off, and migrated back onto every CMS in this comparison. This is what I would tell a client today if they asked me which one to pick for a real project starting in May 2026.

Quick verdict β who should pick what
If you only read one section, read this:
| If you are⦠| Pick | Why |
|---|---|---|
| Building a Next.js app and want CMS + frontend in one repo | Payload 3 | Only CMS that installs into your /app folder. No second deploy, no API hop. |
| A non-Next agency shipping client sites with editor-friendly UX | Strapi 5 | Live preview, content history, and a polished admin most editors already recognize. |
| Running a content team that needs structured content + visual editing | Sanity | The editor experience is a tier above the others, and the Free plan is genuinely usable. |
| Wrapping an existing SQL database with a CMS-style admin | Directus | It treats your DB as the source of truth. Nothing else does this as cleanly. |
If you are still on the fence, keep reading. The cliff edges are in the pricing fine print and the editor experience, not the README.
1. Payload CMS 3 β the Next.js native one
Payload 3.0 is the most opinionated of the four, and that is its strength. It installs directly into a Next.js /app folder. Your CMS admin, your API routes, and your frontend all run in the same Next.js app, on the same Vercel deploy, hitting the same database connection pool. There is no separate backend to operate, no CORS dance, no cold-start round trip from the storefront to a Strapi container. This sounds minor until you have spent a Saturday debugging why the staging API is slow and discovered the headless CMS is round-tripping over the public internet to fetch data the frontend already has access to.
I picked Payload 3 for our internal ContentForge AI Studio dashboard last quarter, and the migration off our previous (decoupled) stack cut our P95 page load from 880 ms to 320 ms β not because Payload is faster than the alternative, but because we deleted an entire network hop. Payload uses server components and server functions to read directly from Postgres or MongoDB, bypassing third-party APIs. As of writing, it is the only CMS in this list that does this.
The trade-off: Payload is genuinely Next.js native. If you are not on Next, you can still run Payload as a standalone Node app, but you are deliberately leaving its best feature on the table. We have one client whose marketing site is on Astro β Payload runs fine there, but I would not pick it over Sanity or Directus for that case.
Pricing reality check: Payload itself is MIT-licensed and free to self-host. Payload Cloud Standard is $35/month, Pro is $199/month, and Enterprise is $833/month. If you are already deploying to Vercel, you can skip Payload Cloud entirely β your Postgres bill on Neon or Supabase is your only ongoing cost. A small production site on a Hetzner VPS plus self-hosted Postgres runs under β¬10/month.
What I would not use it for: A non-developer editorial team. Payload's admin is functional, but it is built for developer-shaped users. The non-technical writer on your team will prefer Sanity or Strapi.
2. Strapi 5 β the safe agency pick
Strapi has been the default open-source headless CMS recommendation for years, and Strapi 5 (shipped late 2024, now stable through early 2026) is the most polished version yet. The big additions matter for real client work: live preview, draft & publish improvements, conditional fields, a responsive admin panel that finally works on mobile, and proper TypeScript 5 support.
I shipped a Strapi 5 build for a client's recipe site three months ago. The reason I picked it over Payload: the client's editorial team was three non-technical contributors, and the Strapi admin felt familiar to them within an hour. Conditional fields meant the "ingredients" structure changed shape based on whether the recipe was a meal or a drink, and I did not need to write a custom plugin to make that happen. The whole CMS layer took me about a day and a half to spec, generate, and deploy.
Strapi's weak point is the same as it has been for years: when you self-host it on a small VPS, the admin panel is heavier than you would like. On a Hostinger shared VPS we run for one of our internal aggregator sites, Strapi's admin took 2.4 seconds to first paint over a cold cache. Payload, on the same hardware, took 1.1 seconds. If your editors are global and on mid-tier laptops, that delta compounds.
Pricing reality check: Strapi self-hosted is free under the Community Edition (which is what almost everyone uses). Strapi Cloud Essential is $18/month ($15/month yearly), Pro is $90/month, Scale is $450/month. The Cloud plans hide a real cost: Cloud bandwidth and entry limits are tighter than self-host, and a busy site on Essential can hit overage charges within a month. Most production deployments I have seen self-host Strapi on a $20/month VPS and skip Cloud entirely.
What I would not use it for: A stack already deeply on Next.js where Payload would slot in cleaner, or any case where you need the editor to see the rendered preview side-by-side with the form (Sanity does this better).
3. Sanity β the editor's CMS
Sanity is the one I recommend for content-heavy teams. Not because it is cheaper (it is not, at scale), and not because it is the most flexible (Directus arguably wins there). I recommend it because the editor experience is genuinely a tier above the rest. Real-time collaboration, presentation mode for visual editing, structured content with portable text, and a Studio you can customize without writing a plugin from scratch.
For our internal HoroAura horoscope site, I run Sanity behind it. The editorial team there is two writers and a translator, and the visual editing experience means a writer can rephrase a sentence inside the rendered article preview, hit save, and the change ships instantly. None of the other three CMSes here can match that without significant custom work.
The Free plan is actually generous, which surprises people: 1 dataset, 10,000 documents, 20 user seats. For a personal blog or a 5-writer editorial team, you can run on the Free plan indefinitely. The catch is the Free plan only supports public datasets β if you need a private dataset (for staging content or behind-paywall posts), you are paying for Growth at $15 per seat per month.
That per-seat pricing is where Sanity gets uncomfortable. A 10-person team at $15/seat/month is $1,800/year just for the CMS. At Enterprise scale (custom pricing, but think $12kβ$25k/year based on what I have seen quoted), it is the most expensive option in this comparison by an order of magnitude. The math only works if your team's productivity gain from the Studio justifies the per-seat tax.
What I would not use it for: A solo developer building a SaaS dashboard. The Studio is overkill for a single-user CRUD interface β Payload or Directus will be faster to set up and cheaper to run.
4. Directus β the database-first CMS
Directus is the odd one out in this comparison, and it is the one I reach for when the project has an existing SQL database I cannot migrate away from. Directus does not impose a content schema on top of your DB β it reflects your existing schema and gives you an instant admin panel, REST and GraphQL APIs, and granular role-based access control. Point it at your Postgres, MySQL, or SQLite, and 10 minutes later you have a working CMS.
I used Directus on a Hotel Management Suite client project where the booking system already had 40+ tables in MySQL and we needed an admin tool for the operations team to manage room descriptions, hotel policies, and seasonal pricing. Migrating that schema into a "real" headless CMS would have meant duplicating data and writing sync logic. With Directus, I pointed it at the existing DB, configured permissions for the ops role, and the entire CMS layer was done in under a day.
The flip side: Directus is the least suited of the four for greenfield content sites. If you are starting from a blank slate, Strapi or Payload will give you a more opinionated content modeling experience. Directus's strength is its agnosticism, which becomes a weakness when you do not need it.
Pricing reality check β and this is the biggest gotcha in this article: Directus is free to self-host if your organization has under $5M in total annual income. If you cross that threshold, you need a commercial license. None of the other three CMSes have this revenue clause. For most small agencies and indie products this is irrelevant. For a venture-funded startup that just closed a Series A, this is a multi-thousand-dollar surprise. Read the BSL license carefully before you commit.
Directus Cloud starts at $15/month for the Community tier and $25/month for Standard. Enterprise is custom-priced.
What I would not use it for: A pure marketing site or blog. The schema-first approach is overkill when your content model is "post" and "page".

Pricing TCO β what you actually pay over a year
Sticker pricing is misleading because three of these CMSes are free to self-host but cost real money to run. Here is what a real one-year TCO looks like for a typical mid-size content site (10k pages, 5 editors, 50k visitors/day) based on what we have actually paid across our portfolio:
| CMS | License | Hosting (12 mo) | Maintenance time | Real annual TCO |
|---|---|---|---|---|
| Payload (self-host on Vercel + Neon) | $0 | ~$240 | 4β6 hrs/mo | ~$2,400 |
| Strapi 5 (self-host on Hostinger VPS) | $0 | ~$180 | 6β8 hrs/mo | ~$2,800 |
| Strapi Cloud Pro | $1,080 | included | 1β2 hrs/mo | ~$1,800 |
| Sanity Growth (5 seats) | $900 | included | 1 hr/mo | ~$1,500 |
| Directus Cloud Standard | $300 | included | 2 hrs/mo | ~$1,200 |
Maintenance time is calculated at $50/hour developer time. The number that often surprises people: at small scale, the cloud-hosted options frequently come out cheaper than self-hosting once you price in the developer hours spent on patching, upgrades, and incident response. The self-host equation only flips in your favor at scale, or if your team would be doing the maintenance work anyway.
Decision framework β pick the right one in 60 seconds
Here is the decision tree I walk through with every client:
- Is your frontend Next.js, and is your backend going to be on Vercel? Pick Payload 3. The Next.js native integration eliminates an entire deploy target. Stop reading.
- Do you have an existing SQL database that the CMS must read and write? Pick Directus. Nothing else does this as cleanly. (But check the $5M revenue clause.)
- Is editorial UX the top priority and do you have a budget for per-seat pricing? Pick Sanity. The editor will thank you every day for the next two years.
- None of the above? Pick Strapi 5. It is the safe default β least likely to surprise you, most likely to be supported in three years, easiest to find a developer who knows it.
Two patterns I see clients pick wrong: choosing Sanity for solo-developer SaaS dashboards (overkill), and choosing Strapi for a Next.js-only stack when Payload would slot in cleaner (a missed simplification). Both work, but you are leaving real wins on the table.
FAQ
Is Payload CMS free?
Yes. Payload is MIT-licensed and free to self-host with no revenue cap. Payload Cloud is paid (from $35/month) but optional.
Does Strapi 5 support PostgreSQL?
Yes. Strapi 5 supports PostgreSQL, MySQL, MariaDB, and SQLite. PostgreSQL is the most common choice for production deployments.
What is the catch with Sanity's Free plan?
The Free plan only supports public datasets. If you need a private dataset (for staging or paywalled content), you must upgrade to the Growth plan at $15 per seat per month.
Why does Directus require a commercial license over $5M revenue?
Directus uses a Business Source License (BSL) variant. Below $5M total annual revenue, you can use Directus in production for free. Above that threshold, you need a paid commercial license. This is unusual among major CMSes β Strapi and Payload have no such revenue clause.
Which CMS is fastest for editor previews?
Sanity, by a clear margin. Its presentation mode shows the rendered page side-by-side with the editor, with sub-second update latency. Strapi 5 added live preview in late 2024 and it works well, but Sanity's is more polished. Payload and Directus require a custom preview implementation.
Can I migrate from one of these to another later?
Yes, but it is not painless. Strapi β Payload is the easiest path I have seen because both use SQL under the hood and the schema mapping is straightforward. Sanity β anything is the hardest because Portable Text needs a custom transformer to convert to Markdown, MDX, or HTML. Plan for a 1β2 week migration if you cross any of these boundaries.
Which CMS works best with Astro or SvelteKit?
Sanity and Strapi both have first-class adapters for Astro and SvelteKit. Payload works but its main advantage (Next.js native) is wasted. Directus also works well as a pure API source.
Common pitfalls I have watched teams hit
Across the dozen-or-so CMS deployments I have helped clients with, the same three mistakes keep coming up. Naming them so you can avoid them:
Picking a CMS based on the README, not the editor experience. The README is written for the developer. The CMS is used every day by the editor. I have seen a team migrate from Strapi to Payload because Payload had a better TypeScript API, then migrate back six months later because the marketing team refused to keep using Payload's admin. Sit your editorial team in front of each candidate's admin for 15 minutes before you commit. The lock-in is real once content is in.
Underestimating the migration cost between major versions. Strapi 4 to Strapi 5 was a real migration, not a drop-in upgrade β the data fetching changed, the plugin API changed, and the admin panel was rewritten. Payload 2 to Payload 3 required rewriting your /app folder structure. Sanity is the gentlest here because the API surface is stable across Studio versions. Plan for at least a week of work whenever a major version of your CMS ships.
Assuming "self-hosted" means "free". Self-hosting a CMS means you own the operational burden β patching, backups, scaling, incident response. For a 2-developer team, that burden is often more expensive in opportunity cost than just paying for the cloud version. Run the TCO math honestly. Most of my clients overestimate their self-host savings by a factor of 2x.
Final verdict
If you are starting a new project in May 2026 and you tell me nothing else about the requirements, my default recommendation is Payload 3 if you are on Next.js, Strapi 5 otherwise. That covers about 80% of real-world cases. Reach for Sanity when editor experience is genuinely the project's top constraint and the per-seat pricing is acceptable. Reach for Directus when you have an existing SQL database that must remain the source of truth.
The worst pick in 2026 is "none of these" β building a custom CMS from scratch. I have watched two clients try it. Both came back to one of the four above within a year, and both spent more on the failed custom build than they would have on three years of Sanity Enterprise.