Godot and Unity Localization CSV Sanitizer

Inspect translation CSV or JSON files for empty cells, duplicate keys, and broken rows, then export a clean local copy ready for engine import.

LOCALIZATION QA Waiting for a file
Local browser processing
Format
Drop a translation file here Inspect the structure in your browser and keep the source file on your device. UTF8 CSV or structured JSON
03
DATA VIEW

Translation preview

The first rows show the normalized structure that will be exported.

Waiting for a fileDrop CSV or JSON to start the inspection.
CLEAN OUTPUT

Export clean file

Duplicates are removed missing columns are padded and CSV values are escaped again.

Zoom 100%
Utilities Studio

Want this utility on your website?

Customize colors and dark mode for WordPress, Notion or your own site.

Frequently Asked Questions

Does this tool upload my translation file?

No network upload is used by the sanitizer interface. The selected text is read by the browser, analyzed locally, and turned into a download in the same browser session. As with any web tool, review your site own analytics and deployment policy if you embed or customize this component.

What happens when a CSV row has an extra comma?

The row is flagged as malformed and the extra fields are joined into the final column before export. This is useful for the common case where a last translation contains an unescaped comma, but you should review the flagged row because a comma in a middle column cannot be inferred with certainty.

How are duplicate translation keys cleaned?

The first occurrence is kept in the clean output and later occurrences are omitted from the exported file. The findings list shows each removed duplicate so you can compare the source rows and decide whether the first row is the intended one.

Can it validate the quality of a translation?

It checks file structure and missing values, not grammar or meaning. It does not validate placeholders, plurals, gender, context, or whether the wording is correct for your game. Those checks still need a translator, reviewer, or engine-specific validation step.

# Why localization files break during engine import

Translation tables are simple to edit and surprisingly easy to damage. A comma inside a phrase, a missing pair of quotes, or one row with a different number of fields can shift every value to the wrong language column. A repeated key can be just as disruptive because the engine no longer has one unambiguous source string to import.Godot CSV translation importer expects a header row, a first column of identifiers, and consistent translation columns. Unity Localization package also uses CSV to exchange string table data with translators. This sanitizer gives you a small inspection pass before you hand a file back to an engine: it checks the shape, highlights unfinished cells, keeps the first copy of a repeated key, and writes a normalized export.
CSV Quoted commas checked
JSON Array and map input
0 uploads Browser-only workflow
1 click Clean export

# What the sanitizer checks

Detected before import

Problems that are hard to spot in a long translation table

  • Empty language cells that still need a translation
  • Repeated identifiers that would create ambiguous rows
  • CSV records with missing or extra columns
  • Quotes that do not follow the normal CSV field rules

Normalized for export

Small, predictable repairs that are safe to review

  • Missing CSV cells are padded so every row matches the header
  • Extra CSV fields are joined into the final cell and escaped
  • The first row for a duplicate key is retained
  • The original file remains untouched for comparison or rollback

# How to review a cleaned localization file

A clean parse is a structural result, not a language review. Use the findings list to locate missing work, then read the exported file in the engine that will consume it. Check that the identifier column is the column your project expects, that locale headers match the project settings, and that intentional empty values are understood by the runtime. The sanitizer does not judge grammar, placeholders, plural rules, or context-sensitive terminology.
Finding What it means Next action
Empty cellA non-key column contains no textTranslate it or confirm that an empty value is intentional
Duplicate keyMore than one row uses the same identifierCompare the rows before keeping the exported first occurrence
Broken rowThe row shape or quote syntax differs from the headerReview the normalized final cell and compare with the source
Parse errorThe JSON structure cannot be readFix the syntax in a JSON editor before importing

# CSV conventions that matter for game localization

The common CSV rules are deliberately modest: fields are separated by commas, records have a consistent field count, and a field containing a comma, a line break, or a quote can be enclosed in double quotes. A quote inside a quoted field is represented by two quotes. These details matter for translated phrases because punctuation is part of natural language, not a reliable delimiter.
Keep the original beside the clean export
The export is a repair aid, not a replacement for source control. Keep the translator original file, inspect any broken row whose comma was joined into the final column, and run the cleaned file through the target engine before committing it to your project.
Translation key
A stable identifier used by game code to request a localized string.
CSV field
One value between separators in a comma-separated record.
Escaping
The quoting convention that lets punctuation remain part of a value instead of becoming a separator.
Locale
A language and regional convention such as en, es, or ja used to select a translation column.

Bibliographic References