Staaarter

CSV to Parquet Converter

Parses a pasted CSV, infers whether each column is numeric or text, and writes an actual columnar Parquet file you can download, using the hyparquet-writer library. Nothing is uploaded to a server, the whole conversion runs client-side. A free online tool from Staaarter, right in your browser.

By Staaarter Team
csvparquetconverter
Runs locallyUpdated 2026-08-06

Overview

Introduction

Parquet has become the default file format for data pipelines, analytics warehouses, and anything touching pandas or Spark, but most CSV data still starts out as plain text. Converting between the two usually means installing a Python environment or a command-line tool just for one file.

CSV to Parquet Converter skips all of that: paste a CSV, get a real .parquet file back, done entirely in the browser tab you already have open.

What Is CSV to Parquet Converter?

A client-side converter that parses CSV text into a rectangular grid, infers a type per column, and writes the result out as a genuine columnar Parquet file using the hyparquet-writer library, a pure-JavaScript Parquet writer.

Unlike CSV, which stores everything as text row by row, Parquet stores data column by column with an actual type per column, which is exactly what downstream tools like DuckDB or pandas expect when they read a .parquet file.

How CSV to Parquet Converter Works

The pasted CSV is parsed with this site's shared RFC 4180 grid parser, then transposed from rows into columns. Each column is checked in isolation: if every one of its values parses as a finite number after trimming, the whole column is typed as DOUBLE, otherwise it's typed as STRING.

Those typed columns are handed to hyparquet-writer's parquetWriteBuffer function, which returns a real Parquet-formatted ArrayBuffer synchronously, ready to download as a binary file.

When To Use CSV to Parquet Converter

Use this whenever a downstream tool, a data warehouse, a notebook, an analytics pipeline, expects Parquet input but all you have on hand is a CSV export.

It's also handy for quickly checking how much smaller a dataset gets in columnar Parquet form compared to its original CSV size, without setting up a Python environment.

Features

Advantages

  • Produces an actual, spec-compliant Parquet file readable by pandas, DuckDB, Spark, and similar tools, not a lookalike.
  • Runs entirely client-side, no upload, no server round-trip, no environment setup.
  • Automatic per-column type inference means you don't have to hand-specify a schema for a simple numeric-or-text dataset.

Limitations

  • Type inference is intentionally simple: DOUBLE or STRING only, it won't distinguish integers from floats or infer dates, booleans, or nested types.
  • Very large CSVs (hundreds of thousands of rows) parsed and held in memory as JavaScript arrays may be slower or heavier than a native command-line Parquet writer.

Examples

A simple numeric-and-text CSV

Input

id,name,score
1,Ada,95
2,Grace,72
3,Alan,88

Output

converted.parquet (id and score written as DOUBLE columns, name written as STRING)

Every value in the id and score columns parses as a number, so those columns are typed DOUBLE, while name stays STRING since it never parses as a number.

Best Practices & Notes

Best Practices

  • Double-check numeric columns for stray blank cells or typos before converting, a single non-numeric value forces that whole column to STRING.
  • Use Parquet Viewer afterward to confirm the converted file's schema and row count look right before shipping it downstream.
  • Remove a header-like first row from the CSV if it isn't a real header, otherwise the column type inference treats that row's text values as ordinary data and can push a numeric column to STRING.

Developer Notes

convertCsvToParquet in csv-to-parquet-converter.ts reuses parseCsvGrid and padGridToRectangle from this category's shared csv-grid.ts, transposes the rectangular rows into per-column arrays, infers DOUBLE vs STRING per column with a simple Number()-and-trim check across every value, then calls hyparquet-writer's parquetWriteBuffer({ columnData }), which returns an ArrayBuffer synchronously (no Promise), wrapped as a Uint8Array for downloadBytes.

CSV to Parquet Converter Use Cases

  • Preparing a CSV export for ingestion into a data warehouse or analytics pipeline that expects Parquet
  • Shrinking a CSV's on-disk footprint by converting it to columnar, compressed Parquet
  • Producing a quick Parquet fixture file for testing a tool or script that reads .parquet input

Common Mistakes

  • Assuming a mostly-numeric column with one stray text value or blank cell will still convert as DOUBLE, it won't, the whole column falls back to STRING.
  • Expecting fine-grained type control (INT32 vs DOUBLE, dates, booleans), this tool only distinguishes DOUBLE from STRING for simplicity.

Tips

  • If a column you expect to be numeric came out as STRING, scan it for an empty cell or a stray non-numeric value, that's almost always the cause.
  • Pair with JSON to Parquet Converter if your source data is JSON rather than CSV, it uses the same underlying writer.

References

Frequently Asked Questions