Files

CSV File Inspector

Reports what a CSV file actually contains, and where the rows that break it are.

Loading the tool…

Processing happens locally in your browser. What you paste or load is processed by this page and is not uploaded to a server. Nothing is stored unless you use a control that says it stores something, and you can clear anything this site has kept from the privacy page.

How to use this tool

  1. Load the file with the picker below the box, or paste the content in. The file is read in your browser and is not uploaded.
  2. Leave the delimiter and header options on Detect it unless the report gets either one wrong.
  3. Select Inspect the file.
  4. Read the ragged rows line first — it gives the line number of the first row that does not match the header.
  5. Use the per-column rows at the bottom to size a target table: the type and the widest value are what a CREATE TABLE needs.

What csv file inspector does

A CSV that fails to load rarely fails for an interesting reason. It is a semicolon file being read as a comma file, a quoted field containing a newline, one row with an extra column because a value had a comma in it, or a byte order mark on the first header that turned "order_id" into something no column mapping will match. All four look identical from the outside: the load errors, and the message names a row number in a file with a million of them.

This page answers the question the error does not. It works out the delimiter by consistency rather than by counting, decides whether there is a header, then walks every row and reports the ones that do not have the expected number of fields — with their line numbers. It finishes with a line per column giving the inferred type, how many values are filled, how many are blank and the widest value, which is usually enough to size a target table. Nothing is uploaded: the file picker reads the file in your browser.

Frequently asked questions

No. The file picker hands the page the text of the file inside your browser and the whole inspection runs there. There is no server request, so a customer extract or a production dump can be inspected without it leaving the machine it is on.

By consistency, not by counting. For each candidate — comma, tab, semicolon, pipe — the first fifty lines are split and the winner is the one where the most lines produce the same number of fields. That beats counting occurrences on files where commas are common inside quoted prose but the real separator is a pipe. If it still guesses wrong, set the delimiter explicitly.

Any row whose field count differs from the header. The usual cause is an unquoted comma inside a value, which adds one field, or a quoted field containing a newline, which splits one record across two lines and makes both of them wrong. The result names the line number of the first one so you can look at it rather than guess.

Usually a byte order mark. A UTF-8 BOM sits invisibly in front of the first header, so a column mapping looking for order_id will not match it. The report says whether one is present, and the encoding detector goes into more detail.

It is limited by browser memory rather than by any rule here, and the picker enforces a size cap that is shown if you exceed it. For a very large export, load it here to check the shape and use the head and tail viewer for a quick look at the ends.