CSV has no single specification. RFC 4180 describes a common subset, but it is silent on encoding, on line endings other than CRLF, and on what a bare quote inside an unquoted field means. Every parser fills those gaps differently, which is why a file that round-trips cleanly through one tool can silently change when it passes through another.
Most of these failures are silent. A stripped leading zero still looks like a number. A dropped final row still looks like a successful import. That is why each fixture here documents what correct behaviour looks like, rather than only handing you a broken file.
- What makes these different from a normal CSV generator?
- Every other generator produces clean, valid data. These files are deliberately hostile — each one isolates a single way real-world CSV breaks real-world parsers, so when your importer fails you know exactly which behaviour is wrong.
- Are these files dangerous?
- No. They are inert test files for checking your own import pipeline. Nothing here executes on its own — the fixtures that model injection or traversal exist so you can verify your own code rejects them, and the resource-exhaustion ones are deliberately scaled down so they demonstrate the behaviour without taking down the machine you are testing from.
- Why does the page show raw bytes?
- Because most of these cases are invisible in a text preview. A byte order mark renders as nothing, a bare carriage return looks identical to a CRLF, and a NUL looks like the end of the string. The hex view highlights exactly which bytes matter and explains each one when you hover it.
- Does my pass/fail progress get saved?
- Yes, in your own browser only, and separately for each format. The workflow expects you to leave the page, run a fixture through your parser, and come back — so results persist locally. Nothing is uploaded, and clearing site data clears them.
- Is this free?
- Yes. Every fixture is generated in your browser, with no signup and no upload.