Parquet Viewer
Open a Parquet file in your browser and page through its rows. Pick columns, filter before rows load, and see exact decimals, 64-bit integers and timestamps. Nothing is uploaded.
Open a .parquet file to see its rows, or try the sample file. You can also drop a file here.
Columns
How to view a Parquet file online
- Click Open .parquet file or drop the file on the tool. To try it first, click Try sample file (500 rows of synthetic order data).
- The Rows tab shows the first 100 rows. Change the page size or use Next and Prev; each page reads only the row groups it needs.
- Use Columns to hide columns you don't need. Fewer columns means less data decoded.
- Click Add filter to keep rows where a column equals, contains, starts with, is greater or less than a value, or is null. Filters run before rows are listed; the preview keeps the first 10,000 matches and shows the total.
- Switch to Schema & metadata for types and row groups, or Export CSV / JSON to save the current page, the filtered rows or the whole file.
Step-by-step walkthrough: How to open and inspect a Parquet file without Python or Spark.
How values are shown and exported
- Large integers (INT64/UINT64) keep every digit. In JSON, integers inside ±9,007,199,254,740,991 are numbers; larger ones are strings, because JavaScript numbers cannot hold them exactly.
- Decimals are read from their stored integers and written as exact strings with the column's scale, for example
"12345678901234.5678"— in JSON too. - Timestamps keep full millisecond, microsecond or nanosecond precision as ISO 8601. A
Zis added only when the column is marked as adjusted to UTC; local (no-timezone) timestamps and legacy INT96 timestamps are shown without one and labelled. More in Parquet timestamps explained. - Null, empty and missing are shown differently:
null,"", and missing for a field absent from a struct. In CSV, nulls use the token you choose and empty strings are always written as"", so the two stay distinguishable. - Nested values (lists, structs, maps) stay nested in JSON. In CSV they are written as JSON text in one cell, or left out.
- Binary columns are written as Base64. NaN and Infinity are written as strings in JSON.
Does my Parquet file get uploaded?
No. The file is read in your browser with File.slice(), and decoding runs in a Web Worker on your device. File contents and filter values are not sent in any network request; our browser test suite checks every request made while a file is open. Clearing the file releases the reference to it and stops the worker.
Limits measured for this tool
The DataToolbox Parquet tools allow reads of up to 400 MB and exports of up to 250 MB of decoded data, the largest sizes that worked in our single-machine test below. Memory, not file size, sets these limits: the tool reads only the footer when a file opens, then only the row groups and columns a page, filter or export touches, but decoded data takes several times its on-disk size.
- One read (a page, or one row group during a filter or export) may decode up to 400 MB. In testing, a single 400 MB row group opened and filtered; larger reads are refused with a message.
- One export may cover up to 250 MB of decoded data. A 300 MB export froze the page for 2.4 seconds and a 400 MB export crashed the tab, so larger exports are refused; filter or pick fewer columns and export in parts.
- Files with many moderate row groups work best. A 5,000,000-row file in 1,000,000-row groups opened in about 0.1 seconds.
These figures come from one machine and one browser: Apple M4 (Mac16,3, 16 GB RAM), Chromium 145.0.7632.6 (headless), measured on 2026-10-02. They are not a guarantee for your device. The 400 MB and 250 MB guards are fixed, so on a computer or phone with less memory, in another browser, or with many tabs open, a file inside the guards can still run out of memory and close the tab. If that happens, select fewer columns or use DuckDB.
Method: each test file was opened in this tool in headless Chromium, driven by a test script. We timed opening the file and showing the first page, a filter scan over all rows, and CSV and JSON Lines exports of all rows, and sampled the browser's total memory every 200 ms. The test files have four columns (64-bit integer, double, string, UTC timestamp) and are ZSTD-compressed.
| Test file | Rows / row groups | On disk / decoded | Open + first page | Filter scan | CSV export | JSON Lines export | Peak browser memory (test machine) |
|---|---|---|---|---|---|---|---|
| large-1m.parquet | 1,000,000 / 4 | 2 MB / 10 MB | 109 ms | 432 ms | 629 ms (14 MB) | 781 ms (39 MB) | 0.8 GB |
| heavy-5m.parquet | 5,000,000 / 5 | 55.2 MB / 204 MB | 123 ms | 5.2 s | 9.0 s (338 MB) | 10.0 s (486 MB) | 3.9 GB |
| heavy-one-group-400mb.parquet | 10,000,000 / 1 | 102.5 MB / 400 MB | blocked by limit | — | — | — | — |
| heavy-one-group-800mb.parquet | 20,000,000 / 1 | 204.1 MB / 800 MB | blocked by limit | — | — | — | — |
| step-one-group-100mb.parquet | 2,500,000 / 1 | 26.3 MB / 101 MB | 135 ms | 2.5 s | 4.1 s (169 MB) | 5.2 s (243 MB) | 3.6 GB |
| step-one-group-200mb.parquet | 5,000,000 / 1 | 51.7 MB / 201 MB | 170 ms | 5.3 s | 8.8 s (338 MB) | 10.6 s (486 MB) | 3.9 GB |
| step-one-group-300mb.parquet | 7,500,000 / 1 | 77.1 MB / 301 MB | 176 ms | 8.0 s | blocked by limit | blocked by limit | 3.6 GB |
Frequently asked questions
Can I open a Parquet file without Python or Spark?
Yes. This viewer reads Parquet in the browser with the open-source hyparquet library. Open the file, and the rows, schema and metadata appear without installing anything.
Which compression codecs are supported?
Uncompressed, Snappy, GZIP, ZSTD, Brotli and LZ4, including files that use different codecs for different columns.
Why are some values shown as strings with many digits?
Decimals and 64-bit integers are shown exactly as stored. JavaScript numbers lose precision beyond 15–16 digits, so the viewer formats these from the raw stored integers instead.
Can it open encrypted Parquet files?
No. Files written with Parquet modular encryption (encrypted footer, magic bytes PARE) need decryption keys; the tool says so instead of showing garbled data.
Is my file uploaded?
No. The file is read in your browser and decoded in a Web Worker on your device. File contents and filter values are not sent anywhere.