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.
The downloaded .parquet file works with all major data tools.
Code examples for common Python workflows.
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.
Common data engineering workflows that require Parquet.
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.
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.
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.
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.
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'))"
pd.read_parquet()), DuckDB (read_parquet()), Apache Spark or any Parquet-compatible tool.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'").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.