Catch missing CJK glyphs, broken tokens, and audio clicks before Steam players do.
Your development machine silently borrows system fonts that never travel inside your build. ShipQA diffs your .csv, .po, and .json strings against bundled .ttf font tables and repairs .wav loop boundaries in 3.8 seconds.
npx shipqa CLI and GitHub Action
Replaces $600/yr enterprise LQA seats
100% client side binary parser · Or · get sample .zip
localization/ui_menus.csv
1,480 keysLocales: en, zh_Hans, ja, ko, de, ru, pt_BR
fonts/PixelOperator_UI.ttf
cmap format 41,010 glyphs mapped · Fallback: NotoSansCJK_Subset.otf
3 release blockers detected across 7 locales
43 unique codepoints missing from bundled font chain · 2 broken placeholder tokens
38 Han ideographs and arrow U+2192 (→) are absent from PixelOperator_UI.ttf and fallback chain.
Source string requires {player_name} and [color=#ffd700]. LLM translation translated variable key to {spieler_name} and dropped closing [/color].
Loop boundary jumps from amplitude +0.418 to -0.092 with no smpl chunk header, causing an audible pop every 30.0s.
7,266
Playable demos in October 2026 Steam Next Fest competing for wishlists
28.4%
Next Fest AI disclosures citing translation and localization (+12.8 pts in 2026)
1,010
Total codepoints in Godot default UI font (zero CJK, Arabic, or arrow glyphs)
3.8s
Median local audit time for 14,620 strings, 6 fonts, and 48 WAV stems
Why local playtesting misses it
Your development machine is the single worst place to test whether players can read your game.
When you test Simplified Chinese, Japanese, Korean, Russian, or even a simple Continue → Next arrow on your workstation, your engine quietly borrows fallback fonts from your operating system. None of those system fonts travel inside your exported Steam .pck or Unity build.
Silent OS font borrowing
Godot and Unity shape 你好 using /usr/share/fonts or Windows system fallbacks during editor playtests. Nothing prints to the console, and get_string_size() returns a normal width.
AI translation token corruption
Batch translating a 4,000 row CSV with DeepL or an LLM routinely mangles {0}, %d, [wave], or <sprite=2> tags, or expands German and Russian strings 42% past fixed UI container widths.
Unmarked WAV loop boundaries
Exported ambient stems and DAW loops frequently lack embedded smpl chunk metadata or end on a non zero sample crossing, creating an immersion breaking click every time the loop wraps.
The pre launch verification standard
One missing glyph turns six months of worldbuilding into a day one Mixed review on Steam. Verify every character, token, and audio loop in four seconds flat.
Deterministic binary inspection
Built to fix the file, not just flag the row.
Every check runs offline in your browser or inside your GitHub Actions runner and outputs patched assets ready to drop straight back into your project repo.
Exact Unicode coverage diff across your fallback chain
Drop in your primary UI font plus your CJK or Cyrillic fallback .ttf/.otf files alongside your localization table. ShipQA parses binary cmap format 4 and format 12 subtables, flags every unrenderable codepoint by locale and translation key, and exports the exact deduplicated character set for Unity TextMeshPro Font Asset Creator or Godot 4 dynamic font preloading.
Zero broken variables or unclosed BBCode tags
Validates strict parity for C# {0} and named {item_count} tokens, printf %s/%d specifiers, Godot [color]/[img] BBCode stacks, and Unity RichText tags across every translated cell.
Pixel width overflow alerts before layout clipping
Instead of guessing character counts, ShipQA measures actual glyph advance widths (hmtx table) in your target font and flags German, Russian, or French strings that exceed your button or dialogue box width budget by more than 1.35x.
Automatic zero crossing smoothing and RIFF smpl chunk injection
Batch scan your entire audio/sfx and audio/music directories. ShipQA identifies loop start and end sample discontinuities, applies a micro cosine crossfade window at the boundary, and writes standard binary smpl loop markers recognized by Unity, Godot, and FMOD.
16 / 24 / 32 bit
Uncompressed PCM
< 1.5 ms window
Zero pitch shift
Batch ZIP export
Direct replacement
Simple, indie friendly licensing
Pay once. Run on every game you ship.
Enterprise localization suites charge $600 to $3,000 a year and still cannot read a binary .ttf font table or repair a .wav loop click. Own ShipQA outright for the price of two indie games.
Browser Diagnostic
Free foreverInstant sanity check for game jams and vertical slice demos.
- Audit up to 250 strings and 2 locales per run
-
Inspect 1 primary
.ttfor.otffont file -
Single
.wavloop discontinuity visualizer - 100% offline WebAssembly execution
Studio Pass
Lifetime licenseUnlimited local fixes, TMP/Godot exports, and offline CLI for one developer.
-
Unlimited strings, locales, and fallback fonts (
.csv,.po,.json) -
Instant TMP & Godot 4 glyph range exporter (
.txt&.treshelper) -
Automatically repaired localization & batch WAV ZIP with
smplmarkers -
Offline Node CLI (
npx shipqa) for build export scripts - Includes all 2.x updates for Unity 6 and Godot 4.x
Team & CI/CD Pack
Up to 10 seatsAutomated pull request gates for growing indie teams and publishers.
- Everything in Studio Pass for up to 10 studio seats
- Turnkey GitHub Action & GitLab CI workflow that blocks PRs on missing glyphs
-
Unity
IPreprocessBuildWithReport& GodotEditorExportPluginscripts - HTML & Markdown LQA approval report generator for translators
Frequently asked questions
Does ShipQA upload our unreleased script or game assets to any server?
Never. Both the browser diagnostic and the Studio Pass run 100% locally on your machine using client side WebAssembly and our offline CLI. Your dialogue CSVs, proprietary fonts, and audio stems never leave your disk, making it safe for NDA publisher builds.
How is this different from enabling pseudolocalization in Godot or Unity?
Pseudolocalization only swaps ASCII characters for accented Latin characters (such as Ĥéłłô) to test English string expansion. As the official Godot documentation notes, pseudolocalization cannot verify whether your bundled font files contain the thousands of CJK, Cyrillic, Arabic, or symbol codepoints present in your actual translated CSV or PO files.
Which game engines and localization formats are supported out of the box?
ShipQA supports standard UTF8 CSV and TSV tables (Godot CSV, Unity Localization package, I2 Localization), GNU Gettext .po files, and flat or nested .json localization dictionaries, paired with .ttf and .otf fonts and 16/24/32 bit PCM .wav audio files.