Parquet to JSON Converter: Export Rows as JSON
Convert a Parquet file to a downloadable JSON array, preserving nested structs, lists, and maps.
Upload a .parquet file and the page decodes every row in your browser, then emits a JSON array with indentation. BigInt fields are stringified so JSON parsers don't choke, byte arrays become numeric arrays so they round-trip, and nested types keep their structure. Download the result or scroll the preview to verify a few rows before saving.
JSON is the lingua franca of HTTP APIs, MongoDB loads, document stores, and most quick-and-dirty integrations. Parquet, by contrast, is built for columnar reads inside analytical engines. Moving from one to the other comes up often: a data scientist wants to feed a sample into a notebook that expects JSON; an engineer wants to mock an API response from real data; a tester wants fixtures.
This converter parses the source file with hyparquet, builds an array of row objects, then runs JSON.stringify with a replacer that handles types JSON doesn't natively support. BigInt fields are serialized as decimal strings, which keeps the precision intact. Uint8Array binary fields are written as plain number arrays so that JSON.parse on the other end can rebuild them with new Uint8Array(...). Structs, lists, and maps come through as nested objects and arrays, matching the on-disk shape.
The output is pretty-printed with two-space indentation. The on-page preview is capped at 8 KB so the browser stays responsive even when the full output is many megabytes. The download button writes the entire result. The resulting filename mirrors the original .parquet name with the extension swapped.
- 1
Open the file
Pick a .parquet file. The decoder reads it locally with hyparquet and produces an array of row objects.
- 2
Preview the output
The first 8 KB of pretty-printed JSON shows inline. Confirm a couple of rows look right.
- 3
Download .json
Click Download .json to save the full result. BigInt values are stringified so the file parses anywhere.
Generate API fixtures
Pull a sample of real production rows out of Parquet and ship them as JSON test fixtures for an API or frontend.
Seed a document database
MongoDB, CouchDB, and Firestore loaders happily consume a JSON array. The converter shortens that pipeline to a single click.
Inspect data in JavaScript-only environments
Tools like Observable, JSFiddle, or a quick HTML page can parse JSON natively. Use it when adding a Parquet decoder isn't worth the trouble.
Hand off to a non-Python stack
A Node, Go, or Rust service may want one-time access to a dataset. JSON is the path of least resistance.
Does my Parquet leave the browser?
No. hyparquet decodes the file in this tab and the JSON is built locally. There is no upload.
How are BigInt and bytes handled?
BigInts become decimal strings so JSON parsers don't error. Binary columns become numeric arrays so they round-trip via new Uint8Array(...) on the consuming side.
Will it produce NDJSON instead?
The default output is a pretty-printed JSON array. If you need newline-delimited JSON, strip the wrapping brackets and join the records with newlines after download.
Why is the preview cut off?
Rendering megabytes of text inside a textarea kills the browser. The preview is capped at 8 KB; the download contains the full result.
How large a file can I convert?
A few hundred megabytes of decoded data fits in memory comfortably. Multi-gigabyte files may exceed the tab's heap limit because both the rows and the JSON string have to be held at once.