CSV Encoding Checker

Not sure whether your CSV is UTF-8, has a hidden BOM, or is a legacy ANSI file? Drop it below — the checker reads the actual bytes on your device and tells you exactly what it is, flags mojibake, and points you to the right fix. Nothing is uploaded.

Drop your CSV file here or click to choose a file
the file is read locally to inspect its bytes — it never leaves your device
Only have the text, not the file? Paste it for a mojibake-only check

Encoding can only be proven from the original file's bytes; pasted text has already been decoded. This just scans for tell-tale mojibake.

🔒 Everything runs locally in your browser. Your data is never uploaded, stored, or seen by anyone.

What the checker looks at

Every text file is just bytes, and the encoding is the rule for turning those bytes back into letters. Guess the rule wrong and café becomes café or caf?. This tool reads your file's bytes and works out which rule applies:

ResultWhat it meansTypical action
UTF-8 (no BOM)Modern, portable, stores every characterUsually nothing — the safe default
UTF-8 with BOMUTF-8 plus a 3-byte marker (EF BB BF)Great for Excel; strip the BOM if an importer rejects it
ANSI / Windows-1252One byte per char, Western-European onlyRe-save as UTF-8 so accents survive
UTF-16 LE/BETwo bytes per char; unusual for CSVConvert to UTF-8 for compatibility
Mojibake detectedValid bytes, but the text was mis-decoded earlierReverse it with the broken-characters tool

How to read the result honestly

Two honest limits are worth knowing. First, a pure-ASCII file (plain English, no accents) is byte-for-byte identical whether you call it ANSI or UTF-8, so no tool can tell them apart — and it doesn't matter, because nothing can break. Second, ANSI is detected by elimination: if a file isn't valid UTF-8 and has no BOM, it's almost certainly a legacy Windows-1252 file, but the exact legacy code page can only be inferred, not proven. The checker says so rather than pretending to certainty.

The mojibake flag is different: it means the bytes are valid UTF-8, but they decode to tell-tale sequences like é or “ — a sign the text was decoded with the wrong encoding at some earlier step. That's usually reversible.

Found mojibake or an ANSI file?

If the text is full of é, reverse it with the broken-characters tool. If it's ANSI, re-save it as UTF-8 so accents survive the next system.

Open the broken-characters fixer →

Related guides

For the how-to behind the results: save an Excel file as CSV UTF-8, change a CSV's encoding to UTF-8 in a text editor, what a byte order mark actually is, and why a file shows ??? or boxes. Browse all guides.

Frequently asked questions

How do I check what encoding a CSV file is?

Drop the file into the checker above — it reads the first bytes on your device and reports UTF-8, UTF-8 with BOM, UTF-16, or ANSI/Windows-1252, and warns if the text looks like mojibake. Nothing is uploaded. In a text editor you can also read the encoding from the status bar in Notepad++ or VS Code.

What is a BOM and should my CSV have one?

A BOM (byte order mark) is a few invisible bytes at the start of a file announcing its encoding — for UTF-8, the bytes EF BB BF. Excel likes a UTF-8 BOM because accents then show correctly on a double-click, but many importers and database loaders reject a BOM. Add one for Excel, strip it for systems that complain.

What does ANSI vs UTF-8 mean for a CSV?

ANSI on Windows means the Windows-1252 code page: one byte per character, covering only Western-European characters, so anything outside it (many accents, €, emoji) can't be stored and breaks. UTF-8 stores every character, so a file with accents or symbols should be UTF-8. A pure-ASCII file is identical either way.

Is my file uploaded when I check it?

No. The checker reads the file's bytes with the browser's own FileReader and inspects them locally in JavaScript. The file never leaves your device, and the tool works offline once the page has loaded.