CSV health check
Inspect one export’s structure, then see whether a chosen key identifies its rows. Blank keys and every duplicate-group member remain visible.
This check covers parsing and exact-key rules described here. It does not certify a file for an external import, identify every data problem, or change your original export.
UTF-8, at most 2 MiB, 20,000 data records, 100 columns, and 200,000 cells including headers. Choosing a file replaces pasted text, even if rejected. Quoted separators/newlines and doubled quotes are supported; no separator guessing or numeric conversion.
Keys use exact strings, including case, spaces, and leading zeroes. Empty or whitespace-only keys count as blank. A key occurring three times is one duplicate group containing three rows.
Ready for one export.
Health report
Parsed headers
Key accounting
Blank-key rows
Duplicate-key group members
Source-record preview
Header is record 1. Record references and physical source lines differ for quoted multiline records. Values use JSON notation to keep spaces/newlines visible. Each table previews at most 100 entries; the JSON report contains every source row and group.
The download includes original cell strings and source references, including rows containing formulas or sensitive content. It is JSON, not a spreadsheet import file. Store and share it with the same care as your original export.
Worked example: IDs that look similar
The synthetic example has six data records with keys 00123, 123, DUP, DUP, an empty cell, and two spaces. Read it, choose id, then analyze.
- The leading-zero IDs stay distinct: two singleton-key rows.
- DUP creates one duplicate group with two member rows, both listed.
- The empty key and spaces-only key make two blank-key rows.
- All six rows reconcile: 6 = 2 blank + 2 duplicate-member + 2 singleton. There are three distinct nonblank keys: 00123, 123, and DUP.
Distinct nonblank keys count each different string once. Duplicate-member rows count every occurrence in repeated groups, including the first occurrence. These quantities answer different questions and must not be added together as row totals.
What this check covers
One header row is required. Blank or repeated headers, inconsistent field counts, malformed quotes, invalid UTF-8, and NUL bytes block checking. Only the first encountered error is reported; correct it and run again. Header errors identify source record 1. Other parser errors may identify a physical line; their logical source record is unavailable from this parser, and a quoted newline can make those positions different. Failed parsing produces no partial row totals or clean-file claim.
A leading UTF-8 BOM is removed. Cells remain strings: there is no trimming of nonblank keys, case folding, date/number conversion, semantic validation, or correction. Blank lines remain records and may fail field counts or create blank keys. A header-only file has zero data rows; its key status is no data rows, not proof of a useful key.
Data handling
File contents are read and checked locally without uploads. This page uses no browser storage, analytics, advertising, or remote APIs. The hosting service receives requests for the page and static assets. Clear removes displayed input and results, but downloaded reports remain on your device. Extensions and other software on your device are outside this page’s control.