Catch translation errors before they ship

i18nlint checks your XLIFF files against their source text with 25+ configurable rules — placeholders, brackets, punctuation, duplicates and more. Get a clear report in seconds, right in your browser.

Stop shipping broken translations

Automatically lint your translations and catch the issues that slip past human review. Ensure every string meets your quality standards before it reaches production.

Stop shipping broken translations

Everything i18nlint checks

One pass over your XLIFF files, dozens of checks — all configurable.

🧩

Placeholder checks

Spot missing or extra placeholders in qt (%1), gettext (%s) and xliff ({name}) syntax.
🔀

Duplicate detection

Flag the same source translated two ways — or one translation reused for different sources.
🔍

25+ pattern rules

Brackets, URLs, emails, currency, whitespace, punctuation and numbers — compared between source and target.
📊

Reports you can use

Export a self-contained HTML report, CSV for spreadsheets, or SARIF for code-scanning tools.
🔒

Files deleted immediately

All uploaded files are deleted instantly after processing. Your data is never stored or retained.
📄

XLIFF 1.2 & 2.x

Reads both versions, including inline markup and plural forms.
📏

Length ratios

Catch suspiciously short or long translations relative to the source.
🎛️

Fully configurable

Tune every rule’s severity in a simple TOML file and exclude languages, ids or messages you don’t care about.

Fast, written in Rust

Lints thousands of translation units in a blink — single files or whole directories.

Frequently asked questions