Craft CMS can be run headless, so you are not giving up headless if you use Craft. The real question is whether the content modeling and content authoring tools in Strapi or Contentful meet your requirements in a way that Craft CMS doesn’t – and what the trade-offs are, especially around per-seat costs and long-term pricing. Craft has shipped a built-in GraphQL API since 2019. You do not have to pick between “traditional” and “headless.”
Every top-ranking result for this query treats Craft CMS and headless CMS as mutually exclusive categories. Strapi’s own comparison page omits Craft’s GraphQL and headless capabilities entirely. Contentful comparisons frame it as “modern API-first vs. legacy traditional.” This framing is factually wrong.
Craft CMS operates in three distinct modes: traditional (Twig templates), fully headless (GraphQL or Element API), or hybrid (both in one project). This is not a roadmap promise – it has been production-ready since Craft 3.3 in July 2019, as Andrew Welch’s GraphQL tutorial on nystudio107 demonstrates in detail.
The headless CMS market is projected to grow from $973.8 million in 2025 to $7.1 billion by 2035, a 22.6% compound annual growth rate (Future Market Insights). That growth is real. But traditional CMS platforms still power 43% of all websites (Storyblok CMS Statistics, 2025). The market is expanding, not replacing.
As the official Craft CMS training partner, CraftQuest has trained over 1,000 developers on both approaches. I have no agency services to sell. The framework here is based on project requirements, not vendor marketing.
The way I would evaluate it is this: does the content modeling and the content authoring tools in Strapi or Contentful meet your requirements in a way that Craft CMS doesn’t? What do they offer that is better than what Craft can offer? Start there, and then look hard at the trade-offs.
You need both templates and an API. This is Craft’s most distinctive advantage. Render marketing pages with Twig, power a React search widget with GraphQL, feed a mobile app from the same content – one installation, one content model, no duplication. As Happy Cog documented, Craft can power omnichannel delivery alongside traditional templating. No dedicated headless CMS offers this – Contentful and Strapi are API-only, so if you ever need a server-rendered page, you are building a separate frontend application.
You want predictable, long-term costs. One thing you want to look at is per-seat cost in Contentful and Strapi. In Craft CMS, once you are on the Pro license, you can have as many users as you want with no additional ongoing costs. Craft CMS Pro costs $299 per project per year with unlimited API calls, self-hosted. Contentful’s free tier caps at 5 users and 1 million API calls per month (Contentful pricing), with enterprise pricing that escalates steeply with usage, environments, and seats.
“Your only ongoing costs with Craft CMS are the annual license renewal, which is minimal, plugin renewal licenses, which are also minimal, and then your hosting costs. Those can really depend on the traffic you have for your site, but they can also be minimal – in the hundreds of dollars per year depending on your site traffic.” – Ryan Irelan, CraftQuest
As Convergine’s comparison notes, Craft’s straightforward licensing stands out against Contentful’s unpredictable cost trajectory. Project out the ongoing costs. How many team members need seats in Contentful or Strapi? What does that cost versus the ongoing cost for Craft CMS? That is the math I would do and that I would present to stakeholders making the decision on which way to go. Content modeling depth matters. Craft’s Matrix fields, entry types, and flexible relations allow richer, design-aware content structures than Contentful’s more rigid content types or Strapi’s component-based approach. For complex editorial workflows – courses with episodes, instructors, topics, and cross-links – Craft’s content modeling is significantly more expressive. You want data ownership and portability. Craft is self-hosted. Your content lives in your database, on your server. SaaS platforms like Contentful store your content on their infrastructure behind proprietary APIs. If Contentful changes pricing – and they have, multiple times – or sunsets a feature, migration is painful. With Craft, you can switch hosting providers without touching your CMS.
I would not be giving you honest advice if I did not tell you when a dedicated headless CMS genuinely makes more sense.
Your team has zero PHP or server experience and only knows JavaScript. Strapi is built on Node.js. If your entire team is JavaScript-only, the operational overhead of maintaining a PHP application may not be justified. Contentful removes server management entirely as a SaaS product. If your organization has no DevOps capacity and needs a fully managed backend, that matters.
In practice, most pure JavaScript teams don’t evaluate Craft CMS at all because PHP isn’t as popular among younger developers. The PHP requirement is a genuine filter — it narrows Craft’s audience before the conversation even starts. That said, for teams that do have PHP experience or are willing to work with it, the barrier disappears quickly once they see Craft’s content modeling capabilities.
The project is 100% API-driven with no server-rendered output. If there will never be a Twig template, a server-rendered page, or a hybrid need, a purpose-built headless CMS can be simpler to reason about. No unused template layer, no PHP server to maintain. The clearest example: a mobile-only application where the CMS feeds an iOS and Android app and nothing else.
You need a managed SaaS with zero infrastructure responsibility. Contentful, Sanity, and Storyblok handle hosting, scaling, CDN, and uptime for you. Craft requires you to manage – or pay someone to manage – server infrastructure. For non-technical organizations without a developer on staff, a managed headless CMS may be the pragmatic choice.
| Feature | Craft CMS | Contentful | Strapi |
|---|---|---|---|
| Architecture | Hybrid: templates + API | API-only (SaaS) | API-only (self-hosted or cloud) |
| Built-in GraphQL | Yes, since 2019 | Yes | Yes |
| Template layer | Twig (built-in) | None | None |
| Pricing | $299/year, unlimited API calls | Free tier capped; usage-based scaling | Free self-hosted; cloud is usage-based |
| Hosting | Self-hosted | Fully managed SaaS | Self-hosted or Strapi Cloud |
| Content modeling | Matrix fields, flexible relations | Structured content types | Component-based |
| Data ownership | Full (your database, your server) | Vendor-controlled | Full (self-hosted) or vendor (cloud) |
| Language | PHP | N/A (SaaS) | Node.js |
The hybrid approach is underused. Most developers think they must choose traditional or headless. The most practical architecture for most projects is Twig templates for pages with selective GraphQL for interactive components. I cover this in depth in our related guide on whether to use Craft CMS headless or stick with Twig templates.
Content modeling is what pulls people toward Craft. Once developers hit the limitations of rigid content types or component-based modeling in dedicated headless platforms, the flexibility of Craft’s Matrix fields and relations becomes the pull factor. This connects back to the evaluation I described earlier: does Strapi or Contentful offer something in content modeling that Craft doesn’t? In my experience, it is usually the other way around.
The GraphQL capabilities are a surprise. Many developers evaluating Craft do not know it has a built-in GraphQL API with full schema customization and token-based access control. This is a discovery problem, not a feature problem. Craft can be run headless. It has been able to for years. It just does not get marketed the way dedicated headless platforms market themselves.
Try Craft’s built-in GraphQL API with a free Solo license. Set up a local install and query your content in minutes. Andrew Welch’s GraphQL tutorial on nystudio107 walks through the full technical setup, and the CraftQuest headless Craft course covers both Element API and GraphQL with real project examples.
New to Craft CMS? The free Craft CMS Quick-Start Guide will get you up and running, and The Craft Mindset covers the philosophy behind Craft’s content modeling – essential context before choosing between traditional, headless, or hybrid.
If you are evaluating a switch from Contentful or Strapi, the Craft CMS GraphQL documentation is the fastest way to see what is possible. Install it, model your content, and run a query – thirty minutes will tell you more than any comparison page.
Yes. Craft CMS has included a built-in GraphQL API since version 3.3, released in July 2019. It auto-generates schemas from your content models, supports token-based access control, and provides full query and mutation support in Craft 4 and later. No plugins are required.
Craft CMS Pro costs $299 per year per project with unlimited users and unlimited API calls, self-hosted. Contentful’s free tier caps at 5 users and 1 million API calls per month (Contentful pricing), with pricing that scales steeply at enterprise usage levels. Craft requires separate hosting costs (typically $10-50/month for most projects), while Contentful includes hosting but escalates pricing significantly as you grow. One critical factor: Contentful and Strapi charge per seat, so project out how many team members need access and what that costs over time versus Craft’s flat annual license.
Yes. Craft released official Next.js and Astro starters in 2025, and Nuxt and SvelteKit work well via Craft’s GraphQL API. The Craft CMS GraphQL documentation covers setup for JavaScript frontend frameworks. For a deeper comparison of headless versus template-based approaches, see our guide on Craft CMS headless vs. Twig templates.
Strapi is API-only with no template layer, built on Node.js, and open source. Craft CMS offers both Twig templates and a GraphQL API from one installation, is built on PHP, and costs $299 per year for Pro with unlimited users. The key differentiator is Craft’s hybrid flexibility – the ability to serve content through templates, an API, or both from the same project – versus Strapi’s API-only approach.
Self-hosting gives you data ownership, predictable costs, and no vendor lock-in, but requires server management. A managed SaaS like Contentful removes infrastructure work but introduces usage-based pricing and platform dependency. The right choice depends on your team’s DevOps capacity and how much control you need over your content and costs. For most teams with even basic server experience, self-hosted Craft CMS offers better long-term value.