b2KIT

Parquet File Viewer

Open and browse Apache Parquet files in the browser with column statistics and row group info.

Tested tool guide Tested browser tools Checked August 16, 2026

What Parquet File Viewer does, with a checked example

This tool opens a .parquet file selected from local disk and parses its footer to display the schema, row group boundaries, and per-column statistics (min, max, null count) without loading the whole file into a database or spreadsheet. Parquet stores that footer, closed with the PAR1 magic bytes, at the end of the file, so the tool can present structure before decoding any data pages. What trips people up: those statistics are whatever the writing tool recorded per row group, not values the viewer computes itself, so a column can show a blank min/max if the writer skipped them, and there is no single whole-file min/max shown automatically.

Worked example

A concrete input and expected output from the current implementation.

Input

A .parquet file with 1 row group containing column id (INT64) with values 1, 2, 3, 4, 5 and column name (BYTE_ARRAY/UTF8), no nulls in either column.

Expected output

Row groups: 1. Rows: 5. Column id: type INT64, min 1, max 5, null count 0. Column name: type BYTE_ARRAY (UTF8), null count 0.

The footer records one row group entry covering all 5 rows, and the column chunk metadata for id carries the min and max of the 5 integers it was written with.

How the result is produced

1

Footer-first parsing

Parquet files hold schema and row group metadata in a footer near the end of the file: the footer metadata is followed by a 4-byte field giving that metadata's length, and the file ends with the 4-byte PAR1 magic bytes. The tool reads that footer first to build the schema tree and row group list, which is why structure appears quickly even for a file with many row groups.

2

Per-row-group column statistics

Each column chunk inside a row group can carry writer-supplied min, max, null_count, and distinct_count fields in its metadata. The tool displays whatever was recorded for that chunk; it does not decode and rescan the actual data pages to independently verify or recompute those numbers.

Good uses

  • Checking the schema and column types of a Parquet file handed off from a data pipeline before writing code against it
  • Reviewing row group count and sizes to judge whether a file will split well for parallel reads in Spark, DuckDB, or Arrow
  • Spot-checking a column's min/max or null count to catch obviously bad data, like a negative minimum in a price column, without spinning up a query engine

Limits and checks

  • Row group statistics come from the writer, not the format's guarantee; minimal or older writers can leave min/max or distinct_count empty rather than zero
  • A min/max shown for one row group is not a whole-file aggregate; finding the true file-wide min/max means comparing that stat across every row group by hand
  • List and map columns use Parquet's 3-level repeated-group encoding internally, while a struct is just a plain required/optional group with no repetition; either way a flat column listing can obscure how deeply a field is actually nested compared to the source schema

Common questions

Does it show me the actual row data, or just metadata?

Both. Schema and row-group/column statistics come directly from the footer, and the tool also decodes and previews rows on request. For very large files the row preview is typically a subset rather than the full file materialized in the browser tab.

Is my file uploaded to a server to be read?

No. The file is read locally from the one you select on disk, and parsing happens in the browser. Nothing about the file's contents or metadata is sent anywhere as part of opening or browsing it.

References and verification

The example and behavioral notes were checked against the browser implementation. Standards and primary references below define the relevant format, formula, or platform behavior.

Related Tools