Moteur and TinaCMS
Tina and Moteur both keep content in Git. They differ on who says yes.
Tina writes Markdown and JSON into your site’s repository and commits straight to the branch. Moteur writes JSON files too, and a reviewer approves in the Studio before anything goes live. Checked on Tina’s pages.
Side by side1
Eighteen points that matter for a client site. TinaCMS wins some of them. Each TinaCMS fact links to the page it comes from.
| Moteur | TinaCMS | |
|---|---|---|
| Where the content lives | Plain JSON files in the project’s own Git repository | Markdown, MDX and JSON files in your Git repository1 |
| In Git | Yes: each project is its own repository, a commit per save | Yes: each save is a commit, straight to the branch unless it’s protected2 |
| Who runs it | Moteur Cloud. Or host the open-source engine yourself, without the Studio | TinaCloud, or host the backend yourself1 |
| Open source | Engine: MIT. The Studio and Moteur Cloud: not open source | Apache-2.03 |
| Free plan | 1 person, 1,000 entries, 2,000 API requests a month | 2 people, 2 roles4 |
| First paid plan | Personal, $9 a month: 2 people, 10,000 entries | Team, $24 a project a month, 3 people4 |
| How it’s priced | A plan per project, with extra people, requests, credits or storage in packs | Per project, with extra seats4 |
| Review before publishing | Drafts and reviews on every plan. A reviewer or admin approves | Paid plans: a save to a protected branch opens a GitHub pull request5 |
| Working together | On Moteur Cloud: see who’s in which field, leave notes on fields, and no save overwrites another’s | Through Git branches and pull requests. No presence in its docs6 |
| Languages | Any number of languages, field by field, on every plan | Built yourself in the schema, by folder or by field7 |
| Roles | Admin, developer, writer, reviewer, translator and billing, on every plan. No custom roles | 2 roles. Custom roles on Enterprise4 |
| History | Every save is a Git commit, kept as long as the repository | Your repository’s Git history8 |
| Images | Transforms by URL, eight crop ratios and a focal point you set | Files in your repository or a storage provider. No transforms built in9 |
| Forms | Built in, with a spam folder | Not built in1 |
| API | REST, with an OpenAPI document per site. No GraphQL | GraphQL, generated from your schema10 |
| Webhooks | Signed, and retried for two hours if your server is down | Yes, per branch, on TinaCloud11 |
| AI agents (MCP) | Official and hosted: agents draft, and a person approves before anything goes live | No official MCP server12 |
| Writing help (AI) | Off until an admin turns it on. Credits on every plan, from 10 a month | Listed as coming soon4 |
Sources
- tina.io/docs
- tina.io/blog/first
- github.com/tinacms/tinacms/blob/main/LICENSE
- tina.io/pricing
- tina.io/docs/drafts/editorial-workflow
- tina.io/editorial-workflow
- tina.io/docs/guides/internationalization
- tina.io/docs/faq
- tina.io/docs/reference/media/overview
- tina.io/docs/graphql/queries
- tina.io/docs/tinacloud/webhooks
- tina.io/llms.txt
Checked 26 October 2026. From TinaCMS’s own pages. If something there has changed, tell us and we’ll fix it here.
The night shift
One typo, two roads
Fixing a typo is easy. Fixing a typo without deleting a row is harder. Watch it happen twice.
Marguerite Fontaine fixes a typo in the pricing table, and deletes a row by accident.
TinaCMS
- Saves
- Commits to main
- Your host rebuilds
- Live, row missing
Moteur
- Saves a draft
- Asks for a review
- Céleste spots the missing row
- Live, row back
On Tina’s paid Editorial Workflow, a protected branch turns the save into a GitHub pull request instead. Someone still has to read the diff.
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.
Théo · Builder
A developer’s blog in Markdown, written by the developer.
Who’d you pick?TinaCMSTina edits your Markdown in place, in your repo. Lovely.
Marguerite · Writer
Writers who want to see the page as they type, on a React site.
Who’d you pick?TinaCMSTina’s visual editing does just that, in open source.
Louise · Admin
A client team of six: two writers, a translator, a reviewer, an admin and the person who pays.
Who’d you pick?MoteurEight roles, on every plan. Tina has two until Enterprise.
Céleste · Reviewer
Nothing goes live until legal reads it.
Who’d you pick?MoteurReviews happen in the Studio, not in a GitHub pull request.
Claude · AI agent
An agent drafts the product pages.
Who’d you pick?MoteurMoteur’s MCP server is hosted, and agents’ drafts wait for a person. We found no official one for Tina.
Sophie · Writer
The content must live in Git, full stop.
Who’d you pick?TieBoth keep it there, a commit per save. Tina in your site’s repository, Moteur in one of its own.
Céleste · Reviewer
Two writers open the same article at 4:55 pm on a Friday.
Who’d you pick?MoteurTina leaves it to Git branches. Moteur shows who’s in which field, as it happens.
Our honest count: Moteur 4, TinaCMS 2, ties 1.
Moving day
Moving from TinaCMS
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 TinaCMS
Nothing to export: your content is already Markdown, MDX and JSON in your repository.
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 point an agent at the repository: it reads the Markdown and writes drafts through Moteur’s MCP server, and they wait for a person.
# 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 TinaCMS
We’re writing an importer that reads a folder of Markdown, MDX and JSON and does steps 2 and 3 in one go. This page will say when it ships. Until then, the steps above work.
Questions people ask
A reader asksWe both use Git. What’s the difference?
MoteurTina’s repository is your site’s: content sits next to the code. A Moteur project is a repository of its own, served to the site through an API, and you can push it to a remote of yours.
A reader asksHow does review work in Tina?
MoteurOn paid plans, a save to a protected branch opens a GitHub pull request, reviewed and merged in GitHub. In Moteur, a writer asks for a review and a reviewer approves in the Studio.
Try it on one site.
A free project costs nothing, and its files are yours from the first save.