Choose Strapi when you want to own the CMS: open source code you host, extend with your own server logic and pay no per-user licence for. Choose Contentful when you want a SaaS platform with environments, a large app ecosystem and governance features, and you accept plan limits and a vendor bill in return.
We hear this question from two kinds of teams. Some are on Contentful and have hit a plan ceiling on records, locales or seats. Others are starting fresh and want to know whether the free option will hold up. We cover both.
How do Strapi and Contentful differ in architecture?
Strapi is an application you deploy. A Strapi project is a Node.js codebase with an admin panel, your content type definitions and any custom code, running against PostgreSQL, MySQL, MariaDB or SQLite. You run it on your own servers or on Strapi Cloud. The source is in your repository, so you can read and change how any request is handled.
Contentful is a multi-tenant service. You get spaces, each with content types, entries and assets, and you reach them through separate APIs: delivery for published content, preview for drafts, management for writes, and a GraphQL endpoint. There is no server of yours in the path. The trade is that you work inside what the platform exposes, and custom behaviour runs elsewhere, in apps, webhooks or your own functions.
Strapi vs Contentful at a glance
| Strapi 5 | Contentful | |
|---|---|---|
| Delivery model | Self-hosted or Strapi Cloud | SaaS only |
| Source code | MIT core in your repo | Closed platform |
| Data location | Your database | Contentful’s infrastructure |
| Schema changes | Content-type Builder in dev, files in git | Web app or scripted migrations |
| Staging content | Separate instances plus data transfer | Environments and aliases inside a space |
| Server-side custom code | Controllers, services, middlewares, lifecycles | Apps, webhooks and external functions |
| Editor UI customisation | Admin extensions and plugins | App Framework |
| Main cost driver | Hosting and engineering time | Plan tier, users, locales, records |
How does content modelling compare?
Both use typed fields and references, so the mental model carries over. What differs is how you change the model and how far it can grow.
In Strapi, collection types, single types, components and dynamic zones describe pages and data. Components give you reusable field groups, such as an SEO block or an address, embedded in many types. Dynamic zones let editors stack sections in any order. The Content-type Builder writes your choices to project files, and limits are those of your database rather than a plan.
In Contentful, content types hold fields, and references link entries. Reusable groups are usually separate content types that you reference, rather than components embedded in the entry. Content type and record counts are capped per plan, which pushes teams to design the model tightly from day one. Schema changes in production are best done as migration scripts run through the CLI, so environments stay in step.
Localisation also works differently. Contentful puts locales on each field and counts them against your plan. Strapi 5 has internationalisation in its core with no locale fee, configured per content type and field.
What do editors work with?
Contentful’s web app is the same in every company, which helps when you bring in agencies or hire editors who have used it before. Scheduling, comments and tasks are part of the product on paid plans, and teams can add apps from its marketplace.
Strapi’s admin is plainer and closer to your model, since its menus are your content types. Draft and publish, roles and media are free. As of October 2026, Strapi’s self-hosted Growth plan adds Releases, Content History and Live Preview, and Enterprise adds Review Workflows, SSO and Audit Logs. If your Contentful setup relies on approval steps, budget for Strapi Enterprise or a custom workflow plugin.
How do APIs and extensibility compare?
Strapi exposes REST for every type, GraphQL through a plugin, and lets you write any endpoint you need inside the same server. Want a route that merges CMS content with prices from your ERP? It is a controller and a service in your codebase. Plugins can add admin pages and fields, and you control the release cycle.
Contentful’s APIs are stable and documented, with SDKs for most languages and a CDN in front of delivery. Extensions use the App Framework, which lets you build React apps that sit inside the editor or the sidebar. Logic that must run on save goes to webhooks calling your own functions. That keeps Contentful clean to operate but spreads your system over more places.
What does each cost to own?
As of October 2026, Strapi’s pricing pages list:
| Strapi option | Price as of October 2026 | Notes |
|---|---|---|
| Community, self-hosted | Free | MIT licence, unlimited users, RBAC |
| Growth, self-hosted | $45 a month, 3 users, $15 per extra user | Releases, Content History, Live Preview |
| Enterprise | Contact sales | Review Workflows, SSO, Audit Logs |
| Strapi Cloud Starter, Pro, Business | $35, $90 and $450 per project a month | Hosting, CDN, backups from Pro |
Contentful prices by plan, with limits on users, locales, content types and records, and the jump to Enterprise is where most of the cost lands. We compare current Contentful plan limits in Contentful vs Sanity.
The hidden cost on the Strapi side is operations: a database, backups, Node and Strapi upgrades, and on-call when the server fails. On the Contentful side it is the plan step, plus the engineering around webhooks and apps. For a small team with one product, Strapi is usually cheaper. For an enterprise with many spaces and compliance reviews, Contentful’s bill often buys work you would otherwise staff.
Migrating from Contentful to Strapi, or back
Most of our Strapi and Contentful conversations are about leaving Contentful. The route is predictable:
- Export the space with the Contentful CLI to JSON.
- Rebuild content types in Strapi, turning referenced helper types into components where it makes the model simpler.
- Write an import script that creates entries through Strapi’s Document Service, maps references to relations and Contentful rich text to Blocks, and uploads assets.
- Replace the Contentful SDK in the front end with Strapi API calls, keeping URLs the same.
- Freeze content, run the final import and check redirects.
Going from Strapi to Contentful is the same in reverse, with one extra step: fit your model inside the plan’s content type and record limits. Our CMS migration checklist covers the SEO side.
Proof
We have not published a Strapi or Contentful case study yet. The import scripts, rich text conversion and redirect mapping above are the same steps we used on our published headless CMS builds, which ran on Payload.
Which one we would pick for whom
- Startups and mid-size companies watching licence spend: Strapi Community or Growth.
- Enterprises with many brands, spaces and a compliance team: Contentful, for environments and governance on one vendor contract.
- Products that need server logic next to content: Strapi.
- Teams with no one to run servers and a budget for SaaS: Contentful, or Strapi Cloud if the model suits you.
- Contentful customers hitting record or locale limits: a scoped migration to Strapi is worth pricing.
See our Strapi development services and Contentful development pages for how we build on each. You can also hire a Strapi developer or hire a Contentful developer to work inside your team. For more platform options, start from our headless CMS development page.