Apache Parquet

Apache Parquet

Parquet is a typed, compressed, columnar file format built for analytical workloads. It is the storage layer under most modern data platforms, and it is deliberately unreadable without a tool.

Type information
Full — ints, floats, booleans, timestamps, decimals
Structure
Columnar, with nested type support
Compression
Built in (Snappy, Gzip, Zstd)
Typical file size
Typically 5–15% of the CSV
Schema
Stored in the file footer
Human-readable
No — binary
Tool support
Spark, DuckDB, pandas, BigQuery, Athena

ParquetCSV

Runs on your device
Options

Reading Parquet

Writing CSV

Converting Parquet just to look inside it?Open Parquet files directly with ParquetReader — opens Parquet files directly.

The defining choice is columnar storage: instead of writing row one, then row two, Parquet writes all of column one, then all of column two. Values of the same type sit next to each other, which compresses far better than mixed row data, and lets a query engine read only the columns a query mentions. A query touching two columns of a fifty-column table reads roughly 4% of the file.

On top of that, Parquet stores a real schema in its footer, along with statistics — minimum, maximum and null count — for each chunk of rows. An engine can use those statistics to skip entire row groups without decompressing them. This is why a filtered query over a large Parquet file can return before a CSV of the same data has finished being read.

The trade-off is that you cannot look at it. There is no text editor view, no head command that shows you anything useful, and no way to check a value without a library that understands the format. That is the tax for the performance, and it is the reason Parquet tooling exists at all.

What Parquet is good at

  • Typically 5–15% of the size of the equivalent CSV.
  • Full type system: integers, floats, booleans, timestamps, decimals and nested structures.
  • Column pruning and row-group skipping make analytical scans dramatically faster.
  • Schema travels inside the file, so types survive every handoff.
  • Read natively by Spark, DuckDB, pandas, Polars, BigQuery, Athena and Snowflake.

Where it falls short

  • Binary — unreadable without tooling, which makes casual inspection impossible.
  • Poorly suited to row-by-row appends; it is written in batches.
  • Not supported by Excel, Google Sheets, or most business software.
  • Encrypted variants need key management that a browser tool cannot provide.
FAQ

Parquet questions

How do I open a Parquet file?
You need a tool that understands the format — a text editor shows you nothing useful. For a one-off look, convert it to CSV or JSON on this page. If you work with Parquet regularly, ParquetReader opens these files directly on your machine: it reads the schema and row counts straight from the footer and runs SQL against the file, so there is no conversion step at all.
Why is Parquet so much smaller than CSV?
Three reasons compounding: values of one type are stored together and compress well, repeated values are dictionary-encoded so each distinct value is stored once, and a compression codec such as Snappy or Gzip is applied on top.
Snappy, Gzip or Zstd?
Snappy is the ecosystem default and decompresses very fast. Gzip produces smaller files at a real read cost. Zstd sits between them and is increasingly the best choice where it is supported.
Can Excel open Parquet files?
Not natively. Some Microsoft 365 configurations reach Parquet through Power Query, but converting to .xlsx here is the reliable route. If the goal is to read the data rather than edit it in a spreadsheet, ParquetReader opens it without the conversion.

Other format guides: CSV · JSON · JSONL · Excel · TSV