Sample CSV files for testing parsers and imports — free, CC0

CSV looks trivial and is not. These files hold the shared synthetic people dataset, the same records as the JSON, Parquet and SQLite people files, plus the variants that break naive parsers.

The plain files come in three row counts, csv/people-10.csv, csv/people-1000.csv and csv/people-100k.csv, each with a header row. Three variants carry ten rows each: csv/people-10-semicolon.csv uses semicolons, as European locales export; csv/people-10-quoted-newlines.csv has a real newline inside a quoted field, which is where splitting on line breaks goes wrong; and csv/people-10-utf8-bom.csv starts with a byte-order mark that many readers leave attached to the first column name.

For size limits there are csv/1mb.csv and csv/10mb.csv, fitted to within 5% of their nominal size and still a prefix of the same dataset.

Use them to test import dialogs, streaming parsers and spreadsheet uploads. Related formats: TSV, JSON, NDJSON and SQL.

8 files. The same list as JSON: https://loremfile.dev/csv/index.json

CSV files
FileSizePropertiesDescription
10mb.csv 9.7 MB 38,461 rows About 10MB of people rows, fitted to within 5% of the nominal size. Still a prefix of the same dataset.
Snippets
curl -O https://loremfile.dev/csv/10mb.csv
<a href="https://loremfile.dev/csv/10mb.csv">download</a>
1mb.csv 965.4 KB 3,846 rows About 1MB of people rows, fitted to within 5% of the nominal size. Still a prefix of the same dataset.
Snippets
curl -O https://loremfile.dev/csv/1mb.csv
<a href="https://loremfile.dev/csv/1mb.csv">download</a>
people-10-quoted-newlines.csv 2.7 KB 10 rows Ten people rows where the bio field contains a real newline inside a quoted field, which is where line-by-line splitting goes wrong.
Snippets
curl -O https://loremfile.dev/csv/people-10-quoted-newlines.csv
<a href="https://loremfile.dev/csv/people-10-quoted-newlines.csv">download</a>
people-10-semicolon.csv 2.7 KB 10 rows The same ten people rows delimited by semicolons, as European locales export.
Snippets
curl -O https://loremfile.dev/csv/people-10-semicolon.csv
<a href="https://loremfile.dev/csv/people-10-semicolon.csv">download</a>
people-10-utf8-bom.csv 2.7 KB 10 rows Ten people rows preceded by a UTF-8 byte-order mark, which many CSV readers leave attached to the first column name.
Snippets
curl -O https://loremfile.dev/csv/people-10-utf8-bom.csv
<a href="https://loremfile.dev/csv/people-10-utf8-bom.csv">download</a>
people-10.csv 2.7 KB 10 rows 10 rows of the shared synthetic people dataset with a header row. The same rows appear in every other people-10 fixture.
Snippets
curl -O https://loremfile.dev/csv/people-10.csv
<a href="https://loremfile.dev/csv/people-10.csv">download</a>
people-1000.csv 249.6 KB 1,000 rows 1,000 rows of the shared synthetic people dataset with a header row. The same rows appear in every other people-1000 fixture.
Snippets
curl -O https://loremfile.dev/csv/people-1000.csv
<a href="https://loremfile.dev/csv/people-1000.csv">download</a>
people-100k.csv 25.4 MB 100,000 rows 100,000 rows of the shared synthetic people dataset with a header row. The same rows appear in every other people-100k fixture.
Snippets
curl -O https://loremfile.dev/csv/people-100k.csv
<a href="https://loremfile.dev/csv/people-100k.csv">download</a>

File names follow the naming grammar. Verify a download against sha256sums.txt.