The checks, and what each one means

The auditor parses the file the way a proper CSV reader does — quoted fields, doubled quotes, line breaks inside a cell — and then looks at every value in it. It never rewrites the file. What it produces is a list of the places where an import would quietly change the data.

  • Precision loss — a number written with more significant digits than a double can hold. The tail is rounded off the moment the value is parsed as a number.
  • Leading zeros — 0071234 is a code, not a quantity. Import the column as a number and the zeros are gone for good.
  • Unsafe integers — a value past 9,007,199,254,740,991, the largest integer a double can represent exactly.
  • Ambiguous dates — 03/04/2026 is 3 April almost everywhere and 4 March in the United States. The file does not say which it means.
  • Ragged rows — a row with more or fewer fields than the header. Everything after the gap shifts into the wrong column.
  • Mixed columns — numbers and free text sharing one column, which most importers type as text, after which the column stops sorting as numbers.

Precision: the fifteen-digit wall

Every number that passes through a spreadsheet or a JSON encoder is stored as a double, and a double keeps about fifteen significant decimal digits. Write a seventeen-digit order number and the last two digits are rounded off, silently, on the way in. The auditor prints what the value becomes next to the value itself, so the difference is visible before the import rather than after a reconciliation report comes back short.

The fix is not a better export. It is to import that column as text. A leading zero, a long account number and a nineteen-digit invoice ID are all strings that happen to look numeric, and the only thing that preserves them is the column type in the import dialog.

Dates that change meaning

Every date is read against the calendars it could have been written in: year first, day first or month first. A date where both readings are possible, and where they land on different days, is flagged as ambiguous rather than guessed. A date that does not exist in the calendar — the 30th of February — is an error, because no importer can decide what it was meant to be.

Currency symbols, thousands separators and scientific notation are reported at a lower level. They are not mistakes on their own. They are a warning that the column holds more than one shape, and that is what makes a spreadsheet pick the wrong type for the whole column.

How to use it

  1. Paste the CSV into the left panel, or use Open file. The Load sample button fills the panel with a file that trips every check, which is the quickest way to see what a finding looks like.
  2. Leave the delimiter on Detect automatically unless the file is unusual. Detection counts separators outside quoted fields, so a value like "1,250.00" does not split into two columns.
  3. Leave The first row holds the column names on unless the file genuinely has no header.
  4. Read the Findings panel. Each entry names the row and the column, shows the raw value in quotes and states what would change.
  5. Read the Column profile table for the per-column summary: the detected type, how many values were seen, how many errors and warnings it collected, and a sample value.
  6. Copy the report or download it as Markdown, and keep it next to the import instructions so whoever runs the import knows which columns to set to text.

Good to know

  • The file is parsed in your browser and never uploaded, so a customer export or a payroll record can be audited on a machine that has no business receiving it.
  • The tool reports; it does not repair. How a column should be typed is a decision about the data, and that decision belongs to whoever owns it.
  • Delimiter detection looks at the first 25 lines. A file whose opening rows have a different shape from the rest is worth checking by hand, or by setting the delimiter yourself.
  • The screen shows the first 150 findings. The downloaded report contains all of them, so nothing is lost when the list is long.
  • If the export turns out to be something else entirely — a JSON payload saved with a .csv extension, for instance — the JSON Formatter shows you what it really is, and the Binary File Inspector identifies the file from its own bytes.