Convert CSV to Parquet
Binary output,
in your browser.
Free CSV to Parquet converter. Creates a genuine binary Apache Parquet file using pure JavaScript — no libraries, no server. Download and open with Python, DuckDB, Spark or any Parquet tool. Your data never leaves your device.
Read the output with any Parquet tool
The downloaded .parquet file works with all major data tools.
CSV to Parquet in Python
Code examples for common Python workflows.
Why convert CSV to Parquet?
The advantages of columnar storage over row-based CSV.
CSV is row-oriented and untyped — every value is stored as text, every row must be read to access any column, and there is no built-in compression or type information. For large analytical datasets, this is extremely inefficient.
Parquet is columnar — values from the same column are stored together. This means: reading one column skips all others entirely; identical or similar values in a column compress dramatically; and data types are stored explicitly, so tools know without parsing that a column is INTEGER or DOUBLE.
A 1 GB CSV file typically compresses to 100–200 MB as Parquet with Snappy compression. Query engines like AWS Athena charge per byte scanned — Parquet files with column pruning can reduce a query cost from $5 to $0.10 on the same dataset. This is why Parquet is the standard format for data lakes, cloud analytics (Athena, BigQuery, Redshift Spectrum, Snowflake external tables) and ML training data.
When do you need CSV to Parquet?
Common data engineering workflows that require Parquet.
AWS Athena and S3 data lakes
Athena charges per byte scanned. Converting CSV exports to Parquet before uploading to S3 reduces storage costs and query costs by 5-10x. Parquet with Snappy compression is the recommended format for Athena external tables.
Data pipeline inputs
Tools like Apache Spark, dbt, Airflow and most modern ETL frameworks prefer Parquet as their interchange format. Converting CSV sources to Parquet at ingestion time improves downstream query performance across the entire pipeline.
ML training datasets
Large ML training datasets in CSV format load slowly and waste memory. Converting to Parquet lets PyArrow, TensorFlow Datasets and Hugging Face Datasets load only the feature columns needed for a specific training run, without reading the full file.
Analytics and BI
DuckDB, Polars and Apache Arrow read Parquet significantly faster than CSV for analytical queries. Converting a large CSV export to Parquet before analysis reduces query time from minutes to seconds for aggregations over millions of rows.
Related CSV tools
Other free converters on CSVShift you might need.
Parquet binary written
in your browser. No libraries.
CSVShift encodes the Apache Parquet binary format directly in JavaScript — no sql.js, no pyodide, no WebAssembly dependency. The Thrift binary protocol metadata, the PLAIN-encoded column data and the PAR1 magic bytes are all assembled in memory and exported as a Uint8Array.
The output follows Parquet format version 2 with PLAIN encoding and UNCOMPRESSED storage. It is readable by Python pyarrow, pandas, DuckDB, Apache Spark, Apache Arrow and any other compliant Parquet reader. Verify with: python -c "import pandas as pd; print(pd.read_parquet('file.parquet'))"
Pure JavaScript — no WASM
Standard Parquet v2
Type inference
Free, no conditions
How do I convert CSV to Parquet?
pd.read_parquet()), DuckDB (read_parquet()), Apache Spark or any Parquet-compatible tool.How do I convert CSV to Parquet in Python?
import pandas as pd; df = pd.read_csv('f.csv'); df.to_parquet('out.parquet'). With Snappy compression: df.to_parquet('out.parquet', compression='snappy'). Requires pip install pandas pyarrow. For large files use DuckDB: duckdb.query("COPY (SELECT * FROM read_csv_auto('f.csv')) TO 'out.parquet'").Why is Parquet better than CSV for analytics?
How do I verify the Parquet file is valid?
import pandas as pd; df = pd.read_parquet('file.parquet'); print(df.dtypes). In DuckDB: import duckdb; duckdb.query("DESCRIBE SELECT * FROM 'file.parquet'").show(). Valid files open immediately with correct column types and row counts.