All three are good. That's genuinely the honest starting point — none of them is a mistake, and the wrong choice usually costs you convenience rather than a rewrite.

What differs is the hosting model, how cost behaves as you grow, and who's comfortable using the editor. Those are the criteria that should decide it.


The short version

SanityStrapiPayload
HostingManaged (self-host not practical)Self-host or their cloudSelf-host, or their cloud
Runs inside your Next.js appNoNoYes
DatabaseSanity's ownPostgres / MySQL / SQLiteMongoDB or Postgres
Content model defined inJS/TS schema filesAdmin UI or codeTypeScript
Query languageGROQ (or GraphQL)REST + GraphQLREST + GraphQL + local API
Typical cost driverAPI requests, bandwidth, seatsYour infrastructureYour infrastructure
Free tierGenerous, real limitsSelf-host is freeSelf-host is free
Editor experienceBest of the threeGoodGood, improving fast
Real-time collaborationYes, nativeNoNo
Best fitContent teams, editorial sitesTeams wanting an API backendNext.js apps wanting one codebase

Sanity

Managed, polished, and the best editing experience of the three.

Sanity CMS's Studio is a genuinely well-designed editor. Real-time collaborative editing works properly — two people in the same document, live. For an editorial team publishing frequently, this is a real productivity difference, not a feature-list item.

The content model is defined in code, so it's version-controlled and reviewable. Portable Text — their structured approach to rich text — is more rigorous than storing HTML blobs, and pays off when you need to render the same content across web, mobile, and email.

GROQ is Sanity's query language. It's genuinely powerful and it's another thing to learn; GraphQL is available if you'd rather not.

The consideration: you're on their platform. Pricing scales with API requests, bandwidth, and seats. The free tier is generous and real projects live on it, but a high-traffic site with many editors reaches paid tiers, and the cost grows with success. Self-hosting isn't a practical escape hatch.

Choose it when content quality and editor experience matter most, you have a real content team, and a managed dependency is acceptable.


Strapi

The self-hosted default. Most mature, largest ecosystem.

Strapi is a Node.js application you run yourself, backed by a database you choose. Define content types through the admin UI or in code, and it generates REST and GraphQL endpoints automatically.

The appeal is control. Your data is in your Postgres instance. No per-request pricing, no seat limits, no vendor. For projects with data-residency requirements or an aversion to platform dependencies, that settles it.

The plugin ecosystem is the largest of the three, and the community is correspondingly big — most problems you'll hit have been hit before.

The consideration: you're running a server. Deployment, updates, backups, scaling, and uptime are yours. That's not free even though the licence is — factor in genuine ops time. Strapi's own cloud offering removes this at a cost that should be compared against the alternatives rather than assumed cheaper.

Version upgrades have historically required real migration work. Read the notes before committing to a major version bump.

Choose it when you want self-hosting, you have somewhere to run it, and you want the broadest ecosystem.


Payload

Runs inside your Next.js application. One codebase, one deployment.

Payload CMS installs into your Next.js app. The admin panel is a route in your project. There's no separate service to deploy, no CORS configuration, no network hop between your front end and your CMS.

The local API is the differentiator: server-side, you query content by calling a function rather than making an HTTP request. In a Server Component that means no network round trip to fetch content at all.

It's TypeScript-first in a way the others aren't. Your content model is defined in TypeScript, and your types are generated from it — so a field rename surfaces as a compile error rather than a runtime undefined in production.

The consideration: it's the newest, so the ecosystem is smallest and there are fewer answers when you hit something unusual. It's also the most coupled — Payload lives inside your Next.js app, which is the point, but it does mean the CMS and the front end deploy together.

Choose it when you're building a Next.js application, your team is comfortable in TypeScript, and one codebase is more appealing than one more service.


How to actually decide

Who edits, and how often? Frequent publishing by a non-technical team makes editor quality the deciding factor, and Sanity wins on that. Occasional edits by technical people makes it nearly irrelevant.

Can you run infrastructure? If nobody will patch a server, Sanity's managed model or a cloud offering is the honest answer. A self-hosted CMS that falls behind on updates is a liability.

What does cost look like at 10× your current traffic? Managed pricing scales with usage; self-hosted is largely fixed. Model both at your expected size, not today's.

How stable is your content model? If it'll change often, Payload's TypeScript types and Sanity's code-defined schemas both give you compile-time safety that a UI-defined model doesn't.

Does data location matter? If yes, self-hosting is the requirement and it narrows to Strapi or Payload.


What matters more than the choice

Model your content properly. A well-structured model in the "wrong" CMS beats a badly-structured one in the "right" CMS, every time. Structure by meaning, not by page layout — a Service with typed fields, not a Page with a rich-text blob. Content modelled around today's design has to be re-modelled when the design changes.

Don't put layout in content. Editors adding inline styles and layout markup produces content you can't reuse and can't restyle. Give them structured fields and constrained block types.

Plan your preview flow early. Editors will ask how to see changes before publishing. Draft mode in Next.js handles this, but it's meaningfully easier to build in from the start than to retrofit.

Get those right and any of the three will serve you well. Get them wrong and none of them will.


Want help choosing and building?

We build Next.js sites on all three, and we'll recommend based on your team and traffic rather than our preference. Talk to us about web development.