Storyblok and Drupal answer different questions. Storyblok asks: how fast can a marketer publish a page that looks exactly like the mockup, without a developer in the room? Drupal asks: how much content, in how many languages, with how many relationships and approval steps, can this system hold without falling over? Both questions matter. Few teams need the best answer to both at once, which is exactly why this comparison exists.
Storyblok, founded in 2017 in Linz, Austria, built its entire product around one idea: a visual editor good enough that marketers stop asking engineering for page changes. It succeeded — its editor is the reference point competitors get measured against. Drupal, in development since 2001, built the opposite thing: an entity and field system that can model almost any content relationship, with revisions, moderation, and localization baked into core, and no visual editor worth the name until very recently.
This article is for a buying committee with both a marketing lead who cares about time-to-publish and a technical lead who cares about content architecture, permissions, and what happens to the data in five years. If you're choosing based on visual polish alone, skip to the verdict — Storyblok wins that outright. If you're choosing based on what the content model can survive, keep reading.
The short answer
- Storyblok has the best visual editing experience in headless CMS, full stop — nothing here is close.
- Drupal models relational content — cross-references, taxonomies, complex hierarchies — better than Storyblok's component-tree structure ever will.
- Storyblok's pricing punishes growth: seat caps and API-request metering mean the bill climbs as your team and traffic do.
- Drupal's permissions, moderation, and localization are in core; Storyblok's equivalents are newer, thinner, or gated behind custom-priced tiers.
- If your team is mostly marketers publishing pages, Storyblok will get you live faster than Drupal will.
- If your content has real relationships — products to categories, articles to authors to campaigns — Drupal holds that shape and Storyblok's bloks strain under it.
Side by side
| Drupal | Storyblok | |
|---|---|---|
| Type & license | Open source, GPL-2.0-or-later | Proprietary SaaS, no self-hosting |
| Maturity | First released 2001; Drupal 11 current | Founded 2017; mature product, younger company |
| Content modeling | Entity/field system, entity references, taxonomy, Paragraphs, revisions on every entity | Component tree ("bloks"), strong for pages, weaker for deeply relational data |
| APIs | JSON:API in core since 8.7 (2019); REST in core; GraphQL via contrib (graphql_compose) |
REST (Content Delivery + Management API) on all tiers; GraphQL gated to Premium |
| Editing & visual editing | Admin UI modernized via Claro/Gin and Drupal CMS; Drupal Canvas is new and less mature | Category-defining Visual Editor: true WYSIWYG, live responsive preview, Component Composer, Figma Connect |
| Localization | Content, config, and interface translation in core; each translation is its own revision | Field- and folder-level i18n; Starter tier capped at 2 locales |
| Workflow & moderation | Content Moderation + Workflows in core; role-based transitions | Custom draft/review/publish workflows; component-level comments; FlowMotion agent orchestration |
| Hosting & operations | Self-host, Acquia, Pantheon, Platform.sh, decoupled.io | Fully managed SaaS only; ISO 27001 certified |
| Pricing model | Free software; you pay for hosting and maintenance | Seat-capped tiers plus metered API requests; $0–$349/mo published, custom above |
| Ecosystem & lock-in | ~50,000 contrib modules; large agency base; standard, portable database/config | Proprietary data model; App Directory marketplace; no export path off the platform |
| AI agents / MCP | No native MCP; AI features are contrib or platform-dependent (e.g. decoupled.io) | Native MCP server; FlowMotion agent workflows; AI credits bundled per tier |
| Best for | Complex, relational, multilingual, long-lived content architectures | Marketing sites and campaigns where visual editing speed is the priority |
Content modeling
Drupal's content model is entities and fields. A content type is a bundle of fields — text, reference, media, taxonomy term — and any entity can reference any other entity. An article can reference an author entity, which references a department taxonomy term, which has its own revision history. Paragraphs let you build component-style content inside a field when you want that flexibility, but the underlying system is relational, not tree-shaped. This is the architecture government sites, universities, and large publishers lean on when content has to interconnect for years.
Storyblok's content model is bloks: nestable, reusable components that compose into a page, in a tree. This is a genuinely good fit for component-driven frontends — a hero blok, a card grid blok, a testimonial blok, assembled the way your Next.js or Nuxt components are assembled. Editors think in the same units developers build with. Where it strains is content that isn't page-shaped: a product catalog with cross-cutting categories, a document library with citations between documents, anything where the real structure is a graph and not a tree. You can approximate relationships with reference fields in Storyblok, but the component-tree orientation is the model's center of gravity, and Drupal's entity/reference system is built for exactly the case Storyblok's isn't.
Developer experience and APIs
Drupal ships JSON:API in core, with zero configuration — every entity gets an endpoint the moment you create the content type. REST is in core too. GraphQL is not in core; you add the contributed graphql_compose module, which generates a schema from your content types. It works well but it's a dependency you manage, not a first-party guarantee.
Storyblok's REST APIs — Content Delivery for reads, Management for writes — are available on every tier, including the free Starter plan, and are well-documented with framework SDKs for Next.js, Nuxt, and SvelteKit. GraphQL exists but is gated to the Premium tier, which is custom-priced. If your frontend architecture is GraphQL-first and you're not ready for an enterprise-priced Storyblok plan, you're building against REST whether you planned to or not. Drupal's inverse trade-off — JSON:API free everywhere, GraphQL as an add-on module — is arguably the more honest version of the same compromise: neither vendor gives you both APIs, free, forever, without a catch.
Storyblok's native MCP server is a real developer-experience advantage right now: point an AI agent at your Storyblok space and it has structural awareness out of the box. Drupal has no core MCP equivalent — that capability currently lives at the platform layer, not in Drupal itself.
Editorial experience
This is where the comparison stops being close. Storyblok's Visual Editor is the benchmark other headless CMSs get compared against, including Drupal's own answer to the problem. It's true WYSIWYG: editors see the actual rendered page, live, with responsive preview across desktop, tablet, and mobile, and edit components in place. Component Composer lets teams build new bloks without a developer. Figma Connect pulls design directly into the editing surface. FlowMotion orchestrates AI-agent-assisted content workflows on top of the standard draft/review/publish pipeline, and component-level comments keep review conversations attached to the content itself.
Drupal's answer is Drupal Canvas (formerly Experience Builder), shipped with Drupal CMS 2.x. It's a genuine visual page and layout builder and the right direction for Drupal. It is also new — Drupal CMS 2.0 only reached general release in early 2026 — and not yet as mature as an editor that's been Storyblok's singular focus since 2017. If a marketer's day-to-day page-building experience is the deciding factor: Storyblok wins it, and Drupal Canvas has ground to make up.
Where Drupal pulls ahead is in what happens after a page is drafted. Content Moderation and Workflows are in core, with arbitrary custom states and role-based transitions, not a fixed pipeline. Permissions are granular and role-based at the field and content-type level. And every translation of every piece of content is its own revision with its own moderation state — a multilingual editorial team can review a French translation independently of the English source, with full history on each. Storyblok's workflows are customizable and its i18n is solid, but the Starter tier caps you at two locales, and neither localization nor permissions in Storyblok reach the same depth as Drupal's, which had two decades of large multilingual deployments to get there.
Pricing and total cost of ownership
Worked example — 10 editors, 3 locales, 50,000 entries, 2 million API calls/month.
Storyblok's Growth tier ($99/month) supports 5 seats (max 10) and 1 million API requests — short on both for this team. Growth Plus, at $349/month, covers 15 seats (max 20) and 4 million requests, so this team lands there: roughly $4,200/year, before custom apps or extra AI credits, and before considering that crossing another seat or request threshold means negotiating custom Premium pricing. Three locales clear the Starter tier's 2-locale cap easily, but this team was never going to fit on Starter anyway.
Drupal has no seat caps and no per-request metering — 10 editors and 2 million API calls cost the same as 2 editors and 200,000. Drupal's cost is hosting plus maintenance: cloud infrastructure typically runs $50–$500/month for a mid-size site, plus developer time for updates, security patches, and module maintenance — a few hours a month at minimum, more with custom contrib or self-managed scaling. That's a range, not a number, because maintenance load varies with team skill, hosting choice, and how much custom code you carry. Acquia or Pantheon absorb the operational burden at enterprise pricing, often $1,000s/month; a self-managed setup can sit near the low end if you already have the DevOps capacity.
Storyblok's bill grows with your team and traffic; Drupal's grows with your infrastructure and engineering time. Which is cheaper depends on which axis your organization controls better.
Operations, hosting, and security
Storyblok is SaaS only — there is no self-hosting option, at any tier. That's the trade for zero infrastructure management: no servers, no updates, no patching, ISO 27001 certification backing the platform's security posture, and SLAs that scale with tier (97% on Growth, up to 99.99% on Elite). You give up control over the runtime in exchange for giving up the operational burden entirely.
Drupal, self-hosted, is the opposite trade. You run PHP, Composer, a database, caching, and you apply security updates yourself — Drupal's Security Team publishes advisories on a regular cadence, but acting on them is your job unless you're on a managed platform. The admin UI was genuinely dated for years; Claro, Gin, and Drupal CMS have modernized it substantially, but "modernized" is recent history, not a decade of polish. There's no real-time collaborative editing in core. If you don't want any of that operational surface, Drupal on Acquia, Pantheon, or decoupled.io moves the burden to a vendor the same way Storyblok does — but that's a hosting choice layered on top of Drupal, not something Drupal gives you by default.
Lock-in and exit
Storyblok's content lives in a proprietary structure on a proprietary platform. You can export via the API, but there's no self-hosted Storyblok to move to — leaving means re-modeling your content somewhere else. Seat caps and API-request tiers also mean your contract terms change as you grow, which is a soft lock-in of its own: renegotiating pricing is friction, even if the data itself weren't.
Drupal's lock-in profile is close to zero by design. It's GPL software; your database and configuration are yours; you can move hosts, fork contrib modules, or self-host tomorrow without anyone's permission. The cost of that freedom is that nobody manages it for you unless you choose a managed platform — and even then, standard Drupal underneath means you can leave the platform without leaving the software.
Choose Storyblok if…
- Your team is mostly marketers and content editors who need to build and preview pages without developer involvement.
- Your frontend is component-driven and page-shaped, not deeply relational.
- You want the most mature visual editing and Figma-to-content workflow available in headless CMS.
- You're comfortable with a proprietary platform and predictable seat/tier pricing at your current scale.
Choose Drupal if…
- Your content has real relationships — cross-references, taxonomies, hierarchies — that a component tree can't hold cleanly.
- You need fine-grained permissions, in-core moderation workflows, or per-translation revision history.
- You have more than a handful of editors and don't want a bill that scales with seats or API calls.
- Owning your data and having a self-hosting exit path matters more than the smoothest possible editing UI on day one.
The best of both worlds
Decoupled.io is managed headless Drupal: JSON:API and GraphQL on every tier, an auto-generated typed TypeScript client, and Puck — a drag-and-drop visual page builder with live preview — included from the free tier up. You get Drupal's entity/reference content model and in-core moderation and localization, without running PHP, Composer, or security updates yourself; those are handled automatically. Pricing is flat: Free, $20/month Starter, $60/month Pro, with no per-seat or per-API-call charges at any tier, so a 10-editor team costs the same as a 2-editor one.
What it doesn't match: Storyblok's Visual Editor is still ahead of Puck. Puck is a capable drag-and-drop builder with roughly a dozen components and live preview; it is not the deep, Figma-connected, component-composing editor Storyblok has spent since 2017 building. If the editing experience itself is the deciding factor and you need it today, that's a real gap. See the full breakdown at Decoupled.io vs Storyblok and current plans at pricing.
FAQ
Can I migrate from Storyblok to Drupal or decoupled.io? There's no packaged migration tool for this path yet. Storyblok's Management API lets you export your bloks and content structure, and Drupal's entity/field system can accommodate most component-based content patterns through Paragraphs, but the mapping is manual work. Talk to a Drupal or decoupled.io team before committing to a migration timeline.
Is Drupal Canvas ready to replace Storyblok's Visual Editor? Not yet. Drupal Canvas, shipped with Drupal CMS 2.x in early 2026, is a real visual page builder and the right direction for Drupal, but it's new and less mature than an editor Storyblok has refined since 2017. If visual editing maturity is the deciding factor today, Storyblok is ahead.
How much does each actually cost at scale? Storyblok's cost climbs with seats and API requests — a 10-editor, high-traffic team likely lands on the $349/month Growth Plus tier or negotiates custom Premium pricing. Drupal's cost is hosting ($50–$500/month for mid-size sites) plus developer maintenance time, with no caps on seats or requests, so cost scales with infrastructure and engineering effort rather than team size.
Does GraphQL matter for this decision?
Only if your frontend architecture requires it now. Storyblok gates GraphQL to its custom-priced Premium tier; Drupal doesn't include GraphQL in core, requiring the contributed graphql_compose module instead. Neither gives you free, first-party GraphQL — decoupled.io is the exception, including GraphQL on every tier.
Part of the Drupal vs the headless CMS field series.