Skip to content

Self-hosted alternatives to Sanity

Sanity is a hosted content platform where schemas are defined in code, content is stored as structured JSON and editors work in a customizable Studio. One listed app does its main job and runs in your own Cloudflare account.

Each answer comes from the app’s README and source code, compared with the features Sanity describes on its own site.

  • Payload admin panel editing a page with live preview

    Headless CMS with an admin panel, where developers define content in code and editors publish, running on Workers with D1 and R2

    Deploy
    One-click
    License
    MIT
    GitHub stars
    45.4k stars
    Last commit

Sanity features, app by app

FeaturePayload
Schema-as-code content modelingYes
Customizable Studio editorYes
Real-time collaborative editingNo
GROQ querying and content APIsPartly
Content releases and schedulingPartly
Media library and asset managementPartly
AI features for contentNo

Headless CMS with an admin panel, where developers define content in code and editors publish, running on Workers with D1 and R2

What a Sanity user would miss
There is no real-time co-editing or GROQ, image resizing is off on Workers, and the template has no AI features.
What it adds
The content model, access rules and hooks live in your own code and repository, and the data stays in your own D1 database and R2 bucket.
  • Yes Schema-as-code content modeling. Collections, fields and access rules in TypeScript.
  • Yes Customizable Studio editor. The admin panel accepts custom React components.
  • No Real-time collaborative editing. No simultaneous editing of one document.
  • Partly GROQ querying and content APIs. REST and Local API with their own query syntax, no GROQ; GraphQL is not guaranteed on Workers.
  • Partly Content releases and scheduling. Drafts and versions per document, without releases that group several documents.
  • Partly Media library and asset management. Media collection in R2; image resizing and cropping are off on Workers.
  • No AI features for content. Not part of the Cloudflare template.

Sources:payloadcms.compayloadcms.com/docsgithub.com/payloadcms/payload/tree/3.x/templates/with-cloudflare-d1workersnative.directory/api/apps/payload