Private, local-first data tools

CSV to Parquet Converter

Create a Snappy-compressed Parquet file locally. All columns are explicitly stored as strings so identifiers and original text survive the conversion.

Processed in your browserNo account requiredEncoding and delimiter controlsIncomplete exports are blocked
Drop a file, paste data, load a CORS-enabled URL, or try the sample.
Rows0
Columns0
EncodingAuto
DelimiterAuto
Issue groups0

Open a data file to start

The parser runs off the main thread. Once loaded, you can search, sort, validate, repair and export without an account.

Parquet schema: explicit strings and empty cells

Values such as 00123, 2026-09-13 and true are written as strings, not numbers, dates or Booleans. Empty cells stay empty strings. Explicit typing preserves identifiers and original spelling, but numerical analysis requires a deliberate cast. This converter does not infer nested structures, decimal precision or timestamp time zones.

Read the converted Parquet file in Python

import pandas as pd

# Requires a Parquet engine such as pyarrow.
df = pd.read_parquet("converted.parquet")
print(df.dtypes)
print(df.head())
# Convert a known numeric column explicitly:
# df["amount"] = pd.to_numeric(df["amount"], errors="raise")

Inspect the file with DuckDB

SELECT * FROM read_parquet('converted.parquet') LIMIT 10;
DESCRIBE SELECT * FROM read_parquet('converted.parquet');

Replace the example filename with your actual download name. Compare row counts, column names and leading-zero values with the source. A downstream schema that requires integer or date columns may reject these string columns until you cast them explicitly.

Snappy compression and large CSV limits

Exports use Snappy compression. Compression ratios depend on the data, and metadata can outweigh savings for small tables. The browser retains the parsed table, creates column arrays and builds an output buffer. For recurring large-dataset jobs, use a local Python or DuckDB workflow. Incomplete input is blocked rather than silently exporting a partial dataset.

Export a JSON array instead · CSV → JSONL

What this tool does

CSV to Parquet Converter

Headers become column names and every field is written as a STRING column. There is no numeric, date or Boolean inference. Cast columns explicitly in your analysis environment when needed.

How to use it

  1. Open the CSV and verify encoding and headers.
  2. Review column counts, empty cells and identifier spelling.
  3. Choose the row scope and download PARQUET.

Common tasks

  • Export CSV to a local Parquet file for Python or DuckDB.
  • Preserve leading-zero identifiers without automatic type inference.
  • Review headers and empty strings before moving data into an analysis pipeline.

Privacy and local processing

Local files are read by a dedicated browser worker and are not uploaded to an application server. File contents and filenames are not included in analytics events. Loading a public URL is an explicit direct request from your browser and may fail when the remote server blocks CORS.

Supported edge cases

  • Empty or duplicate headers and inconsistent row lengths must be fixed before export.
  • Empty cells remain empty strings, not null. Numeric, date and nested schemas are not generated.

Frequently asked questions

Will Parquet always be smaller than CSV?

No. Repeated values can compress well, but metadata overhead can make a small Parquet file larger than its CSV source.

Can I aggregate numeric columns?

Output columns are strings. Convert the relevant columns to numeric types in Python or SQL before aggregation, and handle invalid values explicitly.

Related CSV tools