CSV inspector and UTF-8 export

Check the structure of a CSV file in your browser: choose how the bytes are decoded, choose the separator, and see rows, columns, malformed quoting and the values a spreadsheet is likely to change. Then save the same values back as UTF-8 CSV, with or without a BOM.

Your file stays in this browser

The file you select is read by this page only. Nothing is uploaded, no external API is called, and neither the file name nor its contents are written to the address bar, to cookies or to browser storage. Closing the tab discards everything. You can confirm this by opening your browser developer tools on the Network tab before you inspect a file.

Inspect a CSV

1. Choose the data

Up to 2,097,152 bytes (2 MiB). Larger files are refused rather than truncated.

Pasted text is inspected as text only. It is never executed or evaluated.

2. Encoding (you choose it)

FaultNote does not identify the encoding of your file. Pick the encoding the file was saved with; if the bytes cannot be read that way, the check reports the exact byte position instead of substituting replacement characters.

3. Separator

One separator is used for the whole file. Tab-separated and semicolon-separated exports are common from Japanese and European spreadsheet locales.

A BOM fixes decoding, not interpretation

A UTF-8 BOM tells Excel which encoding the bytes use, so Japanese text stops appearing as garbled characters when the file is opened by double-clicking. It does nothing about what Excel does after decoding: 007 can still become 7, 1-2 can still become a date, and a value beginning with = can still be treated as a formula. To control that, import through Data > Get Data > From Text or CSV and set the column type instead of opening the file directly.

Import UTF-8 CSV in Excel without garbled characters

Formula candidates are reported, not rewritten

Values starting with =, +, - or @ are listed so you can decide what to do with them. This tool never inserts an apostrophe, never adds a leading space and never changes such a value in the download, because that would silently corrupt identifiers that legitimately start with those characters. If you need those values inert in a spreadsheet, set the column to Text during import.

Limits of this tool

  • The size limit is 2,097,152 bytes. A larger file is refused with a message rather than partly read.
  • UTF-8 and Shift_JIS are the only decodings offered. UTF-16 files are refused with an explanation.
  • The encoding is never guessed. A report that bytes are valid UTF-8 is a statement about the bytes, not an identification, because many byte strings decode without error under more than one encoding.
  • The download is always UTF-8 comma-separated. This tool does not write Shift_JIS files.
  • The first row is not assumed to be a header, so columns are numbered rather than named.
  • The preview is bounded to 50 rows, 30 columns and 200 characters per cell. Statistics cover every row that was parsed, and the download contains every value in full.
  • When the input breaks the CSV quoting rules, the values are a recovery reading rather than a faithful one, so the download is disabled until the original file is corrected. Rows with differing column counts are not a quoting violation and stay downloadable.
  • When bytes have a valid shape for the selected encoding but no character is defined for them, the failure is reported without a byte position, because the position cannot be identified in that case.

Use the CSV inspector from a terminal

For repeat checks and scripts, the open-source faultnote-csv CLI uses the same parsing core. It reads UTF-8 or Shift_JIS locally, prints a JSON report when requested and refuses to overwrite existing files. Node.js 24 or newer is required.

Source code and CLI instructions on GitHub

Related guides

Back to practical guides