CSV
Comma-Separated Values is the oldest and most widely supported tabular format there is. It is also the least specified, which is why two tools can both be "correct" and still disagree about your file.
- Type information
- None — every value is text
- Structure
- Flat rows and columns
- Compression
- None
- Typical file size
- Baseline (100%)
- Schema
- Header row at best
- Human-readable
- Yes, in any text editor
- Tool support
- Universal
CSVParquet
Runs on your deviceOptions
Reading CSV
Auto-detect reads the first rows and picks the separator that splits them consistently.
Turn off when the file starts straight into data. Columns are then named column_1, column_2, and so on.
Turns "42" into a number and "true" into a boolean. Values with leading zeros stay text so IDs and zip codes survive.
Which worksheet to convert. Filled in once the workbook is read.
Dotted path to the array of records, such as data.items. Leave empty to use the whole document.
Turns {"user":{"id":7}} into a user.id column. Arrays are kept as JSON text.
Pick the encoding the file was written in. Wrong encoding shows up as garbled accents.
Comma-separated words that should become null instead of text.
Writing Parquet
Snappy is the default across Spark, DuckDB and pandas. Gzip is smaller but slower to read.
Turns a user.id column back into {"user":{"id":7}}.
Excel needs a byte order mark to open UTF-8 files with accents correctly.
Rows per row group. Larger groups compress better; smaller groups let readers skip more.
conversion-preroll
This short ad is what keeps the converter free.
A CSV file is text: one record per line, fields separated by a delimiter, with quotes around values that contain the delimiter. RFC 4180 wrote this down in 2005, long after everyone had already implemented their own version. In practice you will meet files that use semicolons, that quote everything, that quote nothing, that end lines with a bare carriage return, or that begin with a byte order mark.
The format carries no type information at all. Every value is text, so the program reading it has to guess whether 01234 is a number or a postcode, and whether 1/2/2024 is January or February. Those guesses are where most CSV data loss happens — not in the parsing, but in the interpretation afterwards.
None of that makes CSV a bad choice. It stays the right answer for handoffs between unlike systems, for anything a human might open in a text editor, and for data small enough that efficiency does not matter. It stops being the right answer the moment you are scanning it repeatedly, at which point a typed columnar format pays for itself immediately.
What CSV is good at
- Opens in literally everything, from Excel to a text editor to a shell one-liner.
- Streams line by line, so a reader never needs the whole file in memory.
- Diffs cleanly in Git when the row order is stable.
- Trivial to produce from any language without a library.
Where it falls short
- No types: numbers, dates and booleans are indistinguishable from text.
- No schema, so a missing column is only discovered by the reader.
- No compression, making it the largest common format on disk.
- No standard for delimiters, encoding or line endings, so files disagree.
Convert CSV files
From CSV
To CSV