CSV is the format everyone has and nobody owns
Comma-separated values is the most universal data interchange format on Earth. Every tool reads it; every analyst can open it; it doesn't even have a real spec (RFC 4180 is a description after the fact, not a binding standard). That universality is exactly why CSV is also the format that produces the most silent data corruption per-byte of any format you'll work with.
What CSV doesn't carry
- Types. Everything is a string on disk. Whoever reads it has to guess: was
123an integer?00123with a leading zero (a US ZIP code)? Was2026-04-30a date or a string? - Encoding. The character encoding is not stored in the file. UTF-8, Latin-1, Windows-1252 — all valid CSV. Open the wrong way and accents become mojibake.
- Schema. Header row is optional. Column order is the only contract. Adding a column upstream silently breaks downstream code that referenced positions.
- Quoting rules. A comma inside a value needs quoting. A quote inside a quoted value needs escaping. Different writers disagree on the details.
- Line endings.
\nvs\r\nvs\r. Excel on Windows produces one; pandas on Linux produces another. Mostly fine; sometimes catastrophic.
When CSV is still the right call
CSV is fine for: human-eyeballable inputs, one-shot transfers between teams, archival of tiny datasets, any format whose audience explicitly requires it. CSV is wrong for: anything that runs on a schedule, anything bigger than a few hundred MB, anything that needs to round-trip types reliably, anything you'll join later.