Skip to content

CSV to Apache Parquet converter

CSV to Parquet runs through our table engine, writing a single-row-group Snappy Parquet file for analytics tools.

  • Converted with Table engine · nothing stored
  • Free: 5 conversions a day · 5 MB each
  • Higher limits →

From real runs

What you get — and what changes

  • Rows and columns Kept

    Delimited records become Parquet columns with the same header names and row order.

  • Schema inference Changed

    Each column is inferred as int64, double, bool, string, or timestamp when type inference is enabled.

  • All-string mode Changed

    Turning typeInference off writes every column as string, which protects identifiers and locale-formatted values.

  • Compression Changed

    Output uses Snappy compression to reduce size while staying broadly readable.

  • Row groups Changed

    The writer emits a single row group, which is simple and compatible but not tuned for very large distributed scans.

  • Tool compatibility Kept

    The generated file is readable by pandas, DuckDB, BigQuery, and Spark when the inferred schema matches expectations.

  • CSV text details Lost

    Original delimiter choice, quote style, row endings, and BOM are not represented in Parquet metadata.

Sample conversions

Event export

Input
CSV: event_id,created_at,paid,total\nevt_1,2026-09-10T20:00:00Z,true,1234.50
Output
Parquet schema: event_id string, created_at timestamp, paid bool, total double; compressed with Snappy.

ZIP codes as strings

Input
CSV: zip,count\n02134,10\n94105,7
Output
With typeInference on, zip may infer as int64 and lose 02134. Turn typeInference off or protect the column before creating Parquet.

Warehouse handoff

Input
CSV export with 500k order rows and ISO timestamps.
Output
One Snappy Parquet file loads in pandas, DuckDB, BigQuery, and Spark; for partitioned lakes, split by date after conversion.

A real CSV → Apache Parquet run

We converted our CSV sample (226 B) with Table engine on 2026-09-11. It took 2 ms and produced a 816 B Apache Parquet file, 3.6× larger than the input. The engine raised no warnings.

Input · sample.csv · 226 B

4 data rows × 5 columns; header: company,stage,arr,owner,close_date

Rows
4
Columns
5
Header
company,stage,arr,owner,close_date

Output · sample.parquet · 816 B

Parquet file (PAR1 magic present)

footerHints
0

Options and when to change them

typeInference
Leave on for analytics-ready numbers, booleans, and timestamps; turn off for all-string archival or fragile identifiers.
delimiter
Override auto-detection when source CSV is semicolon, tab, or pipe delimited and the preview is misaligned.
compression
Snappy is the default for compatibility with pandas, DuckDB, BigQuery, and Spark.

Do it yourself

pandas + pyarrow

bash
python - <<'PY'
import pandas as pd
pd.read_csv("in.csv").to_parquet("out.parquet", engine="pyarrow", compression="snappy", index=False)
PY

Install pyarrow and set dtype for identifiers such as ZIP codes before reading.

DuckDB

bash
duckdb -c "COPY (SELECT * FROM 'in.csv') TO 'out.parquet' (FORMAT PARQUET, COMPRESSION SNAPPY);"

DuckDB has its own type inference; use explicit casts if the inferred schema is wrong.

CSV to Apache Parquet by API or MCP

The HTTP API and the MCP server run the exact engine this page uses (Table engine); the response carries the same warnings the web converter shows. Check support first with GET /api/v1/pairs?from=csv&to=parquet.

curl
curl -X POST https://filetypeconverters.com/api/v1/convert \
  -H "Authorization: Bearer $FTC_API_KEY" \
  -F "file=@input.csv" -F "from=csv" -F "to=parquet" \
  -F 'options={"delimiter":","}' \
  --output output.parquet

Options this engine accepts for CSV → Apache Parquet

KeyApplies toTypeDefault
delimiterReading CSVstring,
headerReading CSVbooleantrue
quoteReading CSVstring"
encodingReading CSVutf-8 · latin1utf-8
API reference

When this is the wrong conversion

  • If a human must edit the file in Excel, XLSX or CSV is more practical than Parquet.
  • For exact preservation of original CSV quoting, delimiters, and comments, keep the CSV source alongside Parquet.
  • For massive lakehouse datasets, use a batch pipeline that writes partitioned Parquet with tuned row group sizes.

CSV to Apache Parquet questions

What schema does CSV to Parquet infer?

Columns are inferred as int64, double, bool, string, or timestamp. Turn typeInference off to write all columns as strings.

Is the Parquet file compressed?

Yes. The browser writer uses Snappy compression and a single row group for broad tool compatibility.

Can pandas or DuckDB read the output?

Yes. The output is intended to be readable by pandas, DuckDB, BigQuery, and Spark when the schema matches the data.