What it does
Neural machine translation across 100+ languages and dialects:
Text translation — single or batch translation via REST API.
Document translation — translates entire documents (Word, PDF, HTML, etc.) while preserving layout and formatting.
Custom Translator — fine-tunes translation quality for domain-specific terminology (legal, medical, technical).
Transliteration — converts text between scripts without changing the language (e.g. Arabic to Latin characters).
Language detection — identifies the language of an input string.
When you'd use it
You need to serve content in multiple languages without maintaining separate human-translated copies.
You are processing multilingual data (support tickets, reviews, documents) and need everything normalised to one language for analysis.
You are building a real-time communication feature across language barriers.
Sample use case
A global SaaS company receives customer support tickets in 30+ languages. Azure AI Translator detects the language of each incoming ticket and translates it to English. The English text is then fed into a classification model to assign priority and team. Support agents see both the original and translated text; replies are translated back into the customer's language before sending.
Example reference architecture
.png)
Pricing & How Costs Work
Note: Microsoft has re-branded this service "Azure Translator in Foundry Tools" on the pricing page as part of the Azure AI Foundry umbrella. The underlying resource kind (TextTranslation) and API are unchanged.
Azure AI Translator (S1, pay-as-you-go, Central US) is priced per million characters submitted for most features, with a few exceptions billed on different units, as a flat fee, or not billed at all:
Feature | Pricing unit | Notes |
|---|---|---|
Text Translation | $10 per million characters | Source text characters, multiplied by the number of target languages; output length does not affect billing |
Document Translation | $15 per million characters | Source document characters across all submitted documents in a batch |
Document Translation (Image) | $8 per thousand images | Each image includes up to 500 characters; an image containing more (e.g. 672 characters) is billed as multiple images (2, in that example) |
Custom Translator (inference) | $40 per million characters | Uses your fine-tuned model; ~4x the standard text translation rate |
Custom Translator (training) | $10 per million source+target characters | Capped at $300 per training run, no matter how large the training corpus; charged on every re-run |
Custom Translator model hosting | $10 per hosted model, per region, per month | Flat fee charged for every model kept hosted, not pro-rated for partial months — accrues even with zero translation calls |
Transliteration | Billed at the standard text translation rate | Character-counted (script conversion, e.g. Arabic → Latin); no separate/premium rate — shown as its own line item in Cost Management but priced the same as Text Translation |
Dictionary Lookup / Examples | Billed at the standard text translation rate | Character-counted; earlier guidance suggesting a higher rate than standard translation is incorrect — Microsoft's pricing page lists it under "Standard Translation" with no separate price |
Language Detection ( | No charge | Per Microsoft's official pricing model, these two operations are never billed — whether called standalone or bundled inside a translate request |
Key pricing mechanics:
Free tier (F0): 2 million characters/month, shared across standard translation and custom translation training — sufficient for low-volume trials.
Standard (S1) tier: Per-million-character pricing as above; no automatic volume discount — sustained high volume requires opting into a Commitment Tier (see below).
Character counting rules (per Microsoft's official FAQ):
Whitespace, punctuation, and every Unicode code point are counted.
Markup/HTML and XML tags in the source text ARE counted as billable characters, even when using
textType=html. This corrects a previous assumption in this document —textType=htmlonly controls how markup is parsed/preserved during translation (and enablesclass="notranslate"exclusions); it does not exclude tags from the billed character count. Genuinely non-translatable boilerplate must be stripped by your own pipeline before submission if you want to avoid paying to translate it.Identical text submitted repeatedly is billed every time — there is no automatic dedupe.
For document translation, characters are counted from the extracted text content, not the raw file size.
Document translation batches entire files asynchronously. Cost is proportional to the total extracted text character count across all files in the batch, not the number of files.
Custom model training is charged per training run (capped at $300/run); custom model hosting is a separate, ongoing monthly charge that continues for as long as the model is deployed, independent of whether it is ever called.
Commitment Tiers (reserved capacity): For sustained high volume, an S1 commitment tier discounts Standard Translation only (e.g. $2,055/month for 250M characters ≈ $8.22/M, down to ~$5.50/M at the 4B-character tier — roughly 18–45% cheaper than pay-as-you-go). A separate C2–C4 commitment tier discounts Custom Translation only. Per Microsoft's FAQ, getting a discount on both Standard and Custom Translation requires provisioning both an S1 tier resource and a C2–C4 resource — one instance type cannot discount both workloads. Connected-container and disconnected-container (air-gapped, annual up-front) pricing is also available for regulated/offline environments.
What Drives Costs
Cost driver | Why it matters |
|---|---|
Total characters translated | The sole cost driver for text and document translation. High-volume pipelines (e.g. translating every support ticket) accumulate cost rapidly. |
Number of target languages | Translating source text into 5 languages = 5× the character cost vs translating into 1 language. |
Document size and volume | Large documents with verbose text (reports, contracts) cost more than short-form content. |
Training corpus size | Larger Custom Translator training datasets cost more per training run. |
Dictionary Lookup usage | Higher per-character rate than standard translation — should be used selectively. |
Whitespace-heavy content | If source text has extensive whitespace or padding, those characters are still billed. |
Cost optimisation levers:
Only translate into languages that are actively needed — avoid speculative multi-language pipelines.
Use
textType=htmlwhen translating HTML content so markup tags are excluded from the character count.Normalise or deduplicate source text before translation — identical strings translated repeatedly each incur the full cost.
For low-sensitivity content that appears frequently (boilerplate, UI labels), cache translation results rather than re-calling the API.
Evaluate whether language detection needs to be called explicitly — if the source language is known, skip the detection call.
Azure Cost Data — Meters & Meter Subcategories
Azure AI Translator appears under the Cognitive Services service family in Cost Management. Resource type: Microsoft.CognitiveServices/accounts with kind TextTranslation.
Meter name | Meter subcategory | What it counts |
|---|---|---|
Standard Translation Characters | Standard S1 | Characters processed by the standard text translation API |
Document Translation Characters | Standard S1 | Characters processed by the document translation API |
Custom Translation Characters | Standard S1 | Characters processed using a deployed custom translation model |
Custom Translation Training Characters | Standard S1 | Characters in the training corpus during a custom model training run |
Transliteration Characters | Standard S1 | Characters processed by the transliteration API |
Dictionary Lookup Characters | Standard S1 | Characters processed by the Dictionary Lookup and Dictionary Examples APIs |
Meter subcategory notes:
All translation meters report
Quantityin raw character counts (not millions). Divide by 1,000,000 to reconcile with the published per-million pricing.Standard text translation and Custom Translator inference share the same per-million pricing but appear on separate meters, making it possible to see what fraction of translation cost is served by the custom model vs the standard model.
Document translation jobs can translate many files in parallel; the meter accumulates the aggregate character count across all files in all submitted batches during the billing period.
If you use the global endpoint (no region specified), the
ResourceLocationfield in billing exports may show asGlobalrather than a specific Azure region — this can complicate regional cost breakdowns.Language detection calls bundled within a translation request do not generate a separate meter row; standalone language detection calls do.
Common Developer Mistakes That Drive Up Costs
Translating into more target languages than are actively used. Teams sometimes translate content into 10–15 languages speculatively ("in case we expand there") when only 3–4 are actually served to users. Each additional target language multiplies the character cost by the same amount as the first — translating 1,000 characters into 10 languages costs 10× a single-language translation.
Not using the
textType=htmlparameter when translating HTML content. Without this parameter, HTML markup tags count as characters and inflate the billed character count. A page with significant markup can have 20–40% of its character count in tags that don't need to be translated.Re-translating identical or near-identical content on every pipeline run. Translation pipelines that re-translate all source content on each run (rather than tracking what has changed) bill for previously translated content repeatedly. Product descriptions, UI strings, and documentation pages rarely change daily, but without change-tracking they are retranslated as if they have.
Translating content where the source language matches the target language. Without language detection pre-filtering, a pipeline may submit English content to be translated into English — a billable character count that produces identical output. This is common in pipelines that accept multilingual user content without first detecting the source language.
Not caching translations for frequently repeated strings. UI labels, button text, error messages, and notifications are typically translated once and then reused. Calling the Translation API for these strings on every page load or pipeline run accumulates cost for constant content.
Sending full documents through the API when only specific sections need translation. Document translation bills for all characters in the submitted document, including headers, footers, and boilerplate legal text that may not need translation.
What Could Make Your Bill Go Up or Down Next Month
Could go UP:
A new target language is added to the translation pipeline for a market expansion, immediately multiplying character cost for all content by (languages+1)/languages.
A backlog of previously untranslated historical content is processed in a one-time batch, generating a large spike in character consumption.
User-generated content volume increases (more support tickets, more product reviews, more forum posts) proportionally increasing translation volume.
A pipeline bug removes the language detection pre-filter, causing same-language content to be submitted for translation.
Document translation is added to a workflow that previously only handled short-form text, significantly increasing average character count per submission.
Could go DOWN:
The number of target languages is reduced to only those actively serving users, based on analytics showing near-zero traffic to some locales.
Translation caching is implemented for static UI strings and notifications — these are translated once and stored.
The
textType=htmlparameter is adopted for HTML content pipelines, removing markup characters from the billable count.Change-tracking is added to the translation pipeline so only modified content is re-translated on each run.
Language detection pre-filtering is added to skip translation for content already in the target language.
Most Common Optimisation Techniques
Technique | Mechanism | Typical saving |
|---|---|---|
Reduce target language count to actively used locales | Audit analytics to identify languages with near-zero user traffic; remove from translation pipeline | Linear reduction per language removed — removing 5 of 15 languages saves 33% on translation volume |
Use | Excludes markup tags from the billable character count | 15–40% reduction for markup-heavy content |
Cache translations for static and low-change content | Store translated UI strings, notifications, and boilerplate; invalidate cache only on source change | Can eliminate 30–70% of translation calls for static content pipelines |
Add language detection pre-filtering | Skip translation when source language matches target language | Eliminates cost for same-language submissions in multilingual input pipelines |
Track content changes to avoid re-translating unchanged content | Store a content hash alongside the translation; only re-translate when the hash changes | Proportional to the stability of the content — high saving for documentation and product catalogue pipelines |
Submit only the sections that require translation | Pre-process documents to extract translatable content and skip legal boilerplate, headers, and footers | Depends on content structure; 10–30% reduction on document-heavy workloads |