Every link is a direct download from this site. Nothing is zipped, nothing asks for an email.
people-100.csv
6.6 KB (6,798 bytes) · 100 rows x 7 columns
The clean one. Sequential integer ids, first and last names, an email per person, a city, an ISO join date and one of four plan names. Nothing is missing, nothing is quoted, no row is ragged and no value needs escaping. This is the file to reach for when you want to prove the happy path works before you go looking for trouble, and the one to use in a screenshot or a tutorial. Profiled, it comes back as one numeric column, one date column and five text columns, with zero duplicate rows.
Download people-100.csv
·
open it in the CSV viewer
sales-10k.csv
504.5 KB (516,630 bytes) · 10,000 rows x 7 columns
Enough rows for a measurement to mean something, and typed on purpose so the columns are worth aggregating. An order id, an ISO date spread over two years, one of five regions, one of three channels, a unit count, a decimal amount and a boolean refund flag. Every amount carries non-zero cents so that the column reads back as a genuine number rather than as text. It profiles as 730 distinct dates, five regions, and an amount running from 5.01 to 4800.53 with a median of 2394.21. Pivot it by region and channel and you get a five by three table out of ten thousand rows.
Download sales-10k.csv
·
pivot it
·
profile it
messy.csv
13.2 KB (13,468 bytes) · 200 data rows, 6 header names, widest row 8 fields
Broken six ways at once, so one file covers most of an error-handling test. The header uses name twice. Twelve rows carry the wrong number of fields, some short and some long. Six rows are entirely blank. Thirteen lines end in CRLF while 194 end in LF. Fifty cells have leading or trailing whitespace. Two replacement characters sit on line 59, the fingerprint of a file that was decoded as the wrong encoding somewhere upstream. Run it through the validator and all six come back with line numbers. Run it through a parser that pads ragged rows and it reads as 200 rows and 8 columns, with the second name renamed to name_2 and the two unnamed extras called column_7 and column_8.
Download messy.csv
·
run it through the validator
semicolon-eu.csv
28.5 KB (29,146 bytes) · 500 rows x 7 columns
What Excel writes on a machine whose locale uses a comma for decimals: semicolons between the fields, and amounts like "8.794,14" in quotes with a full stop for thousands and a comma for the decimal. Dates are in DD.MM.YYYY. Customer names carry umlauts and a slash. This is the file that tells you whether a reader sniffs its separator or assumes one, and whether an importer treats a decimal comma as a decimal point, as a thousands separator, or as a reason to give up. A parser that guesses correctly reports seven columns; one that does not reports one.
Download semicolon-eu.csv
·
change its delimiter
unicode.csv
18.2 KB (18,653 bytes) · 200 rows x 7 columns
Names, cities and short notes in Simplified Chinese, Japanese, Korean, Greek, Russian, Hindi, Arabic and Hebrew, plus accented Latin, a status column carrying emoji, and a column of flag emoji. The two right-to-left scripts matter more than they look: a terminal or a table that measures width in code units will mangle the alignment, and a naive truncation will cut a character in half. The flag column is a good trap on its own, since each flag is two code points and reports a length of 4 rather than 1. Good for testing UTF-8 handling, column widths, sorting and any place where a byte count was used where a character count was meant.
Download unicode.csv
·
open it in the CSV viewer
wide-60col.csv
173.7 KB (177,833 bytes) · 500 rows x 60 columns
Sixty columns: a row id, a capture date, a segment, then 40 numeric metrics, 12 booleans and 5 label columns. Plenty of tools handle a hundred thousand rows and then lay out badly, scroll strangely or truncate the header once a file goes past a dozen columns. This one is deliberately wider than a screen and narrower than an extreme, so it tests layout and horizontal scrolling rather than a memory limit. It is also a useful pivot input, since the labels give you six column groups against three segments.
Download wide-60col.csv
·
profile all 60 columns
leading-zeros.csv
16.7 KB (17,095 bytes) · 300 rows x 6 columns
The file that catches the single most common CSV bug. A five digit record id, US ZIP codes that start with 0, EAN-13 barcodes, 17 digit account numbers and a part code with a hyphen in it. Open it in a spreadsheet with default settings and watch 01730 become 1730 and a 17 digit account number turn into 1.234E+16, at which point the last digits are gone for good. Only the quantity column is genuinely numeric, and a tool that gets this right will say so: the other five columns should come back as text with their widths intact, 5 characters for the ZIP, 13 for the barcode, 17 for the account.
Download leading-zeros.csv
·
convert it to Excel and check
orders.jsonl
104.1 KB (106,567 bytes) · 500 records, 8 top-level fields
One JSON object per line, the shape that eval runs, chat exports, event logs and API dumps all arrive in. Each record carries an order id, a timestamp, a status, a nested customer object with four keys, an item count, a decimal total, a currency and a boolean. The nesting is the point: a converter has to decide whether to flatten it, drop it, or write [object Object] into a cell. Flattened with dot notation the 8 top-level fields become 11 columns, with customer.id, customer.name, customer.city and customer.country in the middle.
Download orders.jsonl
·
convert it to CSV