Parquet to CSV

Convert Parquet to CSV in your browser

Free Parquet to CSV converter, no signup, no Python, nothing uploaded. Drop a .parquet file up to 1.5 GB, even 7.4 million rows, look at the data, press Export and download a CSV with a header row that opens in Excel or Google Sheets. Snappy, zstd, gzip, brotli and lz4 compressed files all open.

.parquet
Drop a file here
Stays in your browserUp to 1.5 GB

No file handy? Open NYC taxi trips, April 2019 (7.4M rows, 127 MB).

Why Excel can't open a Parquet file

Parquet is a binary, column-oriented format with compression per column, built for query engines rather than spreadsheets. Excel, Numbers and Google Sheets don't read it, and most online converters either cap the file at a few megabytes or upload it to a server first.

This page runs DuckDB inside your browser tab. It reads Parquet natively, including snappy, zstd, gzip, brotli and lz4 compressed files and files with multiple row groups, and nothing is uploaded unless you press Share.

Make a CSV that Excel will actually open

Excel stops at 1,048,576 rows per sheet and Google Sheets at 10 million cells. The taxi sample on this page has 7.4 million rows and comes out as a 685 MB CSV, which no spreadsheet opens whole. Filter first: passenger_count:>4 tip_amount:>10 keeps 12,546 of them, and Export writes only those.

For a fixed slice, SQL does it: SELECT * FROM data WHERE pickup_at >= '2019-04-15' LIMIT 500000. SQL results are capped at 1,000,000 rows, which is also right under Excel's limit.

What the CSV looks like

UTF-8, comma separated, one header row with the Parquet column names, values quoted where needed. Nulls become empty cells. Timestamps and decimals are written as text in their full precision. Nested columns (lists and structs) are written as JSON text inside the cell, so nothing is silently dropped.

Text cells that start with =, +, - or @ get a leading apostrophe. That stops Excel and Sheets from running a cell like =HYPERLINK(...) as a formula when someone opens the file.

Pick the columns and the order

Hide the columns you don't need and they stay out of the CSV. Click a header to sort, shift-click for a second sort key, and the file is written in that order. The column stats panel shows non-null counts, distinct values and min/max, which is a quick way to see which columns are worth keeping.

The same Export menu also writes JSON, JSONL, Markdown (first 1,000 rows) and a fresh zstd Parquet file, if what you really wanted was a smaller Parquet.

Parquet files behind a URL

A public Parquet file on S3, GitHub or a data portal opens without downloading it first: put the URL after the domain, like rows.page/https://blobs.duckdb.org/data/taxi_2019_04.parquet. Files the source serves with CORS headers load straight into your tab; others go through a proxy that accepts up to 100 MB.

To hand the CSV to someone else, press Share instead of mailing a 200 MB attachment. The link opens the same table, with filters, on their phone.

Limits for converting Parquet to CSV

WhatLimit or price
Open in the browserParquet files up to 1.5 GB, $0, no account
Compressionsnappy, zstd, gzip, brotli, lz4
OutputCSV with a header row, UTF-8, formula-safe cells
ExcelOpens at most 1,048,576 rows per sheet, so filter first
RowsNo cap through filters; SQL results export the first 1,000,000 rows
Remote filesPublic URLs, up to 100 MB through the proxy
Share a link without an account$0, files up to 100 MB, link deleted 7 days after creation
Free account$0, 10 datasets kept, last 3 versions
Pro$12/month, 100 datasets, files up to 500 MB, private links
Max$39/month, 1,000 datasets, files up to 2 GB, private links

Questions

Is my Parquet file uploaded?

No. Opening a file reads it inside your browser tab. It only leaves your machine if you share it or push it with curl.

Will the CSV open in Excel?

Yes, as long as it has at most 1,048,576 rows. Bigger files open here and in DuckDB, Polars or pandas, but not in a spreadsheet. Filter or LIMIT before you export.

Do I need pandas, pyarrow or Spark?

No. DuckDB runs inside the page and reads Parquet directly. There is nothing to install.

How do I export only the first 100,000 rows?

Type SELECT * FROM data LIMIT 100000 in the filter bar, wait for the table, then press Export and pick CSV.

What happens to nested columns?

Lists and structs are written as JSON text in the cell. If you want them as separate columns, pull them apart with SQL first, for example SELECT location.lat AS lat, location.lon AS lon FROM data.

More tools

Pushing data from a script or agent? Read the docs.