How to fix the encoding of a CSV
- Choose the file or paste the text. Any CSV, TSV or TXT, with any delimiter.
- Check what changed. Every repaired cell is shown with the damaged text struck through and the repaired text below it. Cells that were already correct are not touched.
- Download. Save as CSV UTF-8 with BOM, keeping or changing the delimiter, or as an Excel file. For pasted text you can also copy the result.
Private by design: no upload
Repairing a file usually means it holds names, addresses or customer data. Here everything happens in your browser, in a background thread; the file never leaves your device. You can check it in the Network tab of your browser's developer tools.
Why “é” turns into “é”
In UTF-8, the encoding used by almost every website and modern program, letters such as é, ñ or ü take two bytes, and symbols such as € or the curly apostrophe ’ take three. Older single-byte encodings such as Windows-1252 (“ANSI”) and Latin-1 use one byte per character. When UTF-8 bytes are read as Windows-1252, each byte becomes its own character: é (bytes C3 A9) appears as “é”, € (E2 82 AC) as “€” and ’ as “’”.
The most common trigger is Excel. A UTF-8 CSV without a byte order mark (BOM) opened by double-clicking is read with the computer's legacy code page. If someone then saves it, the garbled characters are written into the file as real UTF-8, and the damage is permanent until it is reversed. Do that twice and you get double encoding: é becomes “é”.
Common damaged sequences
| You see | It should be | You see | It should be |
é | é | € | € |
è | è | ’ | ’ |
ñ | ñ | “ †| “ ” |
ü | ü | – | – |
ö | ö | ° | ° |
ç | ç |  | a non-breaking space |
ã | ã | é | é (double encoding) |
How the repair works, and why it is safe
The tool looks for runs of characters that, turned back into Windows-1252 or Latin-1 bytes, form valid UTF-8. Each run is replaced by the character it encodes, and the process is repeated to undo double or triple encoding. A run is only replaced when the result is a plausible character: letters, punctuation, currency symbols or emoji. Rare scripts such as Cyrillic or Chinese are only accepted when several damaged characters appear together, as they do in real damaged text. That is why “São Paulo”, “Müller” or “CANCIÓN»” are never altered, and why a file that mixes repaired and correct rows comes out right.
Files that are simply in Windows-1252 or Latin-1, without damage, are decoded correctly and saved as UTF-8 with BOM. You can also choose the encoding by hand if the file comes from a Central European or Cyrillic system.
Once the file is clean, convert the CSV to Excel so the problem cannot come back, or keep IDs and postcodes safe with CSV to Excel without losing leading zeros. To export a workbook with the right encoding from the start, use Excel to CSV.
Known limitations
- Characters already replaced by � or by a question mark cannot be recovered: the original bytes are gone.
- It repairs UTF-8 read as Windows-1252 or Latin-1, the most common case by far. Damage from other pairs (for example UTF-8 read as Mac Roman or as DOS code page 850) is not reversed.
- If a program also replaced non-breaking spaces by normal spaces, “à” can appear as “Ô plus a space; this case is repaired only in text that has other damage.
- A deliberate text that happens to be valid mojibake (for example a page explaining these sequences) will be “repaired” too. Check the preview.
- The file is processed in memory; very large files can exhaust memory on phones.