JSON to Parquet Converter
Paste or upload a JSON array of flat objects and convert it directly into Apache Parquet. The converter validates that your input is really an array of objects (with a clear error message if it isn't), infers a string/double/boolean type per column, and writes a real .parquet file entirely in your browser, ready to download.
Reviewed by Vincenzo Manto, Founder & Lead Developer · Last updated September 27, 2026
How it works
- 1
Paste a JSON array of flat objects, or upload a .json file.
- 2
The input is validated to confirm it's an array of objects with no nested fields.
- 3
Each key is sampled across all rows to infer a string, double, or boolean type.
- 4
Click convert and download the resulting .parquet file.
Why convert JSON to Parquet?
JSON is the everyday interchange format for APIs and logs, but it's verbose and untyped, which makes it slow and expensive to query at scale. Converting a JSON export into Parquet gives you the same data in a compact, columnar, typed format that tools like DuckDB, Spark, and cloud data warehouses can query far more efficiently.
Type inference you can trust
Rather than guessing silently, the converter samples every row for each column: only fields where every present value is a boolean become BOOLEAN, only fields where every present value is a number become DOUBLE, and anything else safely falls back to STRING so no data is misrepresented.
Frequently asked questions
What JSON shape does this expect?
A top-level array where every element is a flat object, e.g. [{"name":"Ada","age":36}]. Objects can have different keys from each other; the converter unions them into a single column set.
What happens with nested objects or arrays as field values?
The converter rejects nested values with a clear error naming the offending field and row index, since flattening arbitrary nested JSON into parquet columns would require a schema decision this tool doesn't make silently.
How is a column's type decided when some rows are missing that key?
Missing or null values are treated as nulls and skipped when inferring the type from the remaining values; if a key never appears with a concrete value, it defaults to STRING.
Is my JSON uploaded anywhere?
No. Validation, type inference, and Parquet writing all happen locally in your browser via hyparquet-writer - nothing is sent to a server.
Can I paste JSON directly instead of uploading a file?
Yes, the text area accepts pasted JSON directly, which is often faster than saving a temporary .json file first.