Parquet to CSV converter — how it works
Converting Parquet (a columnar, compressed analytical file format) to CSV (plain comma-separated text) happens entirely in your browser. Because Parquet is a binary columnar format, a text editor or spreadsheet cannot open it directly — it needs a reader that understands the schema. CSV is universally readable but untyped: every value becomes text and the schema is lost, so a downstream reader has to re-infer types. You can choose whether to write a header row.
- Cost
- Free; no account required
- Processing
- Local, inside the browser tab
- Privacy
- File contents are not uploaded
Steps
-
Open the Parquet file
Drop or select a .parquet file. Parquetbay reads its schema and row groups locally in your browser tab.
-
Narrow the export first (optional)
A Parquet file is usually wider than the CSV you actually want. Hide columns, add a filter step, or run a SELECT in the SQL console, and export the result instead of the whole table.
-
Export as CSV
Open the Export panel, choose CSV, decide whether to write a header row, and download the .csv. The file on disk is never modified.
Details that matter
The same thing in the DuckDB CLI
COPY (SELECT * FROM read_parquet('data.parquet')) TO 'data.csv' (FORMAT csv, HEADER);
The CLI wins when the conversion belongs in a script, or when the file is larger than the memory a browser tab can claim. This page wins for a one-off, and for the common case where you want to look at the data before committing to an export.
Checking that nothing is uploaded
The no-upload claim is checkable rather than something you have to trust. Open DevTools, switch to the Network panel, then drop your file and export it: no request carries the file. The only traffic is this page’s own assets, plus the DuckDB WebAssembly bundle the first time an engine is needed.
When CSV is the wrong target
If the data is heading into another analytical tool — DuckDB, pandas, Polars, a warehouse loader — keep it as Parquet or export Arrow instead. CSV throws the schema away, so every consumer re-infers types, and re-inference is where dates quietly become strings and long integer IDs lose their last digits to floating point.
Limits and behaviour worth knowing
No fixed row cap: the ceiling is device memory and how the file is encoded. Timestamps are written as ISO-8601 text. Struct, list and map columns are JSON-encoded into a single field, because CSV has no nested representation. Decimal columns keep every digit — they are written as text, not converted to floats.
Frequently asked questions
Can I open a Parquet file without installing Python or Spark?
Yes. Drop the .parquet file here and the in-browser DuckDB engine reads it directly, then you export CSV. No Python, pandas, Spark or desktop tool is involved at any point.
Will the CSV include a header row?
By default yes. The Export panel has an “Include header row” toggle for the case where a downstream loader expects a headerless file.
Do nested Parquet columns survive as CSV?
Not as structure. CSV is flat and untyped, so struct, list and map columns are serialised to JSON text inside one cell. For a lossless round trip, stay in Parquet, Arrow or JSON.
Can I export only some rows or columns?
Yes, and for a wide Parquet file you usually should. Run a query in the SQL console, or stack filter and column steps in the transform pipeline, then export the result. The CSV is smaller and someone downstream does not have to guess which columns mattered.