Convert Parquet to CSV — Free, Private, In-Browser
Your files never leave your browserParquet is a columnar, strongly-typed, compressed format built for analytics. CSV is none of those things — it’s flat, untyped text. Going from Parquet to CSV is mostly about handing data to something that can’t read Parquet: a spreadsheet, a legacy loader, or a colleague who just wants to open it and look.
The thing to keep in mind is that you throw the schema away. On the way out, every value becomes text: timestamps serialize to ISO-ish strings, DECIMALs are written verbatim (so they’re exact in the file, but whatever reads the CSV may parse them back as floats and lose digits), and BIGINTs beyond 2^53 will round if the downstream tool treats numbers as doubles. Nested types don’t have a CSV equivalent, so STRUCT and LIST columns are flattened to JSON strings.
Practical notes: a header row is included, NULLs are written as empty fields (not the string “null”), and there’s no compression — expect the CSV to be several times larger than the Parquet it came from. If commas in your data are a worry, convert to TSV instead. Everything runs locally in your browser via DuckDB-WASM; the file is never uploaded.
Drop a file or click to browse
Drop a Parquet file — processed locally, never uploaded
Frequently asked questions
- Is my file uploaded anywhere?
- No. The Parquet→CSV conversion runs entirely in your browser via DuckDB-WASM. Your file never leaves your device.
- How large a file can I convert?
- It's bounded by your browser's available memory rather than any server limit — files in the hundreds of MB are routine. DuckDB runs single-threaded here, so very large files just take a little longer.
- Do I need an account?
- No — it's free and requires no sign-up.
- What happens to nested (STRUCT/LIST) columns?
- They're serialized to JSON text inside the CSV cell, since CSV has no native nested type. If you need structure preserved, convert to JSON or JSONL instead.
- Will I lose numeric precision?
- The CSV itself is exact — DECIMALs and big integers are written in full. Precision is only at risk in whatever reads the CSV back, if it parses numbers as floating point.