Mojibake Fixer / Charset Transcoder

Re-decode garbled text from a legacy charset into clean UTF-8 — fix 'café' back to 'café'. Runs entirely in your browser, no server, no sign-up.

Clean UTF-8

What this tool does

When text that was encoded in one charset gets read as if it were another, you get mojibake — garbled sequences like café (should be café) or “ (should be a curly quote ). This tool re-decodes that text: it reinterprets the input's bytes under the legacy charset you choose and emits clean UTF-8.

Everything runs locally in your browser — nothing is uploaded, it works offline once loaded, and there's no sign-up.

How to use it

  1. Paste the garbled text into Garbled text.
  2. Leave Source charset on auto to let the tool try the common charsets and keep the cleanest result — or set it explicitly to the encoding the text was wrongly decoded as. The most common culprit is windows-1252.
  3. Choose how to handle bytes that don't fit the charset under On undecodable bytes.
  4. If the text was mangled more than once (double mojibake), raise Repair passes to peel off each layer.

Auto-detect

Set Source charset to auto (the default) and the tool re-decodes the text under each common legacy charset, scoring each result, and returns the cleanest one — the one with the fewest replacement characters and stray control codes. If nothing looks like a clean repair (for example, the text wasn't actually mojibake), it tells you so; pick a charset explicitly to force a specific re-decode.

Source charset — what to pick

The charset field accepts standard (WHATWG) labels, case-insensitive, with the usual aliases:

You might see…Try this charset
é, è, ü, “, ’windows-1252
Western-European accents off by oneiso-8859-1 (alias latin1)
Euro sign issuesiso-8859-15
Garbled Cyrillicwindows-1251 or koi8-r
Garbled Japaneseshift_jis (alias sjis) or euc-jp
Garbled Koreaneuc-kr
Garbled Simplified / Traditional Chinesegbk / big5

On undecodable bytes

OptionWhat it does
replace (default)Substitutes the Unicode replacement character (U+FFFD) for any byte sequence that isn't valid in the chosen charset, and keeps going.
strictStops and reports an error on the first undecodable byte, so you know the charset is wrong.

Examples

Garbled inputSource charsetClean output
caféautocafé
“hiâ€windows-1252“hi”
naïve résuméwindows-1252naïve résumé

FAQ

What is mojibake?

It's garbled text that appears when bytes encoded in one character set are decoded with a different one. The fix is to decode with the correct charset — which is exactly what this tool does.

Which charset should I choose?

Start with windows-1252 for European text — it's behind the vast majority of Ã-prefixed mojibake. If the result still looks wrong, try iso-8859-1, and for non-Latin scripts pick the matching regional encoding from the table above.

Is it free and private?

Yes — your text never leaves your device, and the tool keeps working offline once the page has loaded.

Why didn't anything change?

If your text was already clean UTF-8 (or pure ASCII), re-decoding it as a single-byte charset won't help — this tool only fixes text that was genuinely mis-decoded.

Developer & Automation Access

Run it from the terminal

Same engine as this page, headless — via the gizza CLI:

gizza tool charset-transcode "café  naïve résumé"

New to the CLI? Get gizza →

Open it by URL

Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:

https://gizza.ai/tools/charset-transcode/?text=caf%C3%83%C2%A9%20%20na%C3%83%C2%AFve%20r%C3%83%C2%A9sum%C3%83%C2%A9&from=auto&errors=replace&passes=1

Machine-readable descriptor: tool.json — title + parameters JSON Schema for agents.