Test files › Structured data › 1000-rows.csv
Sample CSV file (1000 rows)
A clean 1,000-row CSV with a header and five typed columns: id, name, email, amount and active.
↓ Download 1000-rows.csv| Filename | 1000-rows.csv |
| Format | CSV |
| Size | 46.2 KB (47,322 bytes) |
| MIME type | text/csv |
| SHA-256 | 4204cc7b7f08b2e072c1af0de342f55cce111c521174bdad1ff4f918c869a69a |
What this file catchesThe everyday import case: big enough to exercise pagination, batching and progress reporting, small enough to open in a spreadsheet. The most requested size in this niche.
Handle it in code
Each snippet below was run against this exact file with Python 3.14.4 and Node 24.15.0 when this page was built, and the output shown is what it printed.
Python
Sniff the dialect from a sample, then stream the rows and compare each with the header. The csv module handles quoted commas and newlines inside fields, which is exactly what a split(',') gets wrong. line_num is the physical line, so it stays right when a field spans lines.
import csv
with open("1000-rows.csv", newline="", encoding="utf-8-sig") as f:
try:
dialect = csv.Sniffer().sniff(f.read(64 * 1024), delimiters=",;\t|")
except csv.Error:
dialect = csv.excel # the sniffer gives up on irregular files: assume commas
f.seek(0)
rows = csv.reader(f, dialect)
header = next(rows)
count, bad = 0, []
for count, row in enumerate(rows, 1):
if len(row) != len(header):
bad.append((rows.line_num, len(row)))
print(f"delimiter {dialect.delimiter!r}, {len(header)} columns, {count:,} data rows")
for line, n in bad[:5]:
print(f" line {line}: {n} field{'s' * (n != 1)}, expected {len(header)}")
if not bad:
print(" every row matches the header")Run against this file, it prints: delimiter ',', 5 columns, 1,000 data rows
every row matches the header
Related guides and tools
Download & verify
curl -fsSL -o "1000-rows.csv" "https://files.hexaqa.com/csv/1000-rows.csv"
curl -fsSL "https://files.hexaqa.com/csv/1000-rows.csv" | sha256sum
# expect: 4204cc7b7f08b2e072c1af0de342f55cce111c521174bdad1ff4f918c869a69a