TL;DR: Free garbled-text diagnoser: paste mojibake and it identifies the failure mode (UTF-8 read as GBK, double-encoded UTF-8, Latin-1 misread, percent/quoted-printable/\u escapes) with causes and fix paths — diagnose first, convert second. Runs locally.
This tool runs entirely in your browser. Open DevTools → Network panel and search your input — it appears in no request.
Usage Guide
A CSV export full of "ä½ å¥½", logs bristling with "©", API payloads studded with %E4%B8%AD — mojibake is bytes decoded with the wrong encoding, and almost every tool out there is a converter: it saves you only if you guess the source encoding right. This tool diagnoses: paste the garbled text, it reads the byte signatures, tells you what happened and how to fix it.
1. Six recognizable failure modes
UTF-8 read as GBK (the ä½ å¥½ shape: runs of Latin-extended pairs); UTF-8 read as Latin-1 ( + symbol, like ©); double-encoded UTF-8 (é — someone fixed it in the wrong direction); replacement-char runs (����, already lossy, the one unrecoverable mode); percent-encoding residue (%E4%B8%AD, one URL-decode away from health); \u or HTML-entity residue (中 / 中, serialization never unwrapped). Each mode has a different fix — diagnose first, then act; it beats trying encodings one by one.
2. Why mojibake happens (one page)
Text is bytes in storage and transit. "你好" is six bytes in UTF-8; read as GBK, every two bytes become one character — yielding three strange glyphs. Read GBK bytes as UTF-8 and the multi-byte structure collapses into replacement characters. The core law: **UTF-8 misread by a single-byte encoding (GBK/Latin-1) is recoverable; single-byte misread as UTF-8 that produced U+FFFD is gone for good.** That is exactly the line this tool draws between "fixable" and "lost".
Related Tools
Related Articles
Base64 Decode Shows Garbled Text or Black Question Marks for Chinese — How to Fix
Base64 decode turns Chinese into mojibake or black question marks? Explains the root cause — Base64 encodes bytes, not characters — and gives command-line, code, and online-tool fixes, all processed locally.
How to Fix 'Hydration failed / Text content does not match' in Next.js
The complete guide to Next.js/React SSR hydration errors: why server and client renders diverge, the three usual suspects (timestamps, random values, localStorage), correct suppressHydrationWarning usage, and a ClientOnly pattern for browser-only widgets.
How to Batch Encode Multiple Files or Texts to Base64 (No Script Needed)
Need to convert dozens of images or strings to Base64 at once? Learn batch Base64 encoding and step-by-step how to do it locally without uploading files or writing scripts.