Sanity, evaluated

How good is Sanity at localization?

Short answer

Sanity scores 4 out of 5 on localization in Deploi's review: every plan has unlimited locales (Sanity pricing, October 2026), and plugins cover document-level and field-level models. The risk is the model choice, because field-level locales publish together (Sanity, October 2026) and a Growth dataset stops at 10,000 unique attributes, a limit Sanity says Enterprise doesn't raise (Sanity, October 2026).

Locales included
Unlimited on Free, Growth and EnterpriseSanity doesn't charge per locale; unique attributes per dataset are the limit instead: 2,000 on Free and 10,000 on GrowthSource: Sanity (Plans that scale with you)
Attribute ceiling
10,000 per dataset on Growth and EnterpriseThe attribute guide says Enterprise doesn't raise it and there's no pay-as-you-go option; the pricing page shows Enterprise as CustomSources: Sanity Docs (Attribute limit); Sanity (Plans that scale with you)
Growth document quota
25,000 included, 50,000 with the add-onDocument-level locales multiply documents, and drafts and plugin-created documents count toward the quotaSources: Sanity (Plans that scale with you); Sanity Docs (Technical limits)
Contentful locales
2 on Free, 3 on Lite at $300 a monthLite lists at $300 a month on Contentful's pricing page (October 2026); Contentful's technical ceiling is 500 locales per environmentSources: Contentful (Pricing, Technical Limits)

Deploi’s call

Sanity is a strong localization platform for teams with developers and a weak one for teams that want localization to work out of the box. Default to document-level translation for long-form content and anything with its own publishing schedule, keep field-level for short shared values, and confirm your translation vendor's connector before you lock the model.

FitsSanity fits your localization when

  • Markets publish on their own schedules, so document-level translation suits most content.
  • Developers will own the schema, the plugins and the fallback queries.
  • Your translation vendor's Sanity connector supports the model you choose.
  • Your locale count is growing, and paying per locale elsewhere would hurt.

PartialSanity fits only partly when

  • Editors expect built-in fallback locales, as Contentful configures them, or per-locale publishing, which Contentful sells on specific plans (Contentful pricing; Contentful locale-based publishing, October 2026).
  • Field-level content already sits near the 10,000 attributes per dataset that Sanity's attribute guide sets for Growth and Enterprise (Attribute limit guide, October 2026).
  • Launches must flip many locales live in one moment, which Content Releases is built for, an Enterprise add-on as of October 2026 (Sanity pricing).

Deploi’s rating

4 out of 5

CriterionScoreWhy
Modeling options5 / 5Document-level and field-level, each with a Sanity-maintained plugin, and both can run in one project
Locale cost by plan4.5 / 5Unlimited locales on every plan, bounded by attribute and document quotas
Translation tooling4 / 5AI Assist on Growth, an experimental Translate action, and TMS connectors that each support different models
Per-locale publishing3.5 / 5Document-level publishes each language alone; field-level publishes every language together
Limits at scale3 / 510,000 attributes per dataset, which Sanity's attribute guide says Enterprise doesn't raise; document-level spends document quota
Setup effort3 / 5Nothing is localized by default: plugins, schema, queries and fallbacks are developer work

How does Sanity handle localization?

Sanity handles localization by storing the language as a field value, so translated content is ordinary structured content rather than a built-in locale layer (Sanity Docs, Localization, October 2026). You choose a model per document type, and Sanity maintains two plugins that make each model workable in Sanity Studio: one for translated documents and one for translated fields. Both can run in the same project (Sanity Docs, Localization).

Locales cost nothing extra. Sanity's pricing page lists unlimited locales on Free, Growth and Enterprise and says it doesn't charge for locales, as long as you stay within the unique attributes included per dataset (as of October 2026, Sanity pricing). That condition is the catch: you pay for localization in quota, either attributes or documents, depending on the model.

Fallbacks are yours to write. A query falls back to a base language with the coalesce() function in GROQ (Graph-Relational Object Queries), so a missing translation shows the default copy only if a developer wrote it that way (Sanity Docs, Localization). Our overall Sanity review puts this trade, flexibility for setup work, in context.

How does Deploi score Sanity on localization?

Deploi scores Sanity 4 out of 5 on localization, the rounded mean of six criteria. The score rests on Sanity's documentation, its pricing page and the translation vendors' own connector pages. Sanity scores highest on modeling freedom and locale cost, and lowest on limits at scale and setup effort. Translation tooling sits at 4, because AI Assist, the Translate action and translation management system (TMS) connectors each cover part of the job.

Deploi scores Sanity 4 out of 5 on localization
CriterionScore out of 5Note
Modeling options5Document-level and field-level, each with a Sanity-maintained plugin, and both can run in one project
Locale cost by plan4.5Unlimited locales on every plan, bounded by attribute and document quotas
Translation tooling4AI Assist on Growth, an experimental Translate action, and TMS connectors that each support different models
Per-locale publishing3.5Document-level publishes each language alone; field-level publishes every language together
Limits at scale310,000 attributes per dataset, which Sanity's attribute guide says Enterprise doesn't raise; document-level spends document quota
Setup effort3Nothing is localized by default: plugins, schema, queries and fallbacks are developer work
The overall score is Deploi's judgment: the mean of the six lines is 3.83, rounded to 4 (Deploi arithmetic from the scores above).Sources: Sanity (Plans that scale with you); Sanity Docs (Localization, Attribute limit, Content translation with AI Assist); Phrase (Sanity (TMS)). As of 24 October 2026.

Should you localize by document or by field in Sanity?

Localize by document when a language publishes on its own schedule or carries long-form text, and by field when short shared values must stay in sync across languages. Sanity's localization guide draws the same line: field-level "requires you to publish content in all languages simultaneously," while document-level "lets you publish each language version independently" (Sanity Docs, Localization, October 2026). You can use both in one project, so decide per document type, and plan the localization workflow around the slowest market.

Document-level suits independent markets; field-level suits short values that ship together
QuestionDocument-levelField-level
What it storesOne document per language, joined by referencesOne document holding every language in an array
PublishingEach language publishes on its ownAll languages publish together
Sanity-maintained plugin@sanity/document-internationalizationsanity-plugin-internationalized-array
Quota it spendsDocuments, plus one linked metadata document per setAttributes, a fixed set when you use arrays
Best forArticles, landing pages, Portable TextProduct names, labels, settings
The best-for row is Deploi's judgment from Sanity's localization guide.Sources: Sanity Docs (Localization, Attribute limit, Technical limits). As of 24 October 2026.

Two pitfalls to plan for. Both plugins changed how they store the language in March 2026, so older queries that filter on the item key break after the upgrade (Sanity Docs, Localization). And flipping many document-level locales live in one moment is what Content Releases is built for, an Enterprise add-on (Content Releases user guide, October 2026).

How does translation work in Sanity?

Translation in Sanity runs through one of three routes: AI Assist inside Sanity Studio, the Translate action called from code, or a translation management system (TMS) connector. AI Assist translates whole documents or fields on the Growth plan and up, and whole-document translation overwrites the current values, so editors copy the document first and review the result (AI Assist translation docs, October 2026). The Translate action in Agent Actions takes a style guide and protected phrases from code, but Sanity marks it experimental (Translate quick start, October 2026; Sanity's AI translation guide).

Your TMS connector decides your model more than Sanity does, because several connectors support only document-level translation:

Phrase and the Tinloof Crowdin integration need document-level translation; Smartling and Transifex handle both
ConnectorModels it supportsSetup note
Smartling pluginDocument or field levelNeeds a proxy endpoint because of Smartling's browser security rules
Transifex pluginDocument, field or internationalized arrayImports partial or complete translations
Phrase pluginDocument level onlyNext.js app directory not supported
Tinloof custom integration for CrowdinDocument level, with the internationalization pluginListed free on Crowdin's store; Crowdin says no official plugin exists and Tinloof offers a custom integration
Sources: Sanity (Sanity Studio Smartling plugin, Transifex Plugin); Phrase (Sanity (TMS)); Crowdin (Crowdin Integration for Sanity). As of 24 October 2026.

See Sanity with Smartling and Sanity with Phrase for setup.

Which limits bite when you localize Sanity at scale?

Two quotas bite: unique attributes per dataset, which language objects multiply, and documents, which document-level translation multiplies. A unique attribute is a distinct content path and data type in a dataset. A dataset tops out at 10,000 attributes on Growth, and the attribute guide says moving to Enterprise doesn't raise it and no pay-as-you-go option exists (Attribute limit guide, October 2026). Wrapping each field in a language object "multiplies the number of attributes by the number of languages added" (Attribute limit guide), so that pattern hits the ceiling first, while arrays and separate documents don't.

Growth includes 25,000 documents, and $299 a month extends that to 50,000 in total (Sanity pricing, October 2026); drafts and plugin-created documents count (Technical limits). 2,000 articles in 10 languages at document level is 20,000 documents plus 2,000 linked metadata documents, or 22,000 before drafts (Deploi arithmetic from the figures above). The same content at field level is 2,000 documents. Check the document limits before you pick.

What do you build yourself in Sanity that Contentful's built-in locales provide?

You build the fallback locales and the per-locale publishing workflow, because Contentful builds locales into the platform and Sanity leaves them to your content model. Contentful's field-level pattern duplicates the fields of an entry for each locale and configures fallbacks (Contentful Help Center, October 2026). Its locale-based publishing, which publishes one locale on its own, is an Enterprise-level feature of Enterprise Spaces (Contentful pricing; Contentful locale-based publishing, October 2026). Sanity matches that with document-level translation and fallbacks written into queries.

Contentful also counts locales against the plan: 2 on Free and 3 on Lite, which lists at $300 a month on Contentful's pricing page (October 2026), with a technical ceiling of 500 per environment (Contentful pricing; Contentful technical limits). Sanity vs Contentful covers price.

Contentful ships the locale workflow; Sanity leaves it to your developers
QuestionSanityContentful
Per-locale publishingDocument-level onlyLocale-based publishing in Enterprise spaces
Fallback localesWritten into queriesConfigured in the platform
Who builds the workflowYour developers, with pluginsContentful, inside the platform
Sources: Sanity Docs (Localization); Contentful (Localization strategies, Pricing). As of 24 October 2026.

Deploi’s point of view

Where we disagree
The usual advice says field-level localization multiplies attributes, so avoid it. That's half right. Wrapping fields in a language object multiplies attributes by the number of languages, but the internationalized-array pattern Sanity recommends keeps a fixed set of paths however many languages you add. The real costs of field-level sit elsewhere: every language publishes together, and some translation connectors, Phrase's among them, don't support it at all.
What we'd tell you to do first
Count your locales, your content types and how many markets publish on their own schedule. Then ask your translation vendor which Sanity localization model its connector supports. Those three numbers and that one answer pick the model; the schema follows from them.
What we refuse to promise
We won't promise an attribute count for your schema or a translation turnaround, because both depend on your locales and fields. We would measure attributes on a pilot dataset instead of guessing.

When this answer changes

  • Sanity raises or sells extra unique attributes per dataset, or confirms a custom Enterprise figure
  • Sanity adds built-in locale fallbacks or per-locale publishing for field-level content
  • Phrase or Crowdin adds field-level support to its Sanity connector
  • The Translate action in Agent Actions leaves experimental status
  • Sanity changes the Growth document quota or the locale line on its pricing page
  • Contentful changes the locales included on its Free or Lite plans

Sources

Every source opened and checked on 25 October 2026.

  1. Sanity, Plans that scale with yousanity.io · checked 24 October 2026
  2. Sanity Docs, Localizationsanity.io · checked 24 October 2026
  3. Sanity Docs, Attribute limitsanity.io · checked 24 October 2026
  4. Sanity Docs, Technical limitssanity.io · checked 24 October 2026
  5. Sanity Docs, Content translation with AI Assistsanity.io · checked 24 October 2026
  6. Sanity Docs, Translate quick startsanity.io · checked 24 October 2026
  7. Sanity, AI Translations with Sanity's Agent APIsanity.io · checked 24 October 2026
  8. Sanity, Sanity Studio Smartling pluginsanity.io · checked 24 October 2026
  9. Sanity, Transifex Pluginsanity.io · checked 24 October 2026
  10. Phrase, Sanity (TMS)support.phrase.com · checked 24 October 2026
  11. Crowdin, Crowdin Integration for Sanitystore.crowdin.com · checked 24 October 2026
  12. Contentful, Localization strategiescontentful.com · checked 24 October 2026
  13. Contentful, Pricingcontentful.com · checked 24 October 2026
  14. Contentful, Technical Limitscontentful.com · checked 24 October 2026
  15. Sanity Docs, Content Releases user guidesanity.io · checked 24 October 2026
  16. Contentful, Locale-based publishingcontentful.com · checked 24 October 2026