Parquet viewer, no Python needed

Drop a .parquet file to see its columns, types and rows in a fast table. DuckDB reads it inside your browser tab, so there's nothing to install and nothing is uploaded.

Drop a file to explore it
Parquet, up to 1.5 GB. It opens in your browser and stays there until you share it.

No file handy? Open NYC taxi trips, April 2019 (7.4M rows, 127 MB).

Skip the notebook

Checking a Parquet file usually means opening Python, importing pandas or Polars and printing df.head(). Here you drop the file and get every column with its type, the row count, and a chart per column: histograms for numbers and timestamps, top values for strings, and the share of nulls.

Nested columns stay usable

STRUCT columns flatten into dot-path columns like payload.user.id. LIST columns stay lists: they show as chips, and tags:urgent finds rows whose list contains urgent. Open a row to see the record rebuilt as a tree.

Millions of rows, locally

Snappy, Gzip and Zstandard files all open. The practical ceiling is memory, about 1.5 GB of data per tab. Open the 7.4 million row NYC taxi sample to see how that feels.

Filter, query, export

Type fare_amount:>50 passenger_count:1 to filter, or start with SELECT to run SQL against the table data. Export the result as Parquet (Zstandard), CSV, JSON, JSONL or Markdown.

To hand someone a link instead, push the file: curl -T data.parquet https://rows.page.

Questions

Is my Parquet file uploaded?
No. Opening a file reads it inside your browser tab. It only leaves your machine if you share it or push it with curl.
Which compression codecs work?
Snappy, Gzip and Zstandard, plus uncompressed files. That covers the defaults of pandas, PyArrow, Polars, Spark and DuckDB.
How large a Parquet file can I open?
Up to about 1.5 GB of data per tab. Parquet is compressed, so a file takes more memory once loaded than it does on disk.
How are nested columns shown?
Structs become dot-path columns like address.city. Lists stay lists you can filter with field:value.

Open other formats

Pushing data from a script or agent? Read the docs.