# Should a Drupal site go headless with Drupal or move to another CMS?

Reviewed by Martin Dejnicki · facts verified 25 October 2026 · canonical: https://deploi.ca/sanity/compare/headless-drupal-or-new-cms

## Short answer

Headless Drupal 11 wins when editors depend on Drupal's back office, because headless Drupal keeps per-content-type permissions and Content Moderation ([Drupal.org user guide](https://www.drupal.org/docs/user_guide/en/user-permissions.html); [Drupal.org, Content Moderation](https://www.drupal.org/docs/8/core/modules/content-moderation/overview), October 2026). A hosted content management system (CMS) such as Sanity wins when content serves several sites and apps, because it stores Portable Text, not HTML ([Sanity's Drupal guide](https://www.sanity.io/blog/sanity-vs-drupal7), October 2026).

- **Coupled page building:** Drupal Canvas in Drupal CMS 2.0. Drupal CMS 2.0 lists visual page building with Drupal Canvas for marketers, so page building alone is no reason to go headless ([Drupal.org, Drupal CMS](https://new.drupal.org/drupal-cms))
- **Drupal's headless API:** JSON:API in core, zero configuration. GraphQL is a contributed module for Drupal 10 and 11; JSON:API Views exposes each Views display as a resource ([Drupal.org, JSON:API module](https://www.drupal.org/docs/core-modules-and-themes/core-modules/jsonapi-module); [Drupal.org, JSON:API Views](https://www.drupal.org/project/jsonapi_views); [Drupal.org, GraphQL](https://www.drupal.org/project/graphql))
- **Next.js for Drupal:** Works with Drupal 10 and 11. A Kanopi Studios project listed on drupal.org, with iframe previews of drafts and revisions and a multi-site preview for one Drupal feeding several sites ([Drupal.org, Next.js project page](https://www.drupal.org/project/next))
- **Sanity custom roles:** Enterprise only, as of October 2026. Growth costs $15 per seat a month, billed monthly, with five fixed roles; Drupal and Strapi Community set permissions per content type for free ([Sanity, Plans that scale with you](https://www.sanity.io/pricing); [Sanity, Sanity for Startups](https://www.sanity.io/startups); [Sanity Docs, Roles and permissions](https://www.sanity.io/docs/content-lake/roles-concepts); [Strapi Docs, Role-Based Access Control (RBAC)](https://docs.strapi.io/cms/features/rbac))

## Deploi's call

Go headless on Drupal 11 when your editors live in Drupal's back office; move the content to Sanity when they don't. Headless Drupal doubles the stack, and that only pays when the back office is the reason you stay.

**PICK: Go headless on Drupal 11 when**

- Only the front end needs to change, so the content model, URLs and editor training stay in Drupal and the headless build is front-end work alone.
- Editors rely on per-content-type permissions, Content Moderation or Webform, because headless Drupal keeps all three while Sanity reserves custom roles for Enterprise as of October 2026.
- Your team keeps PHP and Drupal skills in house to run the back end through each two-year major release.

**ALTERNATIVE: Move the content to Sanity instead when**

- The site is on Drupal 7, so every path is a rebuild and a second Drupal back end buys nothing.
- The reason to go headless is content reuse across sites, apps or brands, so rich text stored as Portable Text rather than HTML pays back.
- Five fixed roles on Sanity's Growth plan cover your editors, or Enterprise is in budget, as of October 2026.
- Nobody wants to run a PHP back end beside a JavaScript front end, so a hosted content management system (CMS) without a PHP back end fits better.

## What does going headless with Drupal involve?

Going headless with Drupal means running two systems: Drupal stays as the back end that stores and serves content, and you build and host a separate JavaScript front end that renders it.

- **The Drupal half.** It keeps Drupal's release cadence, a new major version every two years, in even years ([Drupal.org release process](https://www.drupal.org/about/core/policies/core-release-cycles/release-process-overview), October 2026). [Whether to upgrade Drupal 10 or leave Drupal](https://deploi.ca/sanity/migration/leaving-drupal) is a decision of its own.
- **The front-end half.** It is a new JavaScript codebase with its own hosting, framework upgrades and developers, so the headless stack costs more to staff than a coupled Drupal site.
- **The editors.** They keep working in Drupal's back office, and the front end fetches their content through Drupal's application programming interface (API).

Whether any organization should go headless is the headless versus traditional content management system (CMS) question; the choice here starts once a Drupal team has settled on a decoupled front end.

## How does a headless Drupal back end serve content to the front end?

A headless Drupal back end serves content through Drupal core's JSON:API module or a contributed GraphQL module, each an application programming interface (API), and a front-end toolkit such as Next.js for Drupal reads it. Four pieces do the work, as of October 2026:

- **JSON:API, in core.** Drupal.org calls it "zero-configuration required" and opinionated, and it handles create, read, update and delete (CRUD) operations on a site's content ([Drupal.org, JSON:API module](https://www.drupal.org/docs/core-modules-and-themes/core-modules/jsonapi-module), October 2026). Business rules such as account creation and login are not part of it.
- **GraphQL, contributed.** The GraphQL module lets you "craft and expose a GraphQL schema for Drupal 10 and 11" ([Drupal.org, GraphQL](https://www.drupal.org/project/graphql), October 2026).
- **JSON:API Views.** It creates a JSON:API resource for each Views display, so existing listings reach the front end ([Drupal.org, JSON:API Views](https://www.drupal.org/project/jsonapi_views), October 2026).
- **Next.js for Drupal.** A Kanopi Studios project listed on drupal.org that works with Drupal 10 and 11, previews drafts and revisions in an iframe, and offers multi-site preview for "write once, publish everywhere" ([Drupal.org, Next.js](https://www.drupal.org/project/next), October 2026).

Next.js for Drupal is a Kanopi Studios project, not a Drupal Association or Vercel product; [the Sanity and Next.js integration](https://deploi.ca/sanity/integrations/nextjs) is Sanity's own toolkit for the same job.

## What do you keep, and what do you rebuild, when Drupal goes headless?

Headless Drupal keeps the back office and rebuilds everything a visitor sees, which the front end fetches through Drupal's application programming interface (API). Our view of Drupal rests on its documentation and public sources, so kept rows rest on drupal.org and the Next.js for Drupal guides, and rebuilt rows are Deploi's judgment.

**Headless Drupal keeps the editors' tools and moves all rendering to the new front end**

| Drupal feature | Headless Drupal 11 | Basis |
| --- | --- | --- |
| Permissions by role and content type | Kept in the back end | Drupal.org user guide |
| Content Moderation | Kept; draft previews need front-end wiring | Drupal.org |
| Webform and Search API | Kept; forms and facets rebuilt in the front end | Next.js for Drupal guides |
| Multisite | Kept; shared code, a database per site | Drupal.org |
| Theme, Layout Builder and Paragraphs output | Rebuilt as front-end components | Deploi's judgment |
| Menus and blocks | Fetched and rendered by the front end | Deploi's judgment |

No page read says Layout Builder output works headless out of the box. Sources: [Drupal.org, Assigning Permissions to a Role](https://www.drupal.org/docs/user_guide/en/user-permissions.html); [Drupal.org, Content Moderation overview](https://www.drupal.org/docs/8/core/modules/content-moderation/overview); [Drupal.org, Multisite Drupal](https://www.drupal.org/docs/getting-started/multisite-drupal); [Kanopi Studios, Next.js for Drupal: Search API](https://next-drupal.org/guides/search-api); [Kanopi Studios, Next.js for Drupal: Webform](https://next-drupal.org/guides/webform). As of 24 October 2026.

Each kept integration needs an extra module: Webform REST (representational state transfer) for forms and JSON:API Search API for search ([Next.js for Drupal, Webform](https://next-drupal.org/guides/webform); [Search API](https://next-drupal.org/guides/search-api), October 2026).

## When is a new CMS a better move than headless Drupal?

A new content management system (CMS) beats headless Drupal when the Drupal back office isn't the reason you stay: on Drupal 7, when content must serve several channels, or when nobody wants to run PHP beside JavaScript. Drupal 7 is the clearest case: drupal.org says "an update can't simply be applied to an existing Drupal 6/7 site", content migrates into a new site, and the theme must be rebuilt ([Drupal.org migration overview](https://www.drupal.org/docs/upgrading-drupal/upgrading-from-drupal-6-or-7-to-drupal-8-and-newer), October 2026). A headless Drupal 11 build is a rebuild either way, so the back end is open.

- **Content serves several channels.** Drupal stores rich text as HTML; Sanity stores it as Portable Text, a JSON rich text format that apps and other sites render without parsing HTML ([Sanity's Drupal guide](https://www.sanity.io/blog/sanity-vs-drupal7), October 2026).
- **One language for the whole stack.** Headless Drupal keeps a PHP back end beside a JavaScript front end. Sanity hosts the content store, and Sanity Studio is an open-source React application ([Sanity Docs, Hosting and deployment](https://www.sanity.io/docs/studio/deployment), October 2026), so one JavaScript team covers both halves.
- **Editors want to work together.** Sanity's guide says Studio gives "real-time collaborative editing out of the box" ([Sanity's Drupal guide](https://www.sanity.io/blog/sanity-vs-drupal7), October 2026).

[The Drupal to Sanity playbook](https://deploi.ca/sanity/migration/drupal-to-sanity) covers the move itself.

## Which options belong on the shortlist for a Drupal site going headless?

Four options belong on the shortlist: Drupal 11 coupled, headless Drupal 11, Sanity and Strapi Community. Each wins one condition, shown in the fit row. Every cell except the fit row, which is Deploi's judgment, rests on vendor pages read 24 October 2026. The two Drupal columns share a back end and differ only in who renders pages. Sanity and Strapi both replace the back end, and differ on who hosts the database: Sanity hosts it, and Strapi runs on yours. Read the fit row first, because it decides.

**Each option wins one condition, named in the fit row**

| Criterion | Drupal 11 coupled | Headless Drupal 11 | Sanity | Strapi Community |
| --- | --- | --- | --- | --- |
| Hosting | Your servers or a Drupal host | Drupal host plus front-end host | Sanity hosts content; you host the front end | Your servers and database |
| Content model | Content types in the admin | Same as coupled | Schema in JavaScript code | Content-type Builder in the admin |
| Rich text storage | HTML | HTML | Portable Text (JSON) | Blocks or Markdown field |
| Fit | One site on Drupal 11.3 or a later 11.x release; marketers build pages in Drupal Canvas | Editors live in Drupal's back office | Content reuse, Drupal 7, no PHP | Leave Drupal, self-host the database |

Sources: [Drupal.org, Drupal CMS](https://new.drupal.org/drupal-cms); [Drupal.org, Multisite Drupal](https://www.drupal.org/docs/getting-started/multisite-drupal); [Drupal.org, Drupal CMS project](https://www.drupal.org/project/cms); [Drupal.org, Drupal Canvas](https://www.drupal.org/project/canvas); [Sanity, The Drupal developer's introduction to Sanity.io](https://www.sanity.io/blog/sanity-vs-drupal7); [Sanity Docs, Hosting and deployment](https://www.sanity.io/docs/studio/deployment); [Sanity Docs, Studio development](https://www.sanity.io/docs/studio/development); [Strapi, CMS Pricing & Plans](https://strapi.io/pricing-self-hosted); [Strapi Docs, Content-type Builder](https://docs.strapi.io/cms/features/content-type-builder). As of 24 October 2026.

## What does each option cost to license and to keep current?

Drupal and Strapi Community charge no license fees, Sanity charges per seat on its paid plans, and every option except Sanity leaves back-end upgrades to you. Drupal core has no license fees and is distributed under the General Public License (GPL) ([Drupal.org, About](https://www.drupal.org/about), October 2026). Strapi Community is free under the permissive MIT (Massachusetts Institute of Technology) License, which covers its Community Edition code outside the ee/ directory ([Strapi pricing](https://strapi.io/pricing-self-hosted); [Strapi license](https://github.com/strapi/strapi/blob/develop/LICENSE), October 2026). Sanity's Free plan is $0 and Growth is $15 per seat a month, billed monthly, as of October 2026 ([Sanity pricing](https://www.sanity.io/pricing); [Sanity for Startups](https://www.sanity.io/startups), October 2026).

**No option on the list is free to run, because each needs hosting and someone to apply upgrades**

| Criterion | Drupal 11 coupled | Headless Drupal 11 | Sanity | Strapi Community |
| --- | --- | --- | --- | --- |
| License and subscription | GPL, no license fees | GPL, plus a second host | Free $0; Growth $15 per seat a month | MIT, free to self-host |
| Upgrade burden | A Drupal major every two years | Drupal majors plus the front-end framework | Studio updates; Sanity runs the store | Strapi releases on your servers |

The upgrade row is Deploi's judgment from each vendor's release model. Hosting costs depend on your provider and are not published. Sources: [Drupal.org, About Drupal](https://www.drupal.org/about); [Drupal.org, Release process overview](https://www.drupal.org/about/core/policies/core-release-cycles/release-process-overview); [Sanity, Plans that scale with you](https://www.sanity.io/pricing); [Sanity, Sanity for Startups](https://www.sanity.io/startups); [Strapi, CMS Pricing & Plans](https://strapi.io/pricing-self-hosted); [Strapi, LICENSE (GitHub repository)](https://github.com/strapi/strapi/blob/develop/LICENSE). As of 24 October 2026.

## Which shortlisted options give editors per-content-type permissions and moderation?

Drupal gives editors per-content-type permissions and a moderation workflow in core, Strapi Community gives the permissions free but not the workflow, and Sanity reserves custom roles for its Enterprise plan, as of October 2026. Drupal's user guide lists node permissions per content type, such as "Recipe: Create new content" ([Drupal.org user guide](https://www.drupal.org/docs/user_guide/en/user-permissions.html), October 2026). Strapi's role-based access control is a "Free feature" with create, read, update, delete and publish rights for each content type, while Review Workflows is an Enterprise feature ([Strapi Docs, role-based access control](https://docs.strapi.io/cms/features/rbac); [Strapi pricing](https://strapi.io/pricing-self-hosted), October 2026). Sanity's Growth plan gives five fixed roles that reach every dataset, so none stops at a content type ([Sanity Docs, Roles](https://www.sanity.io/docs/content-lake/roles-concepts); [Sanity pricing](https://www.sanity.io/pricing), October 2026).

**Of the three, only Drupal ships a generally available moderation workflow without an enterprise plan**

| Criterion | Drupal 11, coupled or headless | Sanity | Strapi Community |
| --- | --- | --- | --- |
| Custom roles | Yes, by role and content type | Enterprise only | Yes, free |
| Editorial workflow | Content Moderation: Draft, Published, Archived | Drafts; Scheduled drafts on Growth; Workflows in early access | Draft and Publish; Review Workflows on Enterprise |

Sources: [Drupal.org, Content Moderation overview](https://www.drupal.org/docs/8/core/modules/content-moderation/overview); [Sanity, Plans that scale with you](https://www.sanity.io/pricing); [Sanity Docs, Roles and permissions](https://www.sanity.io/docs/content-lake/roles-concepts); [Sanity Docs, How early access works](https://www.sanity.io/docs/workflows/prerelease); [Sanity Docs, Scheduled drafts](https://www.sanity.io/docs/studio/scheduled-drafts); [Strapi, CMS Pricing & Plans](https://strapi.io/pricing-self-hosted); [Strapi Docs, Role-Based Access Control (RBAC)](https://docs.strapi.io/cms/features/rbac). As of 24 October 2026.

Roles and permissions in Sanity explains what the five fixed roles can and cannot do.

## Where is Sanity not the pick for a Drupal team?

Sanity is not the pick for a Drupal team going headless when policy requires a self-hosted content database, when editors need per-content-type permissions without an Enterprise budget, or when nobody will own a JavaScript codebase. Sanity hosts the Content Lake, and only Sanity Studio can be self-hosted ([Sanity's Drupal guide](https://www.sanity.io/blog/sanity-vs-drupal7), October 2026; [Sanity Docs, Studio development](https://www.sanity.io/docs/studio/development), October 2026), so a self-hosting rule takes Sanity off the list before features matter.

> **When Sanity is not the pick for a Drupal site going headless**
>
> - You must self-host the database, so pick headless Drupal 11 or Strapi Community, which runs on Postgres, MySQL or MariaDB under the MIT (Massachusetts Institute of Technology) License ([Strapi pricing](https://strapi.io/pricing-self-hosted); [Strapi license](https://github.com/strapi/strapi/blob/develop/LICENSE), October 2026).
> - Editors need permissions per content type and an Enterprise quote is out of budget, because Sanity reserves custom roles for Enterprise as of October 2026 ([Sanity Docs, Roles and permissions](https://www.sanity.io/docs/content-lake/roles-concepts)).
> - Your developers know Drupal and PHP, which means headless Drupal keeps their skills in use while Sanity hands them a new JavaScript codebase.

For a feature-by-feature view, see [Sanity against Drupal, row by row](https://deploi.ca/sanity/compare/sanity-vs-drupal), [Sanity against Strapi](https://deploi.ca/sanity/compare/sanity-vs-strapi), and whether to pick an open-source or a hosted headless content management system (CMS).

## Deploi's point of view

**Where we disagree.** The common pitch sells headless Drupal as the safe middle path: keep the CMS you know and get a modern front end. It isn't a middle path. You take on the whole cost of a new JavaScript front end and keep every Drupal major upgrade, one every two years. When the reason for going headless is content reuse or editor experience, you've already paid for the front end, and moving the content is the smaller step left. The opposite claim, that Drupal is hard to run headless, is out of date too: JSON:API is in core and needs no configuration.

**What we'd tell you to do first.** List the Drupal back-office features your editors actually use each week: permissions by content type, moderation states, Webform, Search API facets, multisite. A long list is the case for headless Drupal. A short list means those features aren't why you stay, and the back end is open.

**Where we would push back.** A team going headless only so marketers can build pages should try Drupal CMS 2.0 with Drupal Canvas on its coupled site first. Splitting the stack to get a page builder adds a front end you then have to staff.

## When this answer changes

- Drupal.org publishes an end-of-life date for Drupal 11
- Next.js for Drupal drops support for Drupal 10 or 11, or Kanopi Studios stops maintaining it
- Sanity offers custom roles below Enterprise, or changes the Growth price of $15 per seat a month
- Sanity Workflows leaves early access
- Strapi moves role-based access control or Review Workflows to a different plan

## How do Sanity and Drupal compare, feature by feature?

See the side-by-side on content modeling, rich text, permissions, workflow and hosting before you choose a back end. [Compare Sanity and Drupal](https://deploi.ca/sanity/compare/sanity-vs-drupal)

## Sources

1. [Drupal.org, JSON:API module](https://www.drupal.org/docs/core-modules-and-themes/core-modules/jsonapi-module), checked 24 October 2026
2. [Drupal.org, Upgrading from Drupal 6 or Drupal 7: Overview](https://www.drupal.org/docs/upgrading-drupal/upgrading-from-drupal-6-or-7-to-drupal-8-and-newer), checked 24 October 2026
3. [Drupal.org, Next.js project page](https://www.drupal.org/project/next), checked 24 October 2026
4. [Drupal.org, JSON:API Views](https://www.drupal.org/project/jsonapi_views), checked 24 October 2026
5. [Drupal.org, GraphQL](https://www.drupal.org/project/graphql), checked 24 October 2026
6. [Drupal.org, Drupal CMS](https://new.drupal.org/drupal-cms), checked 24 October 2026
7. [Drupal.org, Assigning Permissions to a Role](https://www.drupal.org/docs/user_guide/en/user-permissions.html), checked 24 October 2026
8. [Drupal.org, Content Moderation overview](https://www.drupal.org/docs/8/core/modules/content-moderation/overview), checked 24 October 2026
9. [Drupal.org, Multisite Drupal](https://www.drupal.org/docs/getting-started/multisite-drupal), checked 24 October 2026
10. [Drupal.org, About Drupal](https://www.drupal.org/about), checked 24 October 2026
11. [Drupal.org, Release process overview](https://www.drupal.org/about/core/policies/core-release-cycles/release-process-overview), checked 24 October 2026
12. [Kanopi Studios, Next.js for Drupal: Search API](https://next-drupal.org/guides/search-api), checked 24 October 2026
13. [Kanopi Studios, Next.js for Drupal: Webform](https://next-drupal.org/guides/webform), checked 24 October 2026
14. [Sanity, Plans that scale with you](https://www.sanity.io/pricing), checked 24 October 2026
15. [Sanity, Sanity for Startups](https://www.sanity.io/startups), checked 24 October 2026
16. [Sanity Docs, Roles and permissions](https://www.sanity.io/docs/content-lake/roles-concepts), checked 24 October 2026
17. [Sanity, The Drupal developer's introduction to Sanity.io](https://www.sanity.io/blog/sanity-vs-drupal7), checked 24 October 2026
18. [Sanity Docs, How early access works](https://www.sanity.io/docs/workflows/prerelease), checked 24 October 2026
19. [Sanity Docs, Scheduled drafts](https://www.sanity.io/docs/studio/scheduled-drafts), checked 24 October 2026
20. [Sanity Docs, Hosting and deployment](https://www.sanity.io/docs/studio/deployment), checked 24 October 2026
21. [Strapi, CMS Pricing & Plans](https://strapi.io/pricing-self-hosted), checked 24 October 2026
22. [Strapi, LICENSE (GitHub repository)](https://github.com/strapi/strapi/blob/develop/LICENSE), checked 24 October 2026
23. [Strapi Docs, Role-Based Access Control (RBAC)](https://docs.strapi.io/cms/features/rbac), checked 24 October 2026
24. [Strapi Docs, Content-type Builder](https://docs.strapi.io/cms/features/content-type-builder), checked 24 October 2026
25. [Sanity Docs, Studio development](https://www.sanity.io/docs/studio/development), checked 24 October 2026
26. [Drupal.org, Drupal Canvas](https://www.drupal.org/project/canvas), checked 24 October 2026
27. [Drupal.org, Drupal CMS project](https://www.drupal.org/project/cms), checked 24 October 2026
