Convert Parquet to JSON

When you need Parquet rows in something a script or an API can consume, JSON is the obvious target. This converter decompresses the file, converts every Parquet type into its JSON equivalent, and can rebuild nested objects from flattened column names.

  • Runs in your browser
  • No signup
  • No upload
  • Free

ParquetJSON

Runs on your device
Options

Reading Parquet

Writing JSON

Inspecting Parquet records by eye?Query Parquet without exporting with ParquetReader — opens Parquet files directly.
What happens

How this converter handles Parquet to JSON

  1. Reads the footer schema and decompresses each row group in a Web Worker.
  2. Maps Parquet types to JSON: timestamps become ISO-8601 strings, booleans stay booleans, nulls stay null.
  3. Converts INT64 values that exceed JavaScript’s safe integer range into strings, so no digits are silently lost.
  4. Optionally rebuilds nesting, turning user.id and user.email columns back into a user object.
Format differences

Parquet vs JSON

Typed, compressed, columnar storage built for analytical scans. Nested, self-describing records that every language can read.

ParquetJSON
Type informationFull — ints, floats, booleans, timestamps, decimalsStrings, numbers, booleans, null
StructureColumnar, with nested type supportNested objects and arrays
CompressionBuilt in (Snappy, Gzip, Zstd)None
Typical file sizeTypically 5–15% of the CSVLargest — keys repeat on every record
SchemaStored in the file footerImplicit, per record
Human-readableNo — binaryYes, though verbose
Tool supportSpark, DuckDB, pandas, BigQuery, AthenaEvery language, natively
Worth knowing

What to watch out for

JSON has one number type and Parquet has several

Parquet distinguishes INT32, INT64, FLOAT and DOUBLE. JSON has only "number", backed by a 64-bit float. Integers above 2^53 are emitted as strings here rather than rounded, which is the safe choice but does change the type on the way out.

The output is much larger

Every key is repeated on every record and all compression is gone. A 50 MB Parquet file can easily become 700 MB of JSON, so consider JSON Lines if the result is going into a pipeline rather than an editor.

Timestamps become strings

JSON has no date type. Timestamps are written as ISO-8601 text, which every language can parse but which no longer carries the timezone precision the Parquet column may have had.

When you need this

Common reasons to convert Parquet to JSON

Feeding an API or a script

Most application code reads JSON natively and has no Parquet support at all. Converting once is simpler than adding a Parquet dependency.

Debugging a pipeline output

Reading a handful of rows as formatted JSON is the fastest way to see whether a transformation did what you expected.

Loading into a document store

MongoDB, Elasticsearch and similar systems import JSON directly.

FAQ

Parquet to JSON questions

Can I get nested objects back instead of dotted keys?
Yes. Turn on "Rebuild nested objects" in the output options and a user.id column becomes {"user":{"id":7}}. It is off by default because flat keys are easier to load into most tools.
Are large integers safe?
Values outside JavaScript’s safe integer range are written as strings rather than rounded numbers. This keeps identifiers exact, which matters for Snowflake IDs, Twitter-style IDs and database primary keys.
Should I use JSON or JSON Lines?
Use JSON for a document you will read or send to an API. Use JSON Lines for anything streaming or large — it can be processed one line at a time without loading the whole file into memory.
Is my file uploaded?
No. The conversion runs in your browser using WebAssembly and JavaScript. The file is read from your disk into a Web Worker, converted in memory, and handed back as a download. It is never sent to a server, so there is nothing for us to store, log or leak.
Which Parquet features are unsupported?
Encrypted Parquet files cannot be read, by design. Everything else in common use — all standard codecs, dictionary encoding, nested structs and repeated fields — is handled.