Free CSV to Parquet Converter
Convert CSV to Apache Parquet format. Includes command-line instructions for Python, DuckDB, and Spark.
Browser Parquet conversion
Parquet requires a WASM library that is still maturing for browser environments. The most reliable approach is using Python or DuckDB with the commands shown below.
Drop your CSV file here to see the conversion commands
or click to browse
CSV → Parquet
Python (pandas + pyarrow)
pip install pandas pyarrowimport pandas as pd
df = pd.read_csv("input.csv")
df.to_parquet("output.parquet", index=False)
print(f"Saved {len(df)} rows to output.parquet")DuckDB CLI
brew install duckdb-- DuckDB (also works with the CLI)
COPY (
SELECT * FROM read_csv_auto('input.csv')
) TO 'output.parquet' (FORMAT PARQUET);Apache Spark
PySpark-- Apache Spark SQL
spark.read.csv("input.csv", header=True, inferSchema=True) \
.write.parquet("output.parquet")Parquet → CSV
Python (pandas + pyarrow)
pip install pandas pyarrowimport pandas as pd
df = pd.read_parquet("input.parquet")
df.to_csv("output.csv", index=False)
print(f"Saved {len(df)} rows to output.csv")DuckDB CLI
brew install duckdb-- DuckDB CLI COPY (SELECT * FROM 'input.parquet') TO 'output.csv' (HEADER, DELIMITER ',');
How to convert
- 1
Review the code snippets below for your preferred tool (Python, DuckDB, or Spark).
- 2
Install the required package (pandas + pyarrow, DuckDB CLI, or PySpark).
- 3
Replace the filename in the command with your actual CSV file path.
- 4
Run the command to generate your Parquet file.
Features
- Python (pandas + pyarrow) code snippets
- DuckDB CLI conversion commands
- Apache Spark conversion examples
- Copy-ready code for instant use
- Covers both CSV-to-Parquet and Parquet-to-CSV
- No signup or account required
- Detailed step-by-step instructions
- Free guide for data engineers and analysts
What is Parquet?
Apache Parquet is a columnar storage format optimized for big data processing. It is widely used with data warehouses (BigQuery, Snowflake, Redshift), query engines that read directly from cloud storage (Athena, BigQuery external tables), and analytics frameworks (Apache Spark, DuckDB, Polars). Unlike CSV, which stores every value as plain text in row order, Parquet stores data column-by-column with each column's own type (integer, float, boolean, timestamp) and compression, so a query that only needs a few columns can skip reading the rest of the file entirely. That columnar layout plus compression is why Parquet files are commonly several times smaller than the equivalent CSV.
When to convert?
Convert CSV to Parquet when you need to load data into a data warehouse, improve query performance on large datasets, reduce storage costs in cloud object storage like S3 or GCS, build a partitioned data lake that tools like Spark, DuckDB, or Athena can query directly without a full load, or when working with analytics frameworks that perform better with columnar formats.
Frequently asked questions
Why can't I convert CSV to Parquet in the browser?
Parquet is a complex binary columnar format that requires native libraries. Browser-based WASM implementations exist but are not yet reliable enough for production use.
What tools can I use to convert CSV to Parquet?
Python with pandas and pyarrow is the most common approach. DuckDB and Apache Spark also provide simple one-line conversion commands, shown on this page.
What are the benefits of Parquet over CSV?
Parquet files are significantly smaller (often 10x) due to columnar compression, support column pruning for faster queries, and preserve data types — unlike CSV which stores everything as text.
Does Parquet support all CSV data?
Yes. Parquet can store any data that CSV can, plus it preserves data types (integers, floats, dates, booleans) that CSV loses.
How do I convert several CSV files into one Parquet dataset?
DuckDB can read a whole folder with a wildcard — SELECT * FROM read_csv_auto('data/*.csv') — and write it out as Parquet in one COPY command. In pandas, read each file, pd.concat() them into one DataFrame, then call .to_parquet() once. Spark's spark.read.csv() also accepts a directory or glob pattern directly.
What compression does the Parquet output use?
pandas' to_parquet() defaults to Snappy compression, a good balance of speed and file size. DuckDB and Spark default to fast codecs too, though the exact default can vary by version — pass an explicit compression argument (e.g. compression="gzip" or compression="zstd" in pandas) if you need smaller files and can trade off some read speed.
Working with data files on Mac? Open CSV & Excel files in Google Sheets with a double-click.
CSVtoSheets is a Mac app — double-click any CSV, XLS, or XLSX to open it in Google Sheets instantly.