You are losing the schema on purpose
The CSV that comes out has no types. Whatever reads it next will have to guess again. If the destination understands Parquet, sending the Parquet file is strictly better.
Parquet is excellent for machines and useless for a quick look. If you have been handed a .parquet file and need it in something you can open, this converter decompresses it, flattens it, and writes a plain CSV — locally, with no Python environment to set up.
Reading Parquet
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 CSV
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.
Typed, compressed, columnar storage built for analytical scans. Plain text rows that open anywhere, with no types and no schema.
| Parquet | CSV | |
|---|---|---|
| Type information | Full — ints, floats, booleans, timestamps, decimals | None — every value is text |
| Structure | Columnar, with nested type support | Flat rows and columns |
| Compression | Built in (Snappy, Gzip, Zstd) | None |
| Typical file size | Typically 5–15% of the CSV | Baseline (100%) |
| Schema | Stored in the file footer | Header row at best |
| Human-readable | No — binary | Yes, in any text editor |
| Tool support | Spark, DuckDB, pandas, BigQuery, Athena | Universal |
The CSV that comes out has no types. Whatever reads it next will have to guess again. If the destination understands Parquet, sending the Parquet file is strictly better.
Parquet INT64 values beyond about 9 quadrillion are written to the CSV exactly, but a spreadsheet or JavaScript-based reader may round them on the way back in. Snowflake IDs and similar keys are the usual victims.
Expect the CSV to be roughly 7 to 20 times the size of the Parquet file. That is the compression and columnar layout being undone, and it is worth checking you have the disk space before converting a large file.
Finance, ops and legal teams open CSVs. Handing them a Parquet file usually means handing them a support request as well.
Plenty of CRMs, ad platforms and legacy databases only accept delimited text. CSV remains the reliable lowest common denominator.
Converting a small Parquet output to CSV is a quick way to eyeball whether the columns and row counts look right.
sticky-bottomYour file is downloading
post-conversion