Sanity vs Contentful: which headless CMS for a small team
Both are good products, and for a small team the choice between them will not move your invoice much. A business website with a CMS is step 03 on our ladder, EUR 1.500 to 3.500, whether the content sits in Sanity or in Contentful. What moves that number is the page count, how complicated the content model is, and how much has to be designed rather than reused.
The split in one line: Sanity keeps your content model in your codebase and gives you an editing app you shape yourself, Contentful keeps the content model in a hosted admin that a non-developer can change without a deploy. Nearly everything else in this comparison hangs off that one difference.
The cheaper answer first: you may not need either
A CMS earns its place when somebody who does not write code needs to change words and images without waiting for a developer. If that is not your situation, you are about to buy a login, a monthly bill and a second place where your content can go stale.
Signs you can skip it for now:
- The pages change a handful of times a year, and the same person always changes them.
- Nobody outside the build team needs an account.
- There is one language and one market.
- The blog is a plan rather than a habit.
In that case content can live as markdown files in the same repository as the site. An edit is a commit, publishing is a push, there are no editor seats to pay for, and if you outgrow it later moving markdown into Sanity or Contentful is a scripted import rather than a rewrite. We build sites this way when it fits, and we say so during scoping rather than after the invoice.
Where the content model lives
In Sanity, content types are code. They sit in your repository as TypeScript, they go through the same review as the rest of the site, and changing a field is a commit and a deploy. The model cannot quietly drift away from the templates that render it. The trade is that an editor cannot add a field on a Friday afternoon without a developer.
In Contentful, content types are configured in the hosted web app. An administrator adds a field in a browser tab with no deploy involved. That is genuinely faster for a marketing team that wants to own its own structure, and it is why Contentful has environments: you make the change in a sandbox environment, check the front end against it, then merge. Skip that habit and a change made in a browser tab can break a live page.
Who edits, and what they see
Sanity Studio is a React application. You host it and you can reshape it: custom input components, a preview of the real page next to the fields, a sidebar organised the way your team thinks about content. That flexibility is build time, and build time is money.
The Contentful editor is hosted and fixed. There is nothing to build and nothing to deploy, and an editor who has used it elsewhere will recognise it immediately. There is also less room to tailor it when your content does not fit the default shape.
Side by side
| Question | Sanity | Contentful |
|---|---|---|
| Where content types are defined | In your repository, as code | In the hosted web app |
| Changing a field | A commit and a deploy | An admin change, ideally through a sandbox environment |
| The editing app | Studio, a React app you host and can customise | Hosted, familiar, little to customise |
| Rich text | Portable Text, rendered by your own components | Rich text document, rendered by your own components |
| Reading content | GROQ or GraphQL | REST or GraphQL |
| Languages | Field or document level, decided in your schema | Locales configured per space |
| Images | Resized and cropped on the delivery URL | Resized and cropped on the delivery URL |
| Getting content out | Command line export of content and assets | Command line export of content and assets |
| Pricing shape | A free tier, then paid per editor seat plus usage | A free tier, then plan tiers with user and usage limits |
Both companies revise their plans. We read the current plan page during scoping instead of printing a figure here that will be wrong by the time you read it.
What it costs to build either one
The CMS is not the price driver. The step is.
- Step 02, mini-site, EUR 900 to 1.500. Two or three pages, a contact flow and a basic CMS, 2 to 3 weeks.
- Step 03, business website, EUR 1.500 to 3.500. Four to seven pages, a CMS, service pages and booking or contact, 3 to 6 weeks.
- Step 04, advanced site or web app, EUR 3.500 to 7.500. Login, dashboard, API, CRM, payments or a chatbot, 6 to 12 weeks.
Care is EUR 100 to 300 a month and covers updates, monitoring, backups and small fixes. It is not a redesign and it is not new features. The full ladder is on packages, and how we work is on design and engineering. A fixed quote always follows scoping, never precedes it.
How the build runs
- Scope. What the pages are, who edits them, which fields are real rather than imagined. The CMS decision gets made here, not later.
- Content model. The types get written down before anything is designed, because a field invented halfway through a build is a field that has to be backfilled by hand.
- Design and build. Templates, components, then the editing experience.
- Content entry. This is the part that waits on you. The model can be perfect and the site still cannot launch without your words and your photographs.
- Launch and handover. The code, the repository, and a walkthrough of the editor with whoever is actually going to open it.
Step 02 runs 2 to 3 weeks, step 03 runs 3 to 6 weeks. Those ranges assume content entry does not stall.
When to spend less
- Stay on markdown until it hurts. The moment a second non-technical person needs to publish, buy a CMS. Before that moment, do not.
- Keep the CMS you already have. A tired front end is not a reason to migrate content. Rebuilding the front end against your existing CMS is a smaller job than moving the content as well.
- Do not buy seats you will not fill. Seats and user limits drive the bill on both, so count the people who will genuinely log in.
- One page may be enough. Step 01, a single-page landing with a form and analytics, is EUR 600 to 900 and takes 1 to 2 weeks. If the only job of the site is to get somebody to contact you, a CMS solves a problem you do not have yet.
Questions we get asked
Which one would you choose if I have no preference?
Sanity, when the people who own the site are comfortable with the model living in the repository, because a schema that is reviewed like code stays honest. Contentful, when somebody in marketing needs to add a field or a content type without booking developer time. Both are defensible. The wrong one is the one nobody on your side wants to open.
Can I move from one to the other later?
Yes. Both export content and assets from the command line, and the content itself transfers. The cost is not the content, it is rewriting the queries and the templates that read it. Budget for a rebuild of the data layer rather than a rebuild of the whole site.
Who owns the content, the code and the accounts?
You own the code, the repository and the database. Your content sits in the CMS account, so make sure someone on your side has owner access to it. Hosting is agreed per project, and we can host the site.
What does Care cover once the site is live?
EUR 100 to 300 a month for updates, monitoring, backups and small fixes. It does not cover a redesign or new features, which get scoped and quoted like any other piece of work.
Tell us what changes on your site and who needs to change it, and we will say which of the two we would use and what the build costs. Start the conversation.
Building something?
JP Studio designs and builds websites, storefronts and product interfaces.