Practice the CSV cases that break simple comparisons.
Explain the result before revealing it. Three real exercises free; no signup, API or input upload. These are original synthetic fixtures.
Download three free exercises · Follow the quoted-newline walkthrough
Ambiguous keys
id,value C-01,ready C-01,draftDownload left CSV
id,value C-01,readyDownload right CSV
Reveal expected result and explanation
Expected counts: {"unchanged": 0, "changed": 0, "only_left": 0, "only_right": 0, "ambiguous": 1, "blank_key": 0, "invalid_numeric": 0}Two source records share an ID. No row is selected silently and no business resolution is inferred.
One record can span lines
id,value C-01,"first second"Download left CSV
id,value C-01,"first second"Download right CSV
Reveal expected result and explanation
Expected counts: {"unchanged": 1, "changed": 0, "only_left": 0, "only_right": 0, "ambiguous": 0, "blank_key": 0, "invalid_numeric": 0}A quoted newline belongs to one field. Physical line counts do not equal CSV record counts.
Reject incomplete quoted content
id,value C-01,"unfinishedDownload left CSV
id,value C-01,readyDownload right CSV
Reveal expected result and explanation
Expected rejection: unclosed quoted
Repair the input using the system of record. Guessing where a quoted field ends could silently change records.
The complete twelve-case lab
| Included | Free sample | Full lab |
|---|---|---|
| Fixtures, settings, expected answers | 3 cases | 12 cases |
| Local viewer and checker | Included | Included |
| ExportCheck engine | Same original engine | Same original engine |
The nine additional cases cover reordered records, blank keys, leading-zero IDs, field mappings, quoted delimiters, decimal tolerance, mixed delimiters, duplicate headers and uneven fields.
Full learning download: $9 USD through Payhip.
What do I need?
A modern browser to read the viewer. Node.js 22+ only for the optional local checker; no paid service.
Is this a general CSV compliance suite?
No. Twelve teaching cases check this engine’s documented rules. They do not prove exhaustive compliance, security or migration correctness. Libraries can intentionally implement different dialects.