Multilingual CMS limits differ: Contentful includes 2 locales on Free and 3 on Lite, while Sanity does not charge for adding languages. Storyblok includes 2 locales on Starter; Growth includes 2 and charges $20 per additional locale per month. Alongside locale counts, compare independent translation publishing and what the API returns when a translation is missing. The official sources for these differences are linked below.
Six headless CMSs compared for localization
A locale identifies a language and, where applicable, a region, such as en-US. Supporting US and UK English can require a different count from simply supporting “one English language.” Build your estimate around the actual codes you need.
Blank cells mean the linked official documentation did not establish the behavior; they do not mean a feature is unavailable. “Status” refers to publishing states or editorial stages, rather than a judgment about translation quality. API examples show representative retrieval approaches.
CMS | Locales by plan | Localization model | Missing-translation fallback | Selecting a language through the API | Status by language | Cost or constraints when adding languages |
|---|---|---|---|---|---|---|
microCMS | No dedicated locale allowance listed | Model separate entries, separate APIs or language-specific fields | Use a language-specific API or custom language fields | Separate entries have separate publication states | Separate APIs consume API allowances: Hobby includes 5 APIs; Team includes 10. Modeling, pricing | |
Contentful | Free 2; Lite 3; Enterprise custom | Built-in field localization; entry-level and other approaches also possible | Configurable fallback locales and chains for missing fields | CDA: | Locale-based publishing shows draft, published and changed states per locale; ask about eligible plans | Free $0; Lite $300/month. More than 3 locales requires a custom Enterprise contract. Pricing, models, API, fallbacks, status |
Sanity | Unlimited locales without per-locale charges on Free, Growth and Enterprise; attribute and other quotas still apply | Model translations at field or document level | Define fallback values with GROQ | Filter stored values such as | Document-level translations can publish independently | Adding languages is free; the model consumes attributes or documents. Pricing, modeling and queries |
Strapi 5 | No limit on the number added; select from the predefined locale list | Localized versions of a document, with localization configured per field | REST: | Draft & Publish manages drafts and publishing; with i18n, bulk publish and unpublish apply only to the selected locale | Community is free; budget separately for hosting and maintenance. Locales, API, publishing, CMS pricing | |
Storyblok | Starter 2; Growth includes 2 with additions available; Growth Plus 10; Premium and Elite custom | Field-, folder- or space-level translation | Field-level translation accepts | Field-level: | Individual translation publishing can be enabled; language-specific workflows are on Premium and Elite | Growth $99/month plus $20 per additional locale/month; Growth Plus $349/month with 10 locales. Pricing, models, workflows |
genko.me | Free includes 1 additional language; Plus and Pro have no limit on the number. See plan specifications | Language-specific values share a content ID and field structure | Off by default; |
| Publication state is managed per language | Language versions count toward content storage. Localization, API |
Dollar amounts use the monthly USD pricing option. Follow the linked yen-denominated terms for microCMS and genko.me. Prices and contractual terms can change; check official pricing before subscribing.
Narrow the shortlist by language count and translators
Estimate beyond the first two languages
Calculate costs and data volume for the next market, rather than only your initial two-language launch. For example, 100 source articles in five languages means managing up to 500 language-specific article bodies. The number of stored records depends on the product's model: those bodies do not necessarily become 500 identical billing units.
Include the base subscription, extra locales, editors, translation services, storage, API usage and operational maintenance in the estimate. Free language additions do not include free human translation and review.
Decide who designs the model and who runs it
If your existing microCMS workflow works and developers can maintain the links between translations, test separate entries first. Adding a language does not necessarily require creating another API.
Consider Contentful when you want to organize shared and translated values by field, and Sanity when you want to adjust translation models and queries in code. Include Strapi if your team can take responsibility for running its server. If language-specific editorial stages are a requirement, evaluate Storyblok's eligible plans with the people who will actually use them. For every candidate, confirm that the contract you are considering includes the capabilities in the table.
Test URLs and translation workflows before subscribing
Connect language-specific URLs to the requested content
First decide on routes such as /ja/news/example and /en/news/example, including whether slugs need translation. If translations do not share an ID, keep an identifier linking each translation to its source. Test CMS language selection together with website routing.
Decide whether an English URL may display Japanese source content as a fallback. If it may, explain the substitution to readers rather than presenting it as a completed translation. Falling back for a whole article and filling only missing fields produce different reading experiences.
For URL and hreflang implementation, see building a multilingual website. For a broader shortlist that includes free allowances, see the free headless CMS comparison.
Separate publication state from translation review state
“Published” does not mean “translated against the latest source revision.” To recognize work needed after a source edit, record the source revision being translated, its owner, review-pending state and approval state in an operational tracker or appropriate management fields. Test whether your chosen plan provides enough built-in workflow support.
During the trial, have the actual editors complete this sequence:
Publish only the source article and leave the translation as a draft.
Leave one translated field empty and inspect the API response.
Publish the translation, update only the source and check whether the team can identify the outstanding translation update.
Unpublish one language and check the site's listings, detail page and language switcher.
Being able to select a translation in the editor is only part of the evaluation. Confirm that delivery responses and publishing operations support the same intended workflow.
FAQ
Can I use a multilingual CMS for free?
Contentful Free and Storyblok Starter include 2 locales. Sanity does not charge for adding languages. Strapi Community is also free, but server costs and maintenance need a separate budget. Check storage and publishing requirements against the official sources in the table.
Should I use field-level or entry-level localization?
Try field-level localization when only part of a shared product record needs translating. Try entry-level localization when article structure or release timing differs by region. Storage structure alone does not determine publishing behavior, so test language-specific publishing separately.
Does requesting a missing translation always return the source language?
Behavior depends on the product and configuration. Field-level and whole-article fallbacks are also different. Do not interpret a blank cell as automatic fallback: test missing translations, empty values and unpublished versions separately.
Does translation status tracking replace a review tracker?
Draft and published states alone do not establish whether a translation follows source changes or has passed proofreading. Test whether the built-in tools can represent ownership and approval, then supplement any missing information.
