Skip to main content

Parquet viewer online

Upload a .parquet file to inspect its schema and browse rows with sortable, type-aware columns.

Free & unlimited

Preview reads the first set of row groups into memory — very large files may take a moment.

All processing happens in your browser. No data is sent to any server.

A Parquet file is a binary columnar table, so a text editor shows you nothing and opening one normally means starting Python, DuckDB or a Spark session just to answer what columns are in here. This page drops the file into an apache-arrow reader running inside the tab: the first four bytes are checked for the PAR1 magic marker, the table is decoded in page memory, and you get the field list with its Arrow type, a row grid paged 50 at a time, and a stats popover per column. Sorting is done on the decoded table, not on a query, so it works with no network round trip. The file itself never leaves the tab — there is no upload step and no account.

Key facts about Parquet viewer online

Key facts about Parquet viewer online
Decoderapache-arrow 21 (tableFromIPC), bundled into the page chunk — no WASM download, no server call
File checkBytes 0–3 must read PAR1. A file that fails the magic-byte check is rejected by name and extension before any parsing
Parquet coveragePartial. The in-page reader is Arrow-based, not a full Parquet implementation — a file it cannot decode stops with a parse error and shows nothing partial
Schema shownEvery field name plus its Arrow type string, tagged NUM, BOOL, DATE, BIN or TXT
Row grid50 rows per page, with page controls; the row count reported is the full decoded table, not the page
SortingClick a header to cycle ascending, descending, off. Numbers sort numerically, everything else by localeCompare, nulls last
Column statsRow total, null count and distinct count for any column; min, max and mean added when every non-null value parses as a number
ExportCSV (quoted when a value contains a comma, quote or newline) or pretty-printed JSON, named after the source file
Export scopeThe full table in the current sort order — not just the visible page, and not the original bytes
MemoryEvery row is materialised into a JS object array, so practical size is bounded by tab memory rather than a fixed byte cap

What happens to your file

The file is read with FileReader into an ArrayBuffer and decoded by apache-arrow inside this tab. There is no upload endpoint, no API call and no telemetry attached to the file: the bytes exist in page memory until you clear the file or close the tab. CSV and JSON exports are built as a Blob and handed to the browser download manager locally, so the exported table never crosses the network either. Nothing about the file — not its name, not its schema, not a row — is stored, logged or sent anywhere.

About this tool

  1. 1

    Drop the .parquet file on the page

    Drag it onto the dashed area or use the file picker. The extension is checked first, then the first four bytes must read PAR1 — a renamed CSV is caught here rather than half-parsed.

  2. 2

    Read the schema panel

    Open the schema disclosure to see every field with its Arrow type and the short badge. This is the fastest answer to which column is the timestamp and which is a decimal.

  3. 3

    Page through the rows

    The grid shows 50 rows at a time. The header line reports total rows and columns decoded, so you can tell a 600-row extract from a 600,000-row dump immediately.

  4. 4

    Sort and inspect a column

    Click a header to sort ascending, again for descending, a third time to clear. Open the stats popover on a column to see nulls, distinct values and — for numeric columns — min, max and mean.

  5. 5

    Export what you need

    Choose CSV or JSON and download. The export follows the current sort and contains every row, which is usually the point: you came to get the data into a spreadsheet or a test fixture.

Specs & compatibility
Accepted extension.parquet only (checked before reading)
Magic bytesPAR1 at offset 0
Page size50 rows
Type badgesNUM (Int, Float, Decimal), DATE (Date, Time, Timestamp), BOOL, BIN (Binary, Bytes), TXT (everything else)
Export formatsCSV, JSON
Browser supportAny browser with FileReader and typed arrays — Chrome, Edge, Firefox, Safari, desktop or mobile
OfflineOnce the page is loaded the decode needs no network
Cost / accountFree, unlimited files, no signup
  • Sort by the timestamp column and read the first and last page to get a data range without writing a query.
  • The distinct count in the stats popover is the quickest categorical check: 3 distinct values in 50,000 rows means a flag column, not a free-text field.
  • Min, max and mean only appear when every non-null value in the column parses as a number, so their absence tells you a numeric-looking column is stored as text.
  • Export to JSON when you want a fixture for a test and to CSV when the destination is a spreadsheet — the JSON keeps value types, the CSV flattens everything to text.
  • If the parse fails, re-export the table from your pipeline as CSV or Arrow IPC and open that instead; the in-page reader does not cover every Parquet writer.
  • Nulls sort to the bottom in both directions, so a column that shows nulls first after a descending sort is not null — it is an empty string.
  • PAR1 magic-byte validation
  • Field list with Arrow types
  • Type badges per column
  • 50-row paged grid
  • Three-state column sorting
  • Null, distinct, min, max and mean per column
  • CSV and JSON export of the full table
  • Checking what a pipeline actually wrote before loading the extract into a warehouse.
  • Answering which columns and types are in this file when the schema documentation is out of date.
  • Pulling a small Parquet extract into CSV so a colleague without Python can open it in a spreadsheet.
  • Spotting a column that is entirely null after a failed job, using the null count rather than scrolling rows.
  • Turning a few rows into a JSON fixture for a unit test without wiring up a reader in the test suite.
  • Reading a Parquet file on a laptop where installing pyarrow or DuckDB is not an option.
No. The file is read locally with FileReader and decoded by the apache-arrow library that ships inside this page, in the same tab you are looking at. There is no upload endpoint in the tool, no API request carrying the bytes, and no server-side copy to delete afterwards. The CSV and JSON exports are generated in the tab as well and handed straight to your browser download manager, so the derived data stays local too. Closing the tab is enough to dispose of everything.
The decoder in this page is apache-arrow, which implements the Arrow columnar format rather than the full Parquet specification, so its Parquet coverage is partial. Files written by some producers decode; others stop with a parse error. The tool deliberately fails loudly instead of showing a partially decoded table, because a silently truncated preview is worse than no preview. If you hit it, re-export the same table as CSV or as an Arrow IPC file from your pipeline and open that instead.
There is no hard row cap. Every row is materialised into a JavaScript object and held in page memory, so the real limit is how much memory the tab can take — a few hundred thousand narrow rows is comfortable on a desktop browser, while wide tables with many string columns get heavy sooner. The grid itself only renders 50 rows at a time, so scrolling stays fast; it is the decode and the sort that grow with row count.
No. This page decodes and browses; it does not embed a query engine. What it offers instead is column sorting, a null and distinct count per column, and min, max and mean for numeric columns, which covers most of the questions people open a Parquet file to answer. If you need joins, filters or aggregations, export to CSV or JSON here and load that into DuckDB, a spreadsheet, or the SQLite viewer on this site.
Every row. The CSV and JSON exports are built from the whole decoded table in whatever sort order is currently applied, not from the 50 rows visible on screen. CSV values are quoted only when they contain a comma, a double quote or a newline, and embedded quotes are doubled, so the output opens cleanly in Excel, Numbers and pandas. The JSON export is pretty-printed with two-space indentation and keeps numbers as numbers.
They are a short reading of the Arrow type string that the schema reports for each field. NUM covers integer, float and decimal types; DATE covers date, time and timestamp types; BOOL is a boolean column; BIN marks binary or byte columns, which will not display usefully as text; TXT is everything else, mostly strings. The full Arrow type is shown next to the field name in the schema panel when the badge is not specific enough.
View all

Part of File viewers that open the file in your browser

Updated

We use anonymous analytics to improve ToolChamp. No personal data is stored or sold. Privacy Policy