Pure-JS Parquet reader — hyparquet — no upload

Convert Parquet to CSV
Any encoding,
any compression.

Free Apache Parquet to CSV converter. Upload any .parquet file — handles all standard encodings (PLAIN, RLE, DICTIONARY) and compression codecs (SNAPPY, GZIP, ZSTD). Powered by hyparquet. Your file never leaves your browser.

Your file never leaves your browser
hyparquet pure-JS reader
SNAPPY / GZIP / ZSTD
Copy to clipboard
Always free
Parquet to CSV Converter  hyparquet
Uses hyparquet — a pure JavaScript Apache Parquet reader. No data is uploaded. Loads on first use (~30KB).
Drop your Parquet file here
.parquet or .pq — PLAIN, RLE, DICTIONARY, SNAPPY, GZIP, ZSTD supported
 Export complete

      
Parquet encodings and compressions supported

hyparquet handles all standard Parquet encodings and compression codecs.

PLAIN
Raw values with no encoding — strings as length-prefixed bytes, integers as little-endian binary.
RLE / BIT_PACKED
Run-length encoding for repeated values and bit-packed integers. Used for repetition and definition levels.
DICTIONARY
Stores unique values in a dictionary page, then references by index. Most efficient for low-cardinality string columns.
SNAPPY
The default compression codec for pandas and Spark — fast decompression, moderate compression ratio.
GZIP / ZLIB
Higher compression ratio than Snappy at the cost of slower decompression. Common in Hive and older Parquet files.
ZSTD
Modern codec — best compression ratio with fast decompression. Default in DuckDB and newer Spark versions.
Parquet to CSV in Python and CLI

Code examples for common workflows.

pandas — simplest approach
import pandas as pd df = pd.read_parquet('file.parquet') df.to_csv('output.csv', index=False) # Read specific columns only (much faster for wide Parquet files): df = pd.read_parquet('file.parquet', columns=['col1', 'col2', 'col3']) df.to_csv('output.csv', index=False)
Requires: pip install pandas pyarrow. Reading specific columns skips the rest entirely — a key Parquet advantage over CSV.
DuckDB — fastest, handles partitioned Parquet
import duckdb # Single file: duckdb.query(""" COPY (SELECT * FROM 'file.parquet') TO 'output.csv' (HEADER, DELIMITER ',') """) # Partitioned directory (Hive partitioned): duckdb.query(""" COPY (SELECT * FROM 'data/*.parquet') TO 'output.csv' (HEADER) """)
Requires: pip install duckdb. Handles partitioned Parquet directories, glob patterns and multiple files in one query.
pyarrow — most control
import pyarrow.parquet as pq import pyarrow.csv as pcsv table = pq.read_table('file.parquet', columns=['col1', 'col2']) # optional column filter pcsv.write_csv(table, 'output.csv')
Requires: pip install pyarrow. Directly converts Arrow Table to CSV without going through pandas — faster for large files.
How Parquet to CSV conversion works

From columnar binary to flat CSV — what happens in your browser.

1
hyparquet parses the binary footer

hyparquet reads the PAR1 magic, parses the Thrift-encoded FileMetaData at the end of the file, and extracts the schema — column names, data types, encoding and compression for every column chunk and row group.

2
Columns decoded and decompressed

Each column chunk is decompressed (SNAPPY, GZIP or ZSTD) and decoded (PLAIN, RLE, DICTIONARY or BIT_PACKED). The decoded values are typed — integers as JS numbers, strings as JS strings, timestamps as JS Date objects.

3
Rows assembled and CSV exported

Column arrays are reassembled into row objects. CSVShift serialises them to RFC 4180 CSV with your chosen delimiter and null representation, with UTF-8 BOM for Excel and Google Sheets compatibility.

When do you need to convert Parquet to CSV?

Common situations where extracting Parquet data to CSV is necessary.

Opening Parquet in Excel

Excel cannot open .parquet files directly. Converting to CSV first is the standard path from a Parquet data export to an Excel spreadsheet for analysis, formatting or sharing with non-technical stakeholders.

Inspecting data lake files

Data engineers who need to quickly inspect a Parquet file from S3, GCS or ADLS — without starting a Spark cluster or running a Python script — can upload it here for instant CSV preview and download.

Format migration

Moving data between systems that support different formats — Parquet for the data lake, CSV for a legacy system, database import tool or BI connector that only accepts flat files.

Sharing with non-engineers

Analysts and business users who receive Parquet files from data pipelines but need the data in a spreadsheet. Converting to CSV produces a file that anyone can open without Python or a SQL client.

Related CSV tools

Other free converters on CSVShift you might need.

Popular searches
parquet to csv converter convert parquet to csv parquet to csv python parquet to csv online open parquet file online parquet to csv free how to convert parquet to csv parquet file to csv parquet to csv pandas read parquet file without python parquet to excel converter open parquet file in excel

Parquet decoded
in your browser. No server.

CSVShift uses hyparquet — a pure JavaScript Parquet reader maintained by the open-source data community, used by tools like Observable, Evidence and Hugging Face Datasets. Your .parquet file is read as an ArrayBuffer and decoded locally. Nothing is uploaded or transmitted.

hyparquet handles the full complexity of the Parquet format: Thrift binary metadata, multiple encodings per column, row group iteration, and decompression of SNAPPY, GZIP and ZSTD pages — all in JavaScript without native code or WebAssembly.

Powered by hyparquet
Pure-JS Parquet reader used in production by Observable, Evidence and Hugging Face Datasets viewer.
All encodings supported
PLAIN, RLE, BIT_PACKED, DICTIONARY — the full encoding set produced by pandas, Spark and DuckDB.
Null value control
Choose how null/missing values appear in the CSV — empty cell, NULL, NA or \N for MySQL-style imports.
Free, no conditions
No file size cap, no watermark, no account. Funded by display advertising only.
Frequently asked questions
Common questions about converting Apache Parquet files to CSV.
How do I convert Parquet to CSV?
Upload your .parquet file to CSVShift. The tool uses hyparquet to decode the file and export all rows as a CSV. Works with all standard encodings and SNAPPY, GZIP and ZSTD compression. Download the CSV or copy to clipboard.
How do I convert Parquet to CSV in Python?
Simplest: import pandas as pd; pd.read_parquet('f.parquet').to_csv('out.csv', index=False). Fastest for large files: duckdb.query("COPY (SELECT * FROM 'f.parquet') TO 'out.csv' (HEADER)"). With column selection: pd.read_parquet('f.parquet', columns=['a','b']).
How do I open a Parquet file in Excel?
Excel cannot open .parquet files directly. Convert the Parquet to CSV here, then open the .csv in Excel. For a formatted .xlsx output, convert to CSV first, then use CSVShift's CSV to Excel tool to add bold headers, auto column widths and frozen rows.
What is hyparquet and is it safe?
hyparquet is an open-source pure JavaScript Apache Parquet reader. It is used in production by Observable notebooks, Evidence analytics and the Hugging Face Datasets viewer. CSVShift loads it from esm.sh (a JavaScript CDN) when you click Convert. Your Parquet file is never uploaded — it is decoded locally in your browser using the hyparquet library.
Is my data safe when converting Parquet online?
Yes. Your .parquet file is read as an ArrayBuffer in your browser and decoded by hyparquet locally. No data is uploaded to any server. Open the Network inspector during conversion — the only outbound request is loading the hyparquet library itself from esm.sh, not your file data.