Parquet Explorer

Open a local Parquet file, inspect its schema and row groups, and browse selected columns in a virtualized table.

Your inputs and files stay in your browser

Drop a Parquet file here

Drop a Parquet file here

One .parquet file. It stays on this device.

The footer, selected columns and export are read in a Web Worker. File contents and schema are never uploaded or saved.

Explorer

Choose a Parquet file to see its schema, row groups and a virtualized column preview.

On this page

Parquet Explorer opens an Apache Parquet file entirely in your browser. It reads the footer for the schema and row-group statistics, then decodes only the columns you ask to see, so a wide or tall file does not have to become one HTML table.

Detailed Functionality

The file stays on this device. A Web Worker reads the PAR1 footer through file slices, then lists top-level columns, physical and logical types, repetition and the compression codec of each column. Row groups show their row counts and compressed sizes. The table is virtualized: scrolling requests a small window of rows for the checked columns only.

INT64 and other integers that do not fit in a JavaScript number keep their decimal digits. Timestamps become UTC ISO-8601 text. Binary cells are shown as lowercase hex. Nested structs and lists are JSON. Duplicate column names receive a numeric suffix so JSONL keys stay unique.

CSV and JSONL downloads scan every row of the selected columns, not only the rows on screen. Spreadsheet formula protection is on by default for CSV. Output stops at 512 MiB. Supported codecs are uncompressed, Snappy, gzip, Brotli, Zstd, LZ4 and LZ4_RAW. LZO pages cannot be decoded. The tool does not filter, sort, aggregate or write Parquet.

Practical Examples

Flat columns: a file with name (string) and id (INT64) opens with both columns checked. An id such as 9007199254740993 stays that exact decimal in the table, in CSV and in JSONL.

Column projection: clear Select all, check only name, and scroll. Other column chunks are not decoded for that view. The export contains only the checked columns.

Several row groups: the row-group list shows each group's row count and codec. The table still reads across groups as one row sequence.

Formula-shaped text: a string value =1+1 is exported to CSV as '=1+1 while formula protection is on. JSONL keeps the original string.

How to Use This Tool

  1. Open a local file

    Drop or choose one .parquet file. The footer read reports bytes, speed and elapsed time. Cancel and choose the file again to start over.

  2. Read the schema

    Check column types, repetition and compression, then the row-group sizes. File metadata pairs from the footer are listed when the file has them.

  3. Browse columns

    Uncheck columns you do not need. Scroll the virtual table and select a row to read longer cell values.

  4. Export

    Choose CSV or JSONL. Keep formula protection on for CSV unless you need the raw leading characters. Download writes every row of the checked columns, up to 512 MiB.

Tips and Best Practices

  • Only the checked columns are decoded for the current table and for the download. Leave large binary columns unchecked when you only need the keys.
  • A column chunk is still decompressed as a whole, so one huge value can use a lot of memory even though the rest of the file is sliced.
  • JSONL writes integers that do not fit in a safe JavaScript number as decimal strings, not as rounded numbers.
  • More than 512 top-level columns is rejected. The first 500 row groups are listed; the summary count includes the rest.
  • LZO compression is not supported. Uncompressed, Snappy, gzip, Brotli, Zstd, LZ4 and LZ4_RAW are.
  • This page does not run SQL. Sorting, grouping and Parquet writing are separate tools.

Help shape what comes next

What should we improve next?

Choose one suggestion. These are ideas, not promised features.

Choose one option

The vote sends only the selected choice as an anonymous count. It contains no input, file data, URL, cookie or identifier and is not stored in this browser. Reloading the page allows another vote.