CSV Test Data for Developers
Realistic CSV test data is what separates a demo that looks alive from one that screams "lorem ipsum". CSV.si lets you generate 10 to 100,000 rows of plausible-looking records — UUIDs, names, emails, addresses, finance, geo — in seconds, then drop them straight into pytest fixtures, Postgres seeds, or Storybook stories.
What good test data looks like
- Unique IDs: UUIDs, not auto-incrementing integers that hide ordering bugs.
- Diverse names: not 100 rows of "John Smith" — your unicode handling will break in production.
- Edge-case values: long strings, characters that need escaping (commas, quotes, newlines), null-ish values.
- Realistic distributions: don't make every order $50; vary amounts so charts and aggregations look real.
Typical dev workflows
- Seed a dev database — generate CSV,
\copyinto Postgres, develop against real-looking data.
- Storybook stories — drop 50 rows into a table component to validate empty state, loading state, overflow.
- Performance tests — generate 100k rows, measure how your list virtualization holds up.
- Integration test fixtures — commit a small CSV to the repo so tests have predictable input.
Frequently asked questions
Can I get the same data twice?
CSV.si regenerates fresh data each time. For reproducible fixtures, generate once and commit the CSV.
What about PII?
Generated data is fully synthetic — no real names, emails, or IDs. Safe to commit.