unsubbed.co

Payload CMS

Payload is a Next.js-native headless CMS and application framework that gives developers full TypeScript control over content management with zero vendor lock-in.

Open-source headless CMS, honestly reviewed. No marketing fluff — just what you get when you self-host it.

TL;DR

  • What it is: Open-source (MIT) headless CMS and app framework built in TypeScript. Installs directly into your Next.js /app folder — your CMS and frontend share one codebase, one deployment [5].
  • Who it’s for: Developers building on Next.js who want full data ownership, deep content modeling, and a customizable admin panel without paying per-seat or per-API-call. Not for non-technical teams — this requires a developer to configure and maintain [1][5].
  • Cost savings: Contentful’s paid plans start around $300/mo for teams; Sanity’s Growth tier runs $15/user/mo and adds up fast. Payload self-hosted runs on a $10–20/mo VPS with no usage limits, no seat limits, no API quotas [5].
  • Key strength: The tightest Next.js integration of any headless CMS — same stack, same deployment, no adapter layer. Your schema is TypeScript code in your repo. Your admin UI is React you can override at the component level [1][5].
  • Key weakness: Requires a developer who knows Next.js. Non-technical founders can’t set it up themselves. Bulk upload, live collaboration, and some enterprise-grade features are still maturing or gated behind the commercial tier [2][3].

What is Payload CMS

Payload is an open-source, fullstack CMS and application framework written entirely in TypeScript. Where most headless CMS platforms are hosted services — you get their API, their managed admin, and whatever pricing tier they’ve decided on this quarter — Payload runs inside your own codebase. You define collections, access rules, and hooks as TypeScript config files. The admin panel is a React app you own. The data lives in your database [5].

The project launched as a conventional self-hosted CMS, then rebuilt itself around the Next.js App Router in v3. That’s not a wrapper or adapter — Payload installs into your existing /app folder via npx create-payload-app, and from that point your frontend and your CMS share the same server, the same deployment, and the same types [5]. If you’re already running Next.js, adding Payload doesn’t mean adding a second service.

As of this review, the project sits at 41,266 GitHub stars and is in active development — v3.54.0 shipped in August 2025 with job scheduling and trash support [4]. The license is MIT with no commercial use restrictions.

One significant business development: Payload was acquired by Figma in June 2025. Payload Cloud — the managed hosting product — was discontinued for new projects. The software itself remains MIT-licensed and the self-hosting path is now the only path. That’s worth knowing before you build on it [1].


Why people choose it over Contentful, Sanity, and Strapi

The articles we synthesized point to the same core reason: Payload gives you a real headless CMS that doesn’t introduce a new vendor relationship. You control the schema, the data, the admin UI, and the deployment. For teams that have been burned by Contentful price hikes or Sanity model limits, that matters.

Versus Contentful. Contentful is the incumbent enterprise headless CMS. It’s well-documented, has a massive integration catalog, and works out of the box for non-technical editors. It also starts at $300/mo for teams and scales aggressively. Payload’s self-hosted equivalent costs what your server costs. The trade-off is that Payload requires a developer to set up and maintain; Contentful does not [5].

Versus Sanity. The head-to-head comparison [3] shows the clearest split. Sanity is developer-configured too, but it’s cloud-hosted — the data lives on Sanity’s servers, which is a hard no for some clients. Payload wins on data sovereignty: everything is on your infrastructure, full stop. Sanity wins on real-time collaboration (multiple editors working simultaneously) and a more mature query language (GROQ). Payload’s TypeScript-first approach gets repeated praise [2][3]; Sanity’s lack of TypeScript support is one of the most-cited criticisms of that platform [3].

Versus Strapi. Strapi is the other major open-source headless CMS. Both are self-hosted, both are free at the core. The difference is architecture: Strapi runs as a separate service alongside your app; Payload installs into your Next.js project and shares the same runtime. If you’re building on Next.js, that’s a meaningful ergonomic win — no extra service to deploy, no extra API calls between your frontend and your CMS, direct database queries in React Server Components [5][4].

On data ownership. This is where Payload has the clearest advantage over the cloud-only competitors. The focusreactive.com overview [5] puts it plainly: “Most headless CMS platforms are hosted services. You get an API, a managed admin, and a pricing tier that someone else controls. That model works fine until the vendor changes something. Pricing changes. Policy shifts. It’s their call, not yours.” For founders who have watched Contentful double their bill or seen their CMS vendor get acquired — Payload is a hedge against that category of risk entirely.

The Figma acquisition. This cuts both ways. On one hand, Figma is a well-capitalized company that will likely keep the project funded and staffed. On the other hand, Figma discontinued Payload Cloud for new projects, which narrows your options to self-hosting. The reviewer at Medium [1] notes the team is actively engaged in Discord and the MIT license is unchanged — but it’s a variable worth tracking if you’re making a long-term infrastructure bet.


Features

Based on the GitHub README, the focusreactive.com deep dives, and the comparison articles:

Core content management:

  • Collections (repeating content types, like posts or products) and Globals (singleton content, like site settings), all schema-defined in TypeScript [5]
  • Auto-generated REST and GraphQL APIs from your schema — no manual API writing [5]
  • Lexical rich text editor with custom block support [README]
  • Block-based layout system for structured page building [README]
  • Conditional field logic — show/hide fields based on other field values [README]
  • Versions and drafts with rollback [README]
  • Localization built in — multiple locales, per-field [README]
  • Live Preview (see frontend changes as editors type) [5]

Admin panel:

  • Fully customizable React admin — override components at any level [1][5]
  • Granular access control at the collection, document, and field level [README][5]
  • Document and field hooks for custom business logic [README]

Developer experience:

  • Everything is TypeScript config — schema, access rules, hooks, plugins [5]
  • payload-types.ts auto-generated — fully typed access to your content models in frontend code [5]
  • Direct database queries in React Server Components — no round-trip API call [5]
  • Plugin system with official and community plugins [README]
  • Supports PostgreSQL, MongoDB, SQLite via database adapters [5]

Deployment options:

  • One-click deploy to Vercel (Next.js + Neon DB + Vercel Blob) [README]
  • One-click deploy to Cloudflare (Workers + R2 + D1) [README]
  • Self-hosted on any VPS with Node.js
  • Serverless-compatible [README]

Enterprise tier (commercial, priced on request):

  • SSO [1][5]
  • Audit logs [1][5]
  • Advanced publishing workflows [5]
  • AI features [1][5]

Pricing: SaaS vs self-hosted math

Payload self-hosted (MIT license):

  • Software: $0 [5]
  • Server: $10–20/mo on Hetzner, DigitalOcean, or Contabo
  • No per-seat pricing. No API call quotas. No usage limits [5]

Payload Enterprise (commercial):

  • SSO, audit logs, AI features, advanced publishing
  • Priced on request — contact the Payload team [5]
  • Payload Cloud was discontinued for new signups after Figma acquisition [1]

Contentful for comparison:

  • Free: 5 users, 25K API calls/mo, limited content types
  • Basic: $300/mo for teams
  • Scales significantly past that with seats and usage

Sanity for comparison:

  • Free: 3 users, limited bandwidth
  • Growth: $15/user/mo
  • Custom: enterprise pricing

Strapi Cloud for comparison:

  • Essential: $29/mo
  • Pro: $99/mo
  • Plus $49+/mo per additional environment

Concrete savings math:

A 5-person content team running Contentful Basic pays $3,600/year. The same team running Payload on a $15/mo Hetzner VPS pays $180/year in server costs. The delta: $3,420/year, and that’s without Contentful’s overage charges if your API call volume grows.

The caveat is real: those numbers assume a developer set up the Payload instance. If you’re paying someone $500 to deploy and configure it (a reasonable one-time cost), you break even in the first month and save everything after that.


Deployment reality check

Payload’s setup story is noticeably better than most self-hosted tools in this category — primarily because the one-click Vercel and Cloudflare options are real. The Vercel path provisions a Next.js app, Neon Postgres database, and Vercel Blob storage in one click. For a developer who’s already comfortable with Vercel, that’s a 10-minute path to a working CMS [README].

What the CLI path looks like:

npx create-payload-app@latest

Three prompts: project name, database adapter (PostgreSQL, MongoDB, or SQLite), starter template. SQLite works locally without spinning up a database. What you end up with is a Next.js project with Payload wired in, a payload.config.ts that controls everything, and a /admin route that’s your full CMS [5].

What you need for a production self-hosted instance:

  • A Linux VPS or Cloudflare Workers environment
  • Node.js 18.20.2+ [README]
  • PostgreSQL (recommended) or MongoDB
  • An S3-compatible storage provider for media uploads (Cloudflare R2 works, so does AWS S3)
  • A domain and reverse proxy for HTTPS if running on a VPS

What can go sideways:

The learning curve is the main obstacle and it’s genuinely steep for anyone not already working in Next.js. The wisp.blog comparisons [2][3] flag this explicitly: “New users who are not familiar with Next.js may find it challenging to adapt to Payload CMS’s code-based customization approach.” This isn’t a CMS you hand to a marketer to configure. Every content model change is a code change.

Documentation has improved significantly from Payload v2 to v3, but gaps remain. Multiple reviewers [2][3] note missing pre-built examples and documentation coverage that doesn’t match the breadth of what the platform can do.

The Figma acquisition also changed the deployment landscape. Payload Cloud is no longer available for new projects, so the managed option is gone. If you wanted a “Payload without the DevOps,” that path has closed [1]. Vercel one-click is the closest substitute, but it’s still developer-managed infrastructure.

Realistic time estimate for a developer comfortable with Next.js: 30–60 minutes to a working instance on Vercel or a fresh VPS. For someone newer to Next.js: half a day, accounting for database setup, understanding the collection schema, and getting media uploads configured. For a non-technical founder: not a realistic solo project.


Pros and Cons

Pros

  • Genuinely MIT licensed. No commercial use restrictions, no “fair-code” asterisks, no “you can’t resell it” clauses [5]. If you’re building a SaaS that needs a CMS layer you can embed, Payload is one of the few options with a clean license.
  • Next.js-native architecture. The tightest integration of any headless CMS with Next.js — same codebase, same deployment, direct RSC queries without an API round-trip [5]. Not a feature for every project, but when it matters, nothing else matches it.
  • Type safety end to end. Your content schema generates TypeScript types. Your frontend has fully typed access to your content models with zero manual type writing [5][2]. Teams that have fought ContentType IDs and untyped Contentful responses will understand why this is valuable.
  • No seat limits, no API quotas. A 50-person content team costs the same as a 2-person team: your server bill [5]. That pricing model doesn’t exist anywhere in the managed headless CMS space.
  • Customizable admin panel. The React admin is a real React app you can override at the component level — custom fields, custom views, custom dashboard [1][2]. Not “configure these options”; actually change the code.
  • Active development. 41,266 stars, regular release cadence, v3.54.0 in August 2025 with feature additions rather than just bug fixes [4]. The Figma acquisition may or may not accelerate this — to be seen.
  • Discord community is responsive. Multiple independent reviewers call out the community specifically [1][2]. The team engages directly.

Cons

  • Requires a Next.js developer. This is not a CMS a marketer or non-technical founder configures. Every schema change is a code change. Every permission tweak is a TypeScript edit [2][3][5]. If your team doesn’t have this, Payload is the wrong tool regardless of its other qualities.
  • No live collaboration. Multiple editors working on the same document simultaneously isn’t supported — this is a frequently cited gap versus Sanity [3]. For teams with heavy simultaneous editing workflows, this is a real limitation.
  • Missing features for high-output content teams. Bulk uploads, bulk editing, and similar power-user content operations are called out as missing by users [2][3]. For a developer portfolio or a product’s blog, fine. For a media team publishing 50 articles a week, these gaps hurt.
  • Payload Cloud is dead for new projects. The managed hosting option was discontinued after the Figma acquisition [1]. Self-hosting is the only path now. If you planned to use Payload as a CMS-as-a-service, that plan needs to change.
  • Documentation lags the feature set. A recurring complaint across reviews [2][3]: the docs have improved but don’t cover the full depth of what Payload can do. You’ll end up in Discord or reading source code for some configurations.
  • Enterprise features are gated. SSO, audit logs, and AI features require the commercial enterprise tier — no public pricing, contact sales [1][5]. For small teams this is fine. For companies with compliance requirements or SSO mandates, budget accordingly.
  • Young compared to Contentful or WordPress. Payload v3 launched in 2024. The ecosystem of pre-built plugins, third-party integrations, and community tutorials is smaller than more established platforms [2][4]. It’s growing fast, but it’s not Strapi-level yet.

Who should use this / who shouldn’t

Use Payload if:

  • You’re building on Next.js and want your CMS to live in the same codebase without running a second service.
  • Your team has at least one developer comfortable with TypeScript and Next.js who can own the CMS configuration.
  • You need end-to-end type safety between your content schema and your frontend.
  • You’re migrating off Contentful or Sanity primarily because of pricing or data sovereignty concerns.
  • You need to customize the admin panel beyond “pick from these config options” — custom field types, custom views, embedded business logic.
  • You’re building a SaaS product that needs an embedded content layer with a clean license.

Skip it (use Strapi instead) if:

  • You need a self-hosted headless CMS that isn’t coupled to Next.js — Strapi runs as a standalone service and pairs with any frontend framework.
  • You want a larger plugin ecosystem and more third-party integration support.
  • Your content editors need bulk operations and a more mature editorial interface today.

Skip it (use Sanity instead) if:

  • Real-time collaborative editing is a hard requirement.
  • You want a managed backend without thinking about databases or server maintenance.
  • Your team is comfortable with GROQ and values Sanity’s query flexibility.

Skip it (use WordPress + headless) if:

  • Your team is non-technical and needs to configure and manage the CMS independently.
  • You need the broadest possible plugin catalog and the largest support community.
  • The content management is owned by someone who can’t write TypeScript.

Skip it entirely if:

  • You were counting on Payload Cloud — it’s discontinued for new projects [1]. If you need managed hosting, evaluate Sanity or Contentful instead.

Alternatives worth considering

  • Strapi — the other major open-source self-hosted headless CMS. Runs as a standalone service (not Next.js-coupled), has a larger plugin ecosystem, and is more mature for non-Next.js stacks. Fair-code licensed on the enterprise tier.
  • Directus — open-source, self-hosted, database-first. Wraps any SQL database and generates an API automatically. Better choice if you have an existing database you want to add a CMS layer to [4].
  • Sanity — developer-configured, cloud-hosted (data on their servers), real-time collaborative editing, GROQ query language. Better for teams that need live collaboration and are fine with managed data [3].
  • Contentful — the enterprise incumbent. Best documentation, biggest ecosystem, steepest pricing. Makes sense if you need a non-technical team to own the CMS with no developer involvement [5].
  • Keystatic — newer open-source CMS that also targets the Next.js space, stores content in git rather than a database. Simpler than Payload for content-only use cases.
  • TinaCMS — git-backed CMS with visual editing on the frontend. Different architecture from Payload but targets a similar Next.js audience.

Bottom line

Payload is the right answer to a specific problem: you’re building on Next.js, you want full data ownership and zero vendor dependency, and you have a developer on your team who can configure and maintain it. For that combination, it’s the cleanest solution in the category — the TypeScript-native schema, the same-codebase architecture, and the MIT license add up to something that the managed headless CMS market genuinely can’t match at any price [1][5].

The honest limitation is that it’s a developer tool, not a product-team tool. The Figma acquisition removed the managed hosting option, so “use Payload without DevOps skills” is no longer a path [1]. If you need a non-technical person to own the CMS configuration, or if your team isn’t on Next.js, look at Strapi or Directus instead.

For a technical founder running a Next.js app and paying $300+/mo for Contentful — the math is obvious. A $15 VPS, one afternoon of setup, and you own your content infrastructure permanently. If the afternoon of setup is the blocker, that’s exactly what unsubbed.co’s parent studio upready.dev deploys for clients.


Sources

  1. Yaroslav Rogovich, Medium“How Payload 3.0 Is Changing the Headless CMS Game in 2025” https://medium.com/@yrogovich/how-payload-3-0-is-changing-the-headless-cms-game-in-2025-c6b8ce193518
  2. wisp.blog“Payload CMS vs Webflow CMS” https://www.wisp.blog/compare/payload/webflow
  3. wisp.blog“Payload CMS vs Sanity” https://www.wisp.blog/compare/payload/sanity
  4. Artur Nikitsin, focusreactive.com“The Best Self-Hosted Headless CMS” (Sep 2025) https://focusreactive.com/best-self-hosted-headless-cms/
  5. focusreactive.com“Payload CMS: Scalable Headless CMS for Developers” (Mar 2026) https://focusreactive.com/payload-cms-overview/

Primary sources:

Features

Integrations & APIs

  • Plugin / Extension System
  • REST API