Moteur and Sanity
Sanity keeps your content in its cloud. Moteur keeps it in a folder you can clone.
Both let you model content in code and give writers a calm place to edit. The difference is where it lives: Sanity’s Content Lake, or a Git repository of your own. Here’s the rest, checked on Sanity’s pages.
Side by side1
Eighteen points that matter for a client site. Sanity wins some of them. Each Sanity fact links to the page it comes from.
| Moteur | Sanity | |
|---|---|---|
| Where the content lives | Plain JSON files in the project’s own Git repository | Sanity’s cloud (the Content Lake)1 |
| In Git | Yes: each project is its own repository, a commit per save | No1 |
| Who runs it | Moteur Cloud. Or host the open-source engine yourself, without the Studio | The editor can run anywhere. The content lives in Sanity’s cloud1 |
| Open source | Engine: MIT. The Studio and Moteur Cloud: not open source | Editor (Studio): MIT. Content Lake: not open source2 |
| Free plan | 1 person, 1,000 entries, 2,000 API requests a month | 20 people, 10,000 documents, 3 days of history3 |
| First paid plan | Personal, $9 a month: 2 people, 10,000 entries | Growth, $15 per person a month3 |
| How it’s priced | A plan per project, with extra people, requests, credits or storage in packs | Per person, plus usage3 |
| Review before publishing | Drafts and reviews on every plan. A reviewer or admin approves | Drafts on every plan. Approvals are early access, or built yourself4 |
| Working together | On Moteur Cloud: see who’s in which field, leave notes on fields, and no save overwrites another’s | Real-time co-editing with presence, on every plan5 |
| Languages | Any number of languages, field by field, on every plan | Unlimited languages, usually through a plugin6 |
| Roles | Admin, developer, writer, reviewer, translator and billing, on every plan. No custom roles | 2 roles on Free, 5 on Growth. Custom roles on Enterprise3 |
| History | Every save is a Git commit, kept as long as the repository | 3 days on Free, 90 on Growth, 365 on Enterprise7 |
| Images | Transforms by URL, eight crop ratios and a focal point you set | Transforms by URL, with a hotspot and crop set in the editor8 |
| Forms | Built in, with a spam folder | Not built in3 |
| API | REST, with an OpenAPI document per site. No GraphQL | GROQ, plus GraphQL and HTTP APIs9 |
| Webhooks | Signed, and retried for two hours if your server is down | 2 on Free, 4 on Growth3 |
| AI agents (MCP) | Official and hosted: agents draft, and a person approves before anything goes live | Official and hosted: reads, writes, and can publish with no approval step10 |
| Writing help (AI) | Off until an admin turns it on. Credits on every plan, from 10 a month | 1,000 credits a month on Free and Growth11 |
Sources
- sanity.io/docs/studio/deployment
- github.com/sanity-io/sanity/blob/main/LICENSE
- sanity.io/pricing
- sanity.io/docs/workflows/cookbook-editorial-review
- sanity.io/studio
- sanity.io/docs/studio/localization
- sanity.io/docs/user-guides/history-experience
- sanity.io/docs/studio/image-type
- sanity.io/docs/content-lake/graphql
- sanity.io/docs/ai/mcp-server
- sanity.io/docs/platform-management/how-ai-credits-work
Checked 26 October 2026. From Sanity’s own pages. If something there has changed, tell us and we’ll fix it here.
Time travel
What did it say in March?
Clients ask. Usually a lawyer is involved. Slide back and see which plans can still answer.
- Sanity · FreeKeeps 3 daysGone
- Sanity · GrowthKeeps 90 daysCan restore
- Sanity · EnterpriseKeeps 365 daysCan restore
- Moteur · every planKeeps everythingCan restore
History windows from Sanity’s pricing and docs. Moteur’s history is the project’s Git log, on every plan, kept as long as the repository.
Which one fits
Who’d you pick?
Seven situations from agency life. Guess, then see where we’d honestly send you. Sometimes it’s a draw.
Louise · Admin
A festival site run by twenty volunteers, and a budget of exactly zero.
Who’d you pick?SanityTwenty people on the free plan is generous. Moteur’s free plan is one person.
Théo · Builder
Your developers want to build a custom editor in React, panel by panel.
Who’d you pick?TieSanity lets you reshape its Studio in React. Moteur’s Studio isn’t yours to reshape, but its REST API does everything the Studio does, so your own editor can too.
Marguerite · Writer
The front end team lives on GraphQL and won’t hear otherwise.
Who’d you pick?SanitySanity has GraphQL beside GROQ. Moteur speaks REST.
Céleste · Reviewer
The client’s lawyer wants the homepage exactly as it was on 3 March, last year.
Who’d you pick?MoteurEvery save is a commit. Check it out, read it, send it.
Claude · AI agent
An agent fills in 200 product pages overnight.
Who’d you pick?MoteurThey wait as drafts. Someone approves them in the morning, with coffee.
Sophie · Writer
Twelve small client sites, each billed to its own client.
Who’d you pick?MoteurA plan per project, from free. Each invoice goes where it belongs.
Céleste · Reviewer
Two writers open the same article at 4:55 pm on a Friday.
Who’d you pick?SanitySanity edits live, together, in the same field. Moteur shows who’s in which field and stops one save from overwriting the other, but you don’t type in the same field at once.
Our honest count: Moteur 3, Sanity 3, ties 1.
Moving day
Moving from Sanity
No one-click importer yet. Here’s how it’s done today, with the tools that exist, and what’s coming.
Works today
Pack up Sanity
Sanity’s command line exports a dataset: every document as NDJSON, with its files.
npx sanity dataset export production sanity-export.tar.gz
Works today
Shape the models
Write each model as JSON and create it from the command line. Or let an agent do it through MCP. It reads a sample of the export and proposes the models. You look them over in the Studio.
moteur models create --file models/article.json moteur models create --file models/author.json
Works today
Bring the content
A short script turns the export into one import bundle: models, files and entries. The command line brings it all in, or nothing if one thing fails. Or connect one agent to both MCP servers: it reads from Sanity’s and writes drafts to Moteur’s. Those drafts wait for a person, like any agent’s work.
# the export reshaped into one bundle: models, files, entries moteur imports run site.json --dry-run # check it all, keep nothing moteur imports run site.json
Works today
Review, then switch
Everything arrives as a draft. A reviewer reads, approves, and it goes live. Then point the site at the project’s channel: one REST API, with its own OpenAPI document.
Coming
An importer for Sanity
We’re writing an importer that reads a dataset export and does steps 2 and 3 in one go. This page will say when it ships. Until then, the steps above work. Its hardest part, turning Sanity’s Portable Text into Moteur’s rich text, is already written and tested.
Questions people ask
A reader asksSanity’s free plan has twenty people. Why Moteur?
MoteurIf you need twenty people today without paying, Sanity is generous there. Moteur’s free plan is one person. A client’s team goes on a paid plan, priced per site.
A reader asksIs Sanity open source?
MoteurIts editor, Sanity Studio, is MIT-licensed. The Content Lake, where the content is kept, is Sanity’s service. Moteur’s engine is MIT and reads plain files. Its Studio comes with Moteur Cloud.
A reader asksDoes Sanity have GraphQL?
MoteurYes, beside its own query language, GROQ. Moteur has a REST API per site, and no GraphQL.
Try it on one site.
A free project costs nothing, and its files are yours from the first save.