IBRAVRA Media Network
Software Reviews • 12 min read

Sanity vs Contentful vs Strapi: The Headless CMS Pricing Playbook

Sanity bills per seat, Contentful bills a flat tier, Strapi bills per project. This playbook prices all three at 5 and 25 seats and 1 million API requests a month, runs the overage math at 5 million, and names the ceiling that forces each switch.

By Enow A. Jovial • Published 2026-11-13

Sanity vs Contentful vs Strapi: The Headless CMS Pricing Playbook

A headless CMS separates the content repository from the front end: editors work in a hosted studio, developers pull structured content through a REST or GraphQL API, and the website renders it through a CDN. The architecture is the same on all three; the billing model is not.

Sanity charges per seat plus pay-as-you-go usage. Contentful charges a flat monthly tier with hard caps on the free plan and published overage rates on the paid tier. Strapi Cloud charges per project, with no per-seat charge, and Strapi self-hosted charges no licence fee. Three vendors, three meters: people, a tier, and a project. This guide prices all three from the vendors' own pricing pages, read on 13 November 2026, at 5-seat and 25-seat teams doing 1 million API requests a month, then runs the overage math at 5 million requests. Every figure is a vendor list price or a shown derivation.

At a 5-seat team doing 1 million API requests a month: Strapi Pro $90 a month, Sanity Growth $105, Contentful Lite $300. But the ranking reverses at scale: Contentful's overage is $5 per additional 1 million API calls against Sanity's $40, so above 6.6 million requests a month Contentful Lite undercuts Sanity Growth at 5 seats, provided the 20-user ceiling and 100 GB bandwidth allowance still hold.

The three pricing shapes, stated plainly

Sanity: per seat, plus a meter

Sanity Free costs $0: up to 20 user seats, 2 permission roles, 2 datasets that must be public, 10,000 documents, 1 million API CDN requests and 250,000 API requests a month, 100 GB of assets and bandwidth a month. Growth costs $15 per seat per month: 50 seats, 5 roles, 2 private-or-public datasets, 25,000 documents, the same API limits, plus scheduled drafts.

On Growth, overage is pay-as-you-go: CDN requests $1 per 250,000, API requests $1 per 25,000, assets $0.50 per GB, bandwidth $0.30 per GB. Enterprise is custom priced, with custom quotas, SAML single sign-on, dedicated support, and an uptime SLA.

Contentful: a flat tier, with hard caps

Contentful Free costs $0: 10 users, 2 roles, 2 locales, 100,000 API calls a month, 50 GB of monthly CDN bandwidth, and one Starter Space with 25 content types, 2 environments, and 10,000 records. Lite costs $300 a month: 20 users, 3 roles, 3 locales, 1 million API calls a month, 100 GB of monthly CDN bandwidth, comments, scheduled publishing, and live collaboration. Enterprise is custom priced: custom users, roles and locales, unlimited API calls, custom bandwidth, a 99.99 percent uptime SLA, and 24/7 support.

Contentful Free uses hard caps, not overages: the 101,000th API call in a month does not cost money — it does not happen. On Lite, overage is $5 per additional 1 million API calls a month and $0.15 per additional GB of bandwidth. Lite is flat $300 a month: a team of 3 pays $300, a team of 20 pays $300, and a team of 21 cannot buy Lite at any price — the ceiling is 20 users.

Strapi: per project, with a free self-hosted escape

Strapi Cloud prices per project per month. Starter costs $35: 100,000 API requests, 50 GB of asset storage and bandwidth, unlimited database entries, and one environment, with the runtime sleeping when idle. Pro costs $90: 1 million API requests, 250 GB of asset storage, 500 GB of bandwidth, an always-on runtime, multi-environment support, weekly backups, and CRON jobs. Business costs $450: 10 million API requests, 1,000 GB of asset storage and bandwidth, 2 environments, daily backups, and a 99.9 percent uptime SLA.

Strapi Cloud pricing: Starter $35 and Pro $90 per project per month
Strapi Cloud pricing: Starter $35 and Pro $90 per project per month

Overage: API requests $1.50 per 25,000, asset storage $0.60 per GB, bandwidth $30 per 100 GB.

Strapi is the only vendor of the three with no per-seat charge: a 50-editor newsroom on Pro pays the same $90 a month as a 2-editor blog, provided both stay inside 1 million API requests. It is also the only vendor with a genuinely free production path: the Community Edition is free, open-source software you self-host, with unlimited database entries and no seat limit — the licence costs nothing, but the hosting, backups, security updates, and on-call time are yours. Free of licence, not free of cost — which is why the headless WordPress versus Next.js CMS decoupling guide treats self-hosting as an operations decision.

Free-tier ceilings: where $0 actually stops

CeilingSanity FreeContentful FreeStrapi Cloud
Price$0 forever$0 foreverNo free tier; Starter $35/project/month
Users or seats20 seats10 usersNo seat limit on any plan
Content volume10,000 documents10,000 records, 25 content typesUnlimited database entries
API requests a month250,000 API; 1M CDN100,000 API calls, hard cap100,000 on Starter
Private contentPublic datasets only2 environments1 environment on Starter

Sanity Free stops first on privacy: a private dataset forces Growth at $15 a seat, even for one person. Contentful Free stops first on API volume: 100,000 calls a month is roughly 3,300 a day. Strapi Cloud has no free tier — the floor is $35 a month — but the self-hosted Community Edition has no ceiling on seats, entries, or API calls, only the ceiling of your server.

Worked example: a 5-seat team at 1 million API requests a month

Profile: 5 editors, 1 million API requests and 1 million CDN requests a month.

Sanity Growth:

Sanity Growth=(5×$15)+1,000,000−250,00025,000×$1=$75+$30=$105 per month\text{Sanity Growth} = (5 \times \$15) + \frac{1{,}000{,}000 - 250{,}000}{25{,}000} \times \$1 = \$75 + \$30 = \$105 \text{ per month}

CDN requests sit exactly at the 1 million included, so the CDN overage is $0. The year is 12 times the month:

Sanity annual=12×$105=$1,260 per year\text{Sanity annual} = 12 \times \$105 = \$1{,}260 \text{ per year}

Contentful Lite:

Contentful Lite=$300+$0=$300 per month=$3,600 per year\text{Contentful Lite} = \$300 + \$0 = \$300 \text{ per month} = \$3{,}600 \text{ per year}

Strapi Pro:

Strapi Pro=$90+$0=$90 per month=$1,080 per year\text{Strapi Pro} = \$90 + \$0 = \$90 \text{ per month} = \$1{,}080 \text{ per year}

At this profile: Strapi Pro $90, Sanity Growth $105, Contentful Lite $300 a month. The ranking is fragile: Sanity's $105 depends on a $30 API overage, and Strapi's $90 on staying under 1 million requests.

Contentful Free is a hard cap, not a meter. At 100,001 API calls in a month the calls stop, and a site depending on the Content Delivery API, the Content Preview API, or the GraphQL API will serve stale or missing content until the month resets. Do not put a production site on Contentful Free without a request budget and an alert at 80 percent of the cap.

Worked example: the same team at 25 seats

Profile: 25 editors, 1 million API requests and 1 million CDN requests a month.

Vendor and planMonthly totalAnnual totalBinding constraint
Sanity Growth$405$4,86050-seat ceiling
Contentful LiteNo published priceNo published price20-user ceiling exceeded
Strapi Pro$90$1,0801M request allowance

Sanity Growth:

Sanity Growth=(25×$15)+1,000,000−250,00025,000×$1=$375+$30=$405 per month\text{Sanity Growth} = (25 \times \$15) + \frac{1{,}000{,}000 - 250{,}000}{25{,}000} \times \$1 = \$375 + \$30 = \$405 \text{ per month}
Sanity annual=12×$405=$4,860 per year\text{Sanity annual} = 12 \times \$405 = \$4{,}860 \text{ per year}

Contentful Lite cannot serve this profile at any published price: the plan includes 20 users, a 25th requires Enterprise, and Enterprise is custom priced. This guide invents no Enterprise figure. Contentful's published pricing ends at 20 users; a 25-seat team must get a quote before it can budget the line — a sales cycle and a number no spreadsheet can model.

Strapi Pro is unchanged at $90 a month — no per-seat charge. Per-seat pricing punishes headcount; per-project pricing punishes traffic.

Overage math: what 5 million API requests a month costs

Profile: 5 editors, 5 million API requests a month — every vendor above its included allowance, so the overage rate decides the ranking.

Sanity Growth:

Sanity=$75+5,000,000−250,00025,000×$1=$75+$190=$265 per month\text{Sanity} = \$75 + \frac{5{,}000{,}000 - 250{,}000}{25{,}000} \times \$1 = \$75 + \$190 = \$265 \text{ per month}

Contentful Lite:

Contentful=$300+5,000,000−1,000,0001,000,000×$5=$300+$20=$320 per month\text{Contentful} = \$300 + \frac{5{,}000{,}000 - 1{,}000{,}000}{1{,}000{,}000} \times \$5 = \$300 + \$20 = \$320 \text{ per month}

Strapi Pro:

Strapi Pro=$90+5,000,000−1,000,00025,000×$1.50=$90+$240=$330 per month\text{Strapi Pro} = \$90 + \frac{5{,}000{,}000 - 1{,}000{,}000}{25{,}000} \times \$1.50 = \$90 + \$240 = \$330 \text{ per month}

Strapi Business ($450 a month) already includes 10 million requests, so Pro with overage ($330) is still cheaper at 5 million; Business wins at 7 million requests a month:

Strapi break-even=$90+R−1,000,00025,000×$1.50=$450⇒R=7,000,000 requests per month\text{Strapi break-even} = \$90 + \frac{R - 1{,}000{,}000}{25{,}000} \times \$1.50 = \$450 \Rightarrow R = 7{,}000{,}000 \text{ requests per month}

Per-million overage rates: Sanity $40, Strapi $60, Contentful $5. Contentful's base is the highest and its overage the cheapest, so at high enough volume Lite overtakes Growth. At 5 seats the crossover is about 6.6 million requests a month:

Crossover=$75+(V−0.25)×$40=$300+(V−1)×$5⇒V≈6.6 million requests per month\text{Crossover} = \$75 + (V - 0.25) \times \$40 = \$300 + (V - 1) \times \$5 \Rightarrow V \approx 6.6 \text{ million requests per month}

Above that volume, and only if the 20-user ceiling and the 100 GB bandwidth allowance still hold, Contentful Lite is the cheapest of the three at 5 seats; below it, Sanity Growth is. The same discipline — price the behaviour, not the headline — governs the backend decision; the Supabase versus Firebase versus PlanetScale backend pricing guide applies it to databases.

Run your real request count before you buy, not after. Pull 30 days of API requests, CDN requests, and bandwidth from your current CMS or CDN logs, then price all three vendors against those numbers.

Annual versus monthly: where the discount actually exists

Sanity offers no annual discount on Free or Growth — both are monthly-billed by card, annual billing only on Enterprise by negotiation. Contentful publishes no annual price or discount for Lite; any annual Lite price at sales is negotiated against the $3,600 list annual total. Strapi's one annual discount is on extra environments: Pro $60 a month or $600 yearly, saving $120 a year per environment; Business $300 a month or $3,000 yearly.

The decision table

FactorSanityContentfulStrapi CloudAuthority
Billing unitPer seat, plus usageFlat tier, plus overagePer project, plus usageVendor pricing pages
Free tier$0, 20 seats, 10k documents$0, 10 users, 100k API callsNone; self-hosted $0 licenceVendor pricing pages
5 seats, 1M requests a month$105 a month$300 a month$90 a monthList prices
25 seats, 1M requests a month$405 a monthNo published price$90 a monthContentful 20-user ceiling
API overage per 1M requests$40$5$60$1/25k; $5/1M; $1.50/25k
Seat or user ceiling50 seats on Growth20 users on LiteNone on any Cloud planVendor pricing pages
SSO and uptime SLAEnterprise onlyEnterprise only, up to 99.99%SLA only on Business, 99.9%Vendor pricing pages
Annual discountNone on self-serve plansNot published for Lite2 months free on extra environmentsSanity; Strapi

Who should use each — and who should NOT use this

VendorFitsDoes not fit
SanityDeveloper-led team wanting a code-first studio, GROQ and GraphQL queries, and a free tier of 20 seats and 10,000 documentsA team needing private datasets on $0, or volume above 6.6 million requests a month at 5 seats
ContentfulMarketing team wanting a flat $300 a month, structured content with locales and workflows, and a 99.99 percent SLA pathA team growing past 20 users on a published price, or a team whose API calls must keep flowing past a cap
StrapiA team that wants to own its content layer: self-host the Community Edition, pay no licence or seat charge, and scale editors without scaling the billA team wanting a vendor to carry uptime, backups, and support unpaid — on Strapi Cloud a production SLA starts at $450 a month on Business

Who should NOT use this guide as a buying decision: a team choosing a CMS on architecture rather than price should read the architecture companion first — a pricing win on the wrong architecture is still the wrong CMS. A team with an enterprise agreement, a nonprofit or startup programme, or a multi-year commit should get quotes — no published price here includes negotiated discounts.

Founder & CEO Insight — Enow A. Jovial

"Every CMS vendor in this guide will tell you their price is simple. None of them is lying and none of them is telling you the whole story, because the price is simple only inside the allowance. The question is never what the plan costs. The question is what your team costs when it outgrows the allowance — the 21st user, the 250,001st request, the dataset that must be private. Price the breach, not the brochure."
— Enow A. Jovial, Founder & Chief Executive Officer

How to buy this without regret

  1. Pull 30 days of real numbers: API requests, CDN requests, bandwidth in GB, editors, documents, environments.
  2. Price all three vendors using the formulas here, at your seat count and at double it.
  3. Check each free-tier ceiling: Sanity's public-dataset rule, Contentful's 100,000-call hard cap, Strapi Cloud's $35 floor.
  4. Run the overage math at twice your current volume, and find each vendor's crossover point.
  5. Trial the tier above your planned purchase for 14 days, with production-shaped traffic.
  6. Confirm renewal terms in writing: Sanity self-serve is monthly with no annual discount, Contentful Lite's annual terms are unpublished, Strapi's annual saving covers extra environments only.
  7. Run the final monthly total through the Break-Even Analysis Calculator and the Pricing Calculator, with hosting, implementation, and training as line items.
  • [x] Real 30-day usage numbers pulled
  • [x] All three vendors priced at current and double seats
  • [x] Free-tier ceilings checked against real volume
  • [x] Overage math run at twice current volume

Price the breach, not the brochure. The cheapest CMS is the one whose ceiling you never hit, and the most expensive is the one whose ceiling you discover in the first invoice.