Pricing for headless CMS platforms is genuinely hard to compare because each charges on a different axis — seats, API calls, bandwidth, compute, or a mix. This post puts Sanity, Payload CMS, and Directus side by side with concrete numbers so you can make a real decision before you commit to one.
Why this trio keeps coming up
These three platforms attract similar buyers: teams building structured-content sites on Next.js who want a proper content model and a developer-friendly API. But they monetise completely differently. Sanity is SaaS-hosted with a generous free tier and per-seat paid plans. Payload is MIT-licensed open source that you self-host (it has had a managed Cloud offering too). Directus is source-available under its own licence, free to self-host for smaller organisations, with paid plans priced per tier and per seat. That difference shapes the total cost of ownership more than any feature spreadsheet does.
Pricing at a glance
Numbers below are from each vendor's pricing page at the time of writing (October 2026). They change often, so check the vendor's page before you budget.
| Factor | Sanity | Payload CMS | Directus |
|---|---|---|---|
| Free tier | Free plan: up to 20 seats, 2 roles (Administrator, Viewer), 10k documents, 100 GB bandwidth, 100 GB assets, 2 public datasets | Self-hosted: free (MIT) — you pay infra only | Self-hosted: free for organisations under $5M annual revenue and fewer than 50 employees; Core plan $0 (3 seats) |
| Cheapest paid tier | Growth: $15 per seat/month (up to 50 seats; viewers free) | Payload Cloud: check payloadcms.com (see below) | Team: $499/month on annual billing ($599 monthly), 10 seats included |
| Per-seat model | Yes on Growth — every non-viewer seat is $15/month | None for self-hosted | Yes: extra seats $50/seat/month on Team |
| Bandwidth overage | Growth: $0.30/GB above 100 GB | Self-hosted: whatever your host charges | Not listed on the pricing page |
| Asset storage overage | Growth: $0.50/GB above 100 GB | Self-hosted: whatever your storage bucket charges | Not listed on the pricing page |
| Self-hosted option | No (Studio can be self-hosted; Content Lake is SaaS only) | Yes — MIT licence, zero licence cost | Yes — source-available licence; paid plan needed above the revenue/size threshold |
| Enterprise pricing | Custom (adds custom roles, Content Releases, SSO, SLA) | Custom; contact sales | Custom |
Sanity pricing in practice
Sanity's free plan covers a surprising amount: up to 20 seats, 10,000 documents, 100 GB of assets, 100 GB of monthly bandwidth, 250k API requests and 1M API CDN requests a month. The catch is roles: Free only has Administrator and Viewer, so everyone who edits content is effectively an admin. For a small marketing site with a one- or two-person editorial team that's genuinely zero cost.
The trigger for upgrading to Growth ($15 per seat per month) is usually one of three things: you need proper editor roles (Editor, Contributor, Developer), you want scheduled drafts or private datasets, or you outgrow the document or request quotas. Viewers are free on Growth, so you pay for the people who actually edit. Overage beyond the included 100 GB is $0.30/GB on bandwidth and $0.50/GB on assets — predictable enough that you can budget it.
The quota content-heavy sites hit first is usually API requests rather than bandwidth. Serve published content through the API CDN (useCdn: true) and cache pages on the Next.js side, and the included quotas go a long way.
For a Next.js site with ISR revalidation and a Sanity webhook setup, Growth's included quotas are usually sufficient for a typical marketing site; the bill is driven mostly by how many editor seats you need.
Payload CMS pricing in practice
Payload's core value proposition is that it is free, self-hosted, MIT-licensed, and production-ready. You pay infrastructure — a PostgreSQL or MongoDB database, a file storage bucket (S3 or R2), and a compute host. A minimal Railway or Render setup runs roughly $5–15/month at the time of writing. Add S3 or Cloudflare R2 for storage and you're typically under $20/month total for low-to-medium traffic.
Payload also has a managed Cloud product, but Payload joined Figma in June 2025, and third-party reports since then say Payload Cloud paused new sign-ups. Payload's own announcement says the open-source core continues. Check payloadcms.com for current Cloud availability and pricing before you plan around it; the realistic path for most new projects is self-hosting.
Where Payload gets expensive is engineering time. Setting up CI/CD, database backups, storage integrations, and zero-downtime deploys requires more ops work than a fully hosted platform. For a solo freelancer or a startup without DevOps experience, that hidden cost is real.
Directus pricing in practice
Directus is not AGPL. It is source-available under its own licence (currently the Monospace Sustainable Core License, which converts to GPL-3.0 four years after each release). Directus's pricing page offers free self-hosting to organisations under $5M in annual revenue with fewer than 50 employees; larger organisations need a paid plan. That threshold, not code-sharing obligations, is the licensing question to check.
On the paid side, Directus's Core plan is $0 with a hard limit of 3 seats, and the Team plan is $499/month billed annually ($599 billed monthly) with 10 seats included and extra seats at $50/seat/month. Directus-managed cloud hosting is a $99/month add-on. That makes Directus's managed route much more expensive than Sanity's or Payload's for small teams, and it adds up fast for editor-heavy newsroom setups.
The self-hosted route avoids those costs if you qualify for free use. A DigitalOcean or Railway instance running Directus with a managed PostgreSQL database costs roughly $10–25/month, depending on traffic.
Total cost comparison at three scale points
| Scale | Sanity | Payload (self-hosted) | Directus (self-hosted, under the free threshold) | Directus paid + hosting |
|---|---|---|---|---|
| Solo dev / prototype | $0 (free plan) | ~$10/month (infra) | ~$10/month (infra) | $99/month (Core + hosting add-on) |
| 5-editor marketing site | ~$75/month (Growth, 5 seats) or $0 on Free if admin-only access is acceptable | ~$20/month (infra + DB) | ~$10–20/month (infra) | $598/month (Team + hosting) |
| 20-editor content team | ~$300/month (Growth, 20 seats) + any overages | ~$25–40/month (infra) | ~$20–30/month (infra) | $598 + $500 for 10 extra seats ≈ $1,100/month |
These are rough, list-price estimates; infrastructure costs depend on your host and traffic.
Which one to pick on cost alone
If you want zero infrastructure management and have a small editorial team, Sanity's free plan or Growth at $15 per seat is genuinely hard to beat. The Content Lake handles delivery, the CDN is included, and you don't touch a database.
If your team is large, you want no per-seat charges, and you're comfortable with self-hosting, Payload self-hosted is the cheapest path at scale — MIT licence, low infra cost, and no surprises.
Directus's paid plans are expensive for small teams. Self-hosted Directus is cost-competitive with Payload as long as you're under the free-use threshold; above it, you need a paid plan, so read Directus's licence terms before you deploy commercially.
The real cost inflection points: Sanity triggers at seat count and roles; Payload at engineering time; Directus at the licence threshold and seat count. Pick the one whose constraint you're furthest from.
Top comments (0)