Word & Press · 24 publishing platforms profiled Updated 10 October 2026

Compare

Payload vs Sanity for publishers: self-hosted code or hosted Studio?

Payload is a self-hosted, MIT-licensed CMS inside Next.js. Sanity is an MIT Studio on a hosted data store. How they differ on roles, drafts, preview and cost.

By Word & Press Published 10 October 2026 Facts verified 10 October 2026 Read 4 min

The short answer

Pick Payload if your JavaScript developers want a free, self-hosted CMS in the same codebase as a Next.js site and will write the roles themselves. Pick Sanity if you accept a hosted data layer and want a customisable Studio with documented draft, version and release states. Both leave sitemaps, structured data and redirects to your front end.

PAYLOAD VS SANITY

The short version

Pick Payload if your developers want one codebase. It installs inside a Next.js application, it is MIT-licensed, and you host it on a database you choose. Drafts and version history are built in, but roles are not. The documentation says access control is functions you write, so a newsroom’s journalist, sub-editor and publisher tiers are a development task.

Pick Sanity if you are comfortable renting the data layer. Its Studio is MIT-licensed, the content lives in Sanity’s hosted Content Lake, and draft, version and release states are clearly documented. The cost is per-seat pricing and a vendor holding your content.

Neither is a website. Both are headless, so the reader-facing site, sitemaps, structured data and redirects are your developers’ work. This comparison rests on vendor documentation, not an install by us. The full profiles are Payload and Sanity.

At a glance

Feature Payload Sanity
Licence MIT MIT (Studio repository); hosted Content Lake is a commercial service
Latest version 3.90.2 (23 September 2026) Studio 6.18.0 (6 October 2026)
Written in JavaScript on Node.js 20.18.1 or higher Not documented on pages we cite
Hosting Self-hosted; MongoDB, PostgreSQL or SQLite Content hosted by Sanity; no self-hosted Content Lake found
Editorial roles/workflow No built-in roles; access functions in code 2 roles on Free; more on Growth and Enterprise
SEO & structured data Not documented as built in Not documented as built in
Multilingual Field-level, with fallbacks Field-level or document-level
Headless/API REST, GraphQL and Local API GROQ and GraphQL on all plans
Typical cost Free software; you fund hosting and development Free $0; Growth $15 per seat per month
Best for Developer-led teams who want self-hosting Teams who want a hosted, customisable Studio

“Not documented” means the pages we read do not say. It does not mean the feature is absent.

Editorial workflow

Payload’s drafts carry one of three statuses: draft, published or changed. Scheduled publishing and unpublishing work only after a job queue is configured. The draft argument on its own does not stop unauthenticated users receiving drafts, so your developers must add access control.

Sanity separates published, draft and version states. A draft is one unpublished edit to a document, and a version is an edit inside a content release. The documentation says neither is accessible to unauthenticated requests. Comments, task management and scheduled drafts come with the Growth plan.

The difference is where the work sits. In Payload your developers build the permission model, then the rest is free. In Sanity the permission roles come with the plan, and you pay per seat for more of them.

Preview and what each leaves to the front end

Payload’s Live Preview loads your front end in an iframe in the admin panel. Your front end must listen for window.postMessage events and re-render with the data it receives.

Sanity’s visual editing needs more integration: a draft-mode endpoint, a client configured with stega, source maps, perspectives and tokens, click-to-edit overlays, Live Content API integration and router integration.

Everything a reader or crawler sees is also front-end work in both: templates, sitemaps, structured data, canonical tags and feeds.

Search, structured data and feeds

Treat SEO output as a front-end deliverable. Model author, dates, image and meta fields as content, then render Article or NewsArticle JSON-LD in your framework. For Google News coverage, read Google’s own documentation.

Payload’s redirects plugin adds a redirects collection with from and to fields. The documentation says it does not perform the redirect, so your front end must read the collection and apply it. We found no equivalent redirect feature in the Sanity pages we read.

Hosting, performance and security

Payload needs Node.js 20.18.1 or higher and a database adapter for MongoDB, PostgreSQL or SQLite. You run the stack, patch it and back it up.

With Sanity there is no database to operate, but your content sits with a vendor. Read its terms and export options before you commit a large archive.

Cost of ownership

Payload has no licence fee. We did not verify any paid Payload plan, so we quote none. Budget for developer time, which is the large item, plus hosting, storage and a database.

Sanity’s Free plan allows up to 20 user seats, 2 public datasets and 10k documents. Growth is $15 per seat per month with 25k documents and pay-as-you-go overages. A large archive can pass the document limit, and a big newsroom pays per head. See the cost guide and licence guide.

Multilingual publishing

Payload localises per field with localized: true and falls back to another locale when a value is missing. Per-locale publishing status is a beta feature. Sanity offers field-level storage, where all languages publish together, or document-level storage, where each language is its own document and publishes independently.

Migrating between them

We did not find an official Payload-to-Sanity or Sanity-to-Payload migration tool in the documentation we read. Expect a scripted export and import, with content models rebuilt by hand and redirects preserved at the front end.

Which should you choose?

  • In-house JavaScript developers who want one Next.js codebase: Payload.
  • Data must stay on servers you control: Payload, because Sanity’s Content Lake is hosted.
  • You want an editing interface shaped to your content model with ready-made drafts and releases: Sanity.
  • A large team where per-seat cost is a worry: estimate Sanity’s per-seat price at your headcount against Payload’s hosting and development cost.
  • No developers at all: neither. See the comparison hub for traditional options.

See also Strapi vs Payload, Strapi vs Sanity and the CMS profiles.

Questions people ask

Is Payload or Sanity easier for editors?

The documentation does not rank them, so we cannot say. Both give editors an admin interface and leave the public site to developers. Payload's roles start empty and are written in code. Sanity's Free plan has two permission roles and paid plans add more.

Can I self-host Sanity the way I can self-host Payload?

Not as far as we could verify. Sanity's content sits in its hosted Content Lake, and the MIT-licensed repository is the Studio. Payload runs on your own infrastructure with MongoDB, PostgreSQL or SQLite.

Which is cheaper, Payload or Sanity?

Payload has no licence fee, but you pay for hosting, a database, storage and developer time. Sanity's Free plan is $0 with document and dataset limits, and Growth is $15 per seat per month. We verified no paid Payload plan, so we quote none.

Which one handles scheduled publishing?

Both do, with conditions. Payload supports scheduled publish and unpublish but needs a job queue set up. Sanity lists scheduled drafts on Growth.

Do either include sitemaps or structured data?

The pages we read describe neither as a built-in feature of either product. Your front end generates sitemaps, Article or NewsArticle JSON-LD and applies redirects. Payload's redirects plugin stores redirect pairs but does not apply them.

Sources

  1. Payload's repository is licensed under the MIT Licence, copyright Payload CMS, LLC, 2018-2026. — source, checked 10 October 2026.
  2. The latest Payload release on GitHub is v3.90.2, published 23 September 2026. — source, checked 10 October 2026.
  3. Payload requires Node.js 20.18.1 or higher and offers database adapters for MongoDB, PostgreSQL and SQLite. — source, checked 10 October 2026.
  4. Payload provides REST, GraphQL and Node.js (Local) APIs generated from its config, and can be added to a new or existing Next.js app to run the Admin Panel. — source, checked 10 October 2026.
  5. Payload drafts have three statuses (draft, published, changed); scheduled publish and unpublish require a configured job queue, and the draft argument alone does not stop unauthenticated users receiving draft documents, so access control is needed. — source, checked 10 October 2026.
  6. Payload has no built-in roles system; access control is written as functions for create, read, update and delete, and role-based rules are implemented by checking user fields such as a role field. — source, checked 10 October 2026.
  7. Payload Live Preview renders the front end in an iframe in the Admin Panel; the front end must listen for window.postMessage events and re-render with the data received. — source, checked 10 October 2026.
  8. The Payload redirects plugin adds a redirects collection with from and to fields but does not handle the redirect itself; the front end must apply it. — source, checked 10 October 2026.
  9. Payload localisation is field-level (localized: true), supports fallback locales, and offers per-locale publishing status as a beta feature. — source, checked 10 October 2026.
  10. The sanity-io/sanity repository is licensed under the MIT Licence, copyright Sanity.io, 2016-2026. — source, checked 10 October 2026.
  11. The latest Sanity Studio release on GitHub is v6.18.0, published 6 October 2026. — source, checked 10 October 2026.
  12. Sanity's pricing page lists Free at $0 (up to 20 user seats, 2 permission roles, 2 public datasets, 10k documents), Growth at $15 per seat per month (up to 50 seats, 25k documents, pay-as-you-go overages, comments, task management and scheduled drafts) and Enterprise at custom pricing with SSO and an uptime SLA; all plans include access to the Content Lake with GraphQL and GROQ support. — source, checked 10 October 2026.
  13. Sanity keeps Published, Draft (one per document, stored under drafts.) and Version (inside a content release, stored under versions.) states; neither drafts nor versions are accessible to unauthenticated requests and are excluded from the published perspective. — source, checked 10 October 2026.
  14. Sanity visual editing needs front-end work: a draft-mode preview endpoint, client configuration with stega, content source maps, perspectives and tokens, click-to-edit overlays, Live Content API integration and router integration. — source, checked 10 October 2026.
  15. Sanity documents two localisation approaches: field-level (one document, all languages published together) and document-level (one document per language, linked by references, published independently), with the @sanity/document-internationalization plugin for the latter. — source, checked 10 October 2026.