Which open-source headless CMS fits your situation
For API-first content, the choice between Strapi, Directus and Payload usually comes down to three conditions: the license terms your legal team will accept, the database you already run, and whether your front end is a Next.js codebase. Strapi fits teams that want a code-first, Node.js CMS with a large admin ecosystem and can accept that some `ee/` directories fall under a proprietary Enterprise license. Directus fits teams that already have a SQL database they want to keep and that want the schema to drive the API. Payload fits teams whose web application is already built on Next.js and who want the CMS installed directly into the /app folder. The licenses differ in ways that matter for different organizations: Strapi's restriction applies to the Enterprise code you choose to use, while Directus's Monospace Sustainable Core License restricts a Competing Use against Monospace's paid offerings, which matters mainly to companies that sell a product that overlaps with Directus.
Before you shortlist, confirm the terms with counsel rather than relying on summaries. For Strapi, check which features you need and whether they sit in the MIT Expat core or in Enterprise code; the Strapi LICENSE file in the strapi/strapi repository is the starting point. For Directus, have counsel read the Directus license against your product and any services you plan to offer. For Payload, the MIT license is the simplest of the three, but confirm your database choice early, because Payload supports MongoDB, PostgreSQL and SQLite and your hosting team will need to operate whichever you pick. Your existing stack is often the deciding factor: if your data already lives in PostgreSQL, MySQL or SQL Server, Directus is built to connect to it, while Strapi 5 does not support MongoDB or other NoSQL databases.
How Strapi, Directus and Payload differ for your team
Strapi defines content types in its own Content-Type Builder and in code, so a team can model content through the admin UI and keep the results in the project files. Strapi 5 supports MySQL, MariaDB, PostgreSQL and SQLite, and it does not support MongoDB or other NoSQL databases. It runs only on Active or Maintenance LTS Node.js versions, so your Node.js upgrade schedule becomes part of the platform plan. It exposes REST and GraphQL APIs on its self-hosted plans, and the admin panel can be extended with custom plugins.
- Data modeling: Content types are defined in the project and are versioned with the codebase.
- Databases: Choose from MySQL, MariaDB, PostgreSQL or SQLite. MongoDB is not an option.
- API surface: REST and GraphQL are included in all self-hosted plans.
- Admin customization: Plugins extend the admin panel. Audit logs and review workflows require the Enterprise plan.
- Identity: SSO for administrators is an add-on on Growth and included in Enterprise.
Check which Node.js version your security baseline allows, and confirm which plugins your team needs are under the MIT Expat license or the Enterprise license.
Directus starts from an existing SQL database rather than creating its own content schema. It connects through the DB_CLIENT setting and supports PostgreSQL, MySQL, MariaDB, Oracle Database, Microsoft SQL Server, SQLite and CockroachDB. This suits teams whose data already lives in a relational database and whose DBAs must control schema changes. REST and GraphQL APIs are generated from the database schema, and Studio gives non-technical teammates a management interface.
- Data modeling: The schema comes from the database you connect to, so existing tables can be exposed directly.
- Databases: The widest SQL list among the three, including Oracle Database and Microsoft SQL Server.
- API surface: REST and GraphQL are generated from the schema.
- Admin customization: Studio serves non-technical editors. Changes to the admin experience are made in configuration and extensions.
- AI features: A native MCP server and an embedded AI Assistant follow the same role-based permissions as human users.
Check the license terms before you build a product on Directus, because the Monospace Sustainable Core License restricts Competing Use against Monospace's paid offerings. Confirm this with counsel for your use case.
Payload is a Next.js native CMS. It installs directly into an existing Next.js /app folder, and it is MIT licensed. Collections and fields are defined in TypeScript code, and Payload generates TypeScript types from them automatically. Payload supports MongoDB, PostgreSQL and SQLite. Its built-in authentication lets admin and customer users live in the CMS itself, and it includes versions and drafts, localization, field-level access control, hooks and live preview.
- Data modeling: Collections and fields are code-first, so the schema is reviewed in pull requests.
- Databases: MongoDB, PostgreSQL and SQLite are supported.
- API surface: Payload runs inside the Next.js application, and typed code is the main integration point. Confirm which API styles your front end needs.
- Admin customization: The admin panel is a customizable React application that lives in the same codebase.
- Hosting: Payload can deploy to Vercel, to Cloudflare Workers with R2 and D1, or be self-hosted anywhere.
Payload is a good fit for teams that already run Node.js and React, but the platform is bound to that stack. Confirm which Node.js and Next.js versions your hosting plan supports, and check the v4.0.0 beta line before you plan an upgrade path.
Which headless CMS to pick by scenario
This table maps common headless CMS requirements to the platform that fits each one, with the supplied fact behind each choice. Read each row as a condition: the fit holds only while the stated requirement is true for your team. The main takeaway is that database, language and admin-panel needs decide the shortlist more than feature lists do.
| Scenario | Best fit | Why |
|---|---|---|
| You must front an existing SQL database with an API | Directus | Directus connects to an existing SQL database through its DB_CLIENT setting and supports PostgreSQL, MySQL, MariaDB, Oracle, SQL Server, SQLite and CockroachDB. This holds if your schema must stay in place and you can accept that Directus generates REST and GraphQL APIs from it. |
| Your Next.js team wants content types defined in TypeScript code | Payload | Payload is a Next.js native CMS that installs into an existing /app folder and generates TypeScript types from code-defined collections and fields. This holds if your developers prefer schema changes through code review rather than a visual builder. |
| You need MongoDB as the primary database | Payload | Payload supports MongoDB, PostgreSQL and SQLite. Strapi 5 does not support MongoDB or other NoSQL databases, and Directus lists SQL databases only. This holds if MongoDB is a hard requirement from your data platform team. |
| A non-technical editorial team needs a management interface out of the box | Directus | Directus provides Studio, a management interface built for non-technical teammates, on top of the generated API. Strapi's admin panel and Payload's customizable React admin panel also serve editors, but Payload's admin is built by developers. This holds if editors will work in the panel daily without developer support. |
| You must avoid Enterprise-only features | Strapi Community or Payload | Strapi's Community Edition is MIT licensed, but audit logs, review workflows and enterprise plugins require an Enterprise plan, and content history and releases start at Growth. Payload is MIT licensed and lists versions and drafts, localization and field-level access control among its built-in features. This holds if you confirm with each vendor that your required features sit in the free tier. |
| You need admin SSO through an identity provider | Strapi | Strapi SSO covers administrator login to the admin panel through an identity provider such as Microsoft Azure Active Directory, but it is an add-on on Growth and included in Enterprise. End-user authentication is handled separately by the Users and Permissions plugin. This holds if SSO for editors is a budget line you can accept as a paid add-on. |
| Your license must stay permissive for a product you resell or embed | Strapi Community or Payload | Strapi code outside ee/ directories is MIT Expat, and Payload is MIT licensed. Directus uses the Monospace Sustainable Core License, which restricts a Competing Use against Monospace's paid offerings. This holds if your legal review confirms that your use is not a Competing Use under the Directus license. |
| You need to upgrade from an older major version soon | Directus or Payload | Strapi v4 reached end of life on April 30, 2026, so teams still on v4 face a v4 to v5 migration with codemods and a backup-first process, since downgrading is not supported. Directus and Payload have no equivalent migration in the supplied facts, so confirm their upgrade paths directly. This holds if your current version is already in a supported line. |
| You need a managed option alongside self-hosting | Strapi | Strapi Cloud is listed at 35 US dollars per month per project for Starter, with a 99.9% uptime SLA on Business at 450 dollars per month (Strapi Cloud pricing page). Directus offers Directus Cloud and Payload can deploy to Vercel or Cloudflare. This holds only if the cloud pricing and SLA match your procurement terms. |
What the license terms mean for paid features and redistribution
Strapi and Payload are the simpler cases, but they are not identical. Strapi's Community Edition code outside the ee/ directories is provided under the MIT Expat license, while code in ee/ directories carries a proprietary Enterprise license. Features the Strapi documentation marks as Enterprise, such as audit logs and review workflows, therefore fall under a different license from the core. The Strapi LICENSE file also ties the MIT grant to having no Strapi Cloud account, which is a condition to confirm with counsel if you plan to mix managed and self-hosted use. Payload is MIT licensed, per its GitHub repository. Before you build, list which directories your build pulls in and which features your plan includes, and record that list in the architecture decision.
Directus sits in a different category. It is licensed under the Monospace Sustainable Core License 1.0 (MSCL-1.0-GPL), which permits any use except a Competing Use against Monospace's paid offerings. Each version converts to GPL-3.0 four years after release. This makes Directus *source-available*. It does not meet the Open Source Initiative definition of open source, and your procurement and policy documents should say so in those terms. Directus also changed to BSL-1.1 in April 2023 and replaced that license in 2026, so any terms you reviewed in an earlier pilot may no longer apply. Check the Directus license terms for the exact version you plan to deploy, and keep a copy of the license file with your build record.
Redistribution and hosting for others is where license terms matter most. Ask counsel to read the Competing Use definition against your product. Whether an internal platform, a client-facing service or an embedded product competes with Monospace's paid offerings is a question of fact and drafting, and this page does not settle it. Also ask counsel which obligations apply if you modify the code, distribute builds to customers or resell hosting. Confirm with each vendor which features are paid, since that determines what you must buy as your use grows. Record the answers before you sign a statement of work, because moving a headless CMS later means rebuilding content models, access rules and API integrations.
Capability comparison across Strapi, Directus and Payload
This table compares licensing, databases, APIs, admin customization, authentication, content workflow and deployment targets across Strapi, Directus and Payload. Read each row as a question to answer for your own stack, and treat any cell marked confirm with vendor as a point to verify before you shortlist a platform.
| Capability | Strapi | Directus | Payload |
|---|---|---|---|
| License | MIT Expat for Community code outside ee/ directories, proprietary Enterprise license for ee/ directories | Monospace Sustainable Core License 1.0, converting to GPL-3.0 four years after each release | MIT |
| Paid tiers | Growth and Enterprise self-hosted plans, with Growth listed at 45 US dollars per month (Strapi pricing page) | Directus Cloud is the managed service, confirm paid self-hosted features with vendor | Confirm paid offerings and support terms with vendor |
| Supported databases | PostgreSQL, MySQL, MariaDB and SQLite, no MongoDB or other NoSQL | PostgreSQL, MySQL, MariaDB, Oracle, Microsoft SQL Server, SQLite and CockroachDB via DB_CLIENT | MongoDB, PostgreSQL and SQLite |
| API types | REST and GraphQL included in all self-hosted plans | REST and GraphQL generated from the database schema | Confirm REST and GraphQL support and scope with vendor |
| Native MCP server and AI Assistant | Not applicable | Yes | Not applicable |
| Admin panel customization | Confirm plugin and admin extension depth with vendor | Studio admin interface aimed at non-technical teammates | Customizable React admin panel |
| Built-in user authentication | End-user login handled by the Users and Permissions plugin | Confirm user and role model with vendor | Built-in authentication for admin and customer users |
| SSO for admin login | Growth add-on or included in Enterprise, administrator login only | Confirm SSO tiers with vendor | Confirm SSO options with vendor |
| Versions and drafts | Content history and releases from the Growth plan | Confirm versioning behavior with vendor | Built-in versions and drafts |
| Localization | Confirm localization options with vendor | Confirm localization options with vendor | Built-in localization |
| Access control | Role-based permissions, audit logs and review workflows on Enterprise | Role-based permissions that also govern MCP and AI Assistant actions | Field-level access control and document and field hooks |
| TypeScript type generation | Confirm with vendor | Confirm with vendor | Generated automatically from code-defined collections and fields |
| Deployment targets | Self-hosted on Node.js, Strapi Cloud as the managed option | Self-hosted with Docker or Directus Cloud | Vercel, Cloudflare Workers with R2 and D1, or self-hosted anywhere |
| Latest release | v5.58.0, October 14, 2026 | 12.5.0, October 7, 2026 | v3.91.0, October 15, 2026, with v4.0.0 beta in progress |
Strapi, Directus and Payload in brief
Each card names one platform, its license, the current release and the condition under which it is the stronger choice. Read the cards together, because license terms, database support and hosting models differ more than the feature lists suggest.
Strapi: open-core admin model
Strapi 5 is open core. Code outside ee/ directories is MIT Expat licensed when you run without a Strapi Cloud account, while ee/ directories fall under a proprietary Enterprise license. Strapi 5 supports MySQL, MariaDB, PostgreSQL and SQLite, but not MongoDB. Choose it when a Node.js team wants a mature content-type builder and the Community Edition covers your needs. Before committing, map which features you need, such as SSO or audit logs, to the paid plans and confirm the exact license terms in writing.
Strapi v4 end of life
Strapi v4 reached end of life on April 30, 2026, and its final release, 4.26.2 of June 9, 2026, receives no further updates. Teams still on v4 need a migration plan before any other roadmap work. Strapi provides an upgrade tool with codemods, a breaking changes list and data migration scripts that run on first start of Strapi 5. The docs say to back up the database first because downgrading is not supported. Inventory your Entity Service API calls and response format assumptions before you schedule the move.
Strapi Cloud hosted plans
Strapi Cloud is the managed option from the same company. Its pricing page lists Starter at 35 US dollars per month per project, Pro at 90 and Business at 450. Each plan carries API request, storage and bandwidth allowances, and Business includes a 99.9% uptime SLA. These prices cover only the hosted service. Self-hosting costs, including your own cloud accounts, backups and the engineers who run the stack, are separate. Ask for the allowance details in writing before you compare them with your own hosting bill.
Directus: database-first backend
Directus is licensed under the Monospace Sustainable Core License 1.0, which permits any use except a Competing Use against Monospace's paid offerings. Each version converts to GPL-3.0 four years after release. Directus connects to an existing SQL database through the DB_CLIENT setting and supports PostgreSQL, MySQL, MariaDB, Oracle Database, Microsoft SQL Server, SQLite and CockroachDB. Studio suits non-technical teammates. Have counsel test your product against the Competing Use definition before you build on it.
Payload: code-first in Next.js
Payload is MIT licensed and installs directly into an existing Next.js /app folder. Collections and fields are defined in code, and Payload generates TypeScript types from them, so schema changes move through the same review as application code. It supports MongoDB, PostgreSQL and SQLite and includes built-in authentication for admin and customer users. Choose it when your developers already run Next.js. Payload v4.0.0 is still in beta, so pin your version and track the beta before any upgrade.
What running each CMS costs your team to operate
Hosting cost starts with the runtime stack each platform asks you to keep current. Strapi 5 needs a supported Node.js LTS line and one of MySQL, MariaDB, PostgreSQL or SQLite, and its installation documentation says it runs only on Active or Maintenance LTS Node.js versions, so every Node move is a planned change. Directus connects to a database you already run and selects it through the DB_CLIENT setting, and it can be self-hosted with Docker. Payload installs into an existing Next.js /app folder, so your cost is the Next.js app, its hosting and the database it uses (MongoDB, PostgreSQL or SQLite). It can be self-hosted anywhere or deployed to Vercel or Cloudflare Workers with R2 and D1. Ask each vendor, and your own platform team, which runtime and database versions the CMS needs in your environment before you size the server or container budget.
One-time costs are concentrated in setup, data modeling, integration and access configuration. Strapi SSO covers administrator login to the admin panel through an identity provider, with auto-registration and a default role, and it is an add-on on Growth and included in Enterprise. End-user authentication is a separate job handled by the Users and Permissions plugin, and Payload's built-in authentication manages admin and customer users inside the CMS. Directus generates its REST and GraphQL APIs from your schema, so schema design decisions made early are expensive to reverse. Whoever you hire, whether internal staff or an implementation partner, should quote these items separately in writing. Recurring costs include version upgrades, Node or database version moves, maintenance of community and custom plugins, and any paid seats. Strapi lists Growth at 45 US dollars per month including 3 users, plus 15 dollars per extra user, according to its self-hosted pricing page. Enterprise is custom quoted, so ask for it in writing with your expected seat count, SSO and audit log needs.
Treat the Strapi Growth and Enterprise figures as list prices that can change, and confirm them on the pricing page on the day you buy. Strapi Growth includes content history and releases, while audit logs and review workflows require Enterprise. If those controls are required for compliance evidence, Enterprise cost becomes a fixed part of your model before you choose a platform. Directus and Payload require you to confirm any paid tier, support or managed option directly with the vendor, since this page does not list them. Ask each implementation quote to separate platform licensing, one-time build work, identity configuration, upgrade effort for the next two major versions, and ongoing support. A good quote makes the recurring line items visible so you can compare the platforms on total operating effort, not only on the first invoice.
How to shortlist and pilot a headless CMS in four steps
This sequence turns a long list of headless CMS options into one tested choice, with the license, database and upgrade questions answered before any production commitment is made.
Inventory content models and the database you must use
Platform and data owners list every content type, its fields, relationships, localization needs and expected volume, then record which database your organization already operates and supports. Check each candidate against that database list: Strapi 5 supports MySQL, MariaDB, PostgreSQL and SQLite but not MongoDB, Directus connects to an existing SQL database through its DB_CLIENT setting, and Payload supports MongoDB, PostgreSQL and SQLite. The output is a one-page model inventory and a database decision that eliminates any candidate that cannot run on it.
Confirm license fit and the paid features you need
Send the candidate licenses and your required feature list to counsel. For Strapi, confirm which code sits under the MIT Expat license and which sits under the Enterprise license in ee/ directories, and whether SSO, audit logs or review workflows require the Enterprise plan. For Directus, confirm how the Monospace Sustainable Core License applies to your intended use. For Payload, confirm MIT terms cover your plan. Ask each vendor in writing which self-hosted tier includes SSO for administrators, audit logs and review workflows, and what a quote for that tier would cover. The output is a signed-off license memo and a written list of paid features with their tier.
Build a pilot of one real content type on each option
Choose the two shortlisted platforms and model one representative content type from your inventory, including its localization, draft or versioning needs and one access rule that matters to your organization. Use the same content and the same editor roles on both. Test the public API your front end will call, the admin experience for a non-technical editor, and how permissions behave for end users versus administrators. For Strapi, verify that SSO covers only admin panel login and that end-user authentication is handled by its Users and Permissions plugin. The output is a short written evaluation with screenshots, API samples and a list of gaps.
Test upgrade and backup on a copy of the pilot
Before any upgrade, take a full database backup and restore it to a separate environment. Run the upgrade path on that copy and verify content, media references, roles and API responses. If you already run Strapi v4, note that v4 reached end of life on April 30, 2026, and that the migration path to v5 uses an upgrade tool with codemods, data migration scripts that run on first start, and a breaking changes list. Strapi's documentation says downgrading is not supported, so the backup is your only rollback. Confirm the release cadence and support window for your chosen platform in writing. The output is a tested runbook with a restore check and a recorded rollback step.
Questions buyers ask before choosing a headless CMS
What drives the cost of a self-hosted headless CMS?
Most of the cost comes from people and infrastructure, not the software license. Community editions of Strapi, Directus and Payload are free to download, so you pay for the engineers who model content, build the admin experience and integrate the API, plus the hosting for application servers, a SQL or MongoDB database, backups and monitoring. One-time costs include the initial build and data migration. Recurring costs include hosting, upgrades, security patches, on-call support and any paid plan you adopt. Strapi's self-hosted pricing page lists a Growth plan at 45 US dollars per month including 3 users, with paid SSO and Enterprise features such as audit logs and review workflows. Ask any vendor or consultant to separate license fees, hosting, build effort and run effort in a quote.
How long does a headless CMS pilot take to run?
A pilot's length depends on the content model's size, the number of integrations, the identity setup and how many editors must test the admin panel. No single duration applies across platforms, so do not accept one from a vendor without the scope behind it. A useful pilot covers one real content type end to end: modeling, editor workflow, API access from the front end, role permissions and a backup and restore test. Confirm which features your chosen edition includes before the pilot starts, because audit logs and review workflows sit on Strapi's Enterprise plan. DeployOpen plans and implements engagements under fixed scope, with deliverables and timelines agreed in writing before work starts.
Can our team run a self-hosted headless CMS without outside help?
A team can run one without outside help if it already operates Node.js or TypeScript services and a managed SQL database. Strapi 5 runs only on Active or Maintenance LTS Node.js versions and supports MySQL, MariaDB, PostgreSQL and SQLite. Directus connects to an existing SQL database through its DB_CLIENT setting. Payload is code-defined and runs inside a Next.js application, so it needs developers who can ship React and TypeScript. The skills you need are schema design, API security, upgrade testing, backup and restore, and access control for editors. If those skills are thin, a fixed-scope engagement or a support retainer can cover the gap while your staff learn the platform.
Which headless CMS options support MongoDB?
Payload is the option in this comparison that supports MongoDB, alongside PostgreSQL and SQLite. Strapi 5 does not support MongoDB or other NoSQL databases, and the Strapi installation documentation lists MySQL, MariaDB, PostgreSQL and SQLite. Directus connects to SQL databases only, including PostgreSQL, MySQL, MariaDB, Oracle Database, Microsoft SQL Server, SQLite and CockroachDB. If your organization standardizes on MongoDB, that requirement should shape the shortlist before any feature comparison. Confirm the exact Payload database adapter version and its support terms with the vendor before you commit.
Does Directus's license allow us to build a commercial product?
Directus is licensed under the Monospace Sustainable Core License 1.0, which permits any use except a Competing Use against Monospace's paid offerings. Building an internal tool or a customer-facing site on Directus is generally a different question from building a product that competes with Monospace's paid offerings, so the license text should be read with counsel. Each version converts to GPL-3.0 four years after release. Directus changed its license to BSL-1.1 in April 2023 and replaced it with the Monospace Sustainable Core License in 2026, so earlier versions may carry different terms. Ask your legal team to review the license file in the repository before a build starts.
Does Payload's Next.js coupling suit a non-React front end?
Payload suits a non-React front end only when you accept that the CMS itself runs inside a Next.js application. Payload describes itself as a Next.js native CMS that installs directly into an existing Next.js /app folder. Its admin panel is a customizable React admin panel, and the platform generates TypeScript types from code-defined collections. Your storefront or site can still be Vue, Svelte or mobile, because you consume Payload's API over HTTP. The coupling affects your hosting, your upgrade path and the skills on your team. Test the API and admin panel with your actual front end before committing.
What should we ask for in a fixed-scope headless CMS quote?
Ask for a written scope that names the platform and edition, the content types, integrations, identity method and hosting environment. Each deliverable should map to a line item, with acceptance criteria and the dates or milestones agreed up front. Request separate lines for licensing or paid plans, hosting, data migration, admin customization, security testing, documentation, training and handover. Ask what is one-time and what recurs, including upgrades, backups and support. Confirm who owns the code, the configuration and the infrastructure accounts at the end of the engagement. DeployOpen does not publish a price list, and a quote follows from the written scope.
Which upgrade risks should we check before a headless CMS quote?
Check the vendor's release cadence, end-of-life dates and the size of the breaking changes between major versions. Strapi v4 reached end of life on April 30, 2026, and its migration to v5 involves codemods, data migration scripts that run on first start, and a note that downgrading is not supported. Strapi 5 also replaces the Entity Service API with the Document Service API and changes the response format. Back up the database before any upgrade. Ask the vendor or consultant for a migration plan that covers test environments, rollback steps and the effort for custom plugins.
How DeployOpen scopes headless CMS selection and implementation
DeployOpen plans and implements self-hosted open-source platforms inside your own cloud accounts, data centers or air-gapped networks. For a headless CMS, that means turning the choice between Strapi, Directus and Payload into a written scope, a hardened deployment and a handover your team can run.
How we scope
- Agree which content models, API consumers and editorial roles the CMS must serve before any platform is chosen
- Record the database engine, Node.js runtime and hosting target your organization already supports in the written scope
- Confirm which admin login, SSO and paid-tier features your license review requires, so the quote matches the edition
- Define deliverables and timelines in writing before work starts, since most engagements are fixed-scope
How we build
- Install the chosen platform in your infrastructure and connect it to the agreed SQL or document database
- Configure roles, permissions and API access so editors and front-end applications see only what they should
- Test the API surface, admin access and backup and restore steps against the agreed acceptance criteria
- Customize the admin panel or data model only where the written scope requires it, and document each change
How we hand over
- Deliver architecture notes, configuration records, runbooks and the upgrade steps specific to your deployment
- Walk your platform, security and content teams through administration, backup, restore and access reviews
- Provide evidence of configuration and testing that your internal reviewers or external auditors can examine
- Confirm which upgrade path your team will own and which items you should confirm with the vendor
How we support
- Offer ongoing support, upgrades and continuous testing as a retainer after the initial handover
- Track vendor release windows and end-of-life dates so upgrades are planned before a version stops receiving updates
- Repeat security testing of the APIs and admin surface as the content model and integrations change
- Ask for a quote built from the written scope, with recurring retainer costs separated from one-time project work

