50

Apache Parquet file signature

Magic number at the start of the file · PAR1

50 41 52 31

A Parquet file is bracketed by the four bytes PAR1 (50 41 52 31): the same marker opens the file and closes it, so a reader can find the footer by seeking to the last four bytes.

Hex signature
50 41 52 31
Offset
0 (start of file)
ASCII
PAR1
Length
4 bytes

What this magic number means

A magic number is a short, fixed run of bytes at a known position that tells a program what a file really is, no matter what the filename says. If a file starts with the bytes 50 41 52 31 (the text PAR1), it is an Apache Parquet file.

Because the metadata lives at the end, a Parquet file cannot be streamed forwards the way a CSV can; the reader must be able to seek. It is also why a truncated Parquet is unreadable rather than partly readable: lose the last bytes and you lose the map to everything else.

What each byte of 50 41 52 31 means

Here is the signature byte by byte, the way a hex editor shows it: the position in the file, the value in hex and in decimal, and the character that value stands for in ASCII. Bytes with no printable character show a dot.

Byte offsetHexDecimalASCII
05080P
14165A
25282R
331491

The marker at the end of the file

Apache Parquet carries a fixed marker at the end of the file as well as its header at the start. The bytes 50 41 52 31 close the file (PAR1 also closes the file). The header is what identifies the format; this is an additional marker, not the signature.

Parquet writes PAR1 at both ends on purpose, and both copies are part of the format rather than one being a fallback for the other. The trailing copy sits after a four-byte little-endian length field, so a reader seeks to the last eight bytes, checks the magic, reads the length and jumps straight back to the Thrift-encoded file metadata: the schema, the row groups and the column offsets. That is what lets a query engine read one column out of a multi-gigabyte file without touching the rest. The leading copy is what a signature check sees at byte 0.

Formats that use the 50 41 52 31 signature

These file types in our database carry this signature:

How to check a file's signature

You can read the bytes of any file yourself. They are shown in hex, the same way this page lists them.

Linux & macOS

  • xxd -l 16 example.parquet
  • hexdump -C -n 16 example.parquet
  • file example.parquet

Windows (PowerShell)

  • Format-Hex -Path example.parquet -Count 16

Python

  • open("example.parquet","rb").read(4).hex()

In your browser

Frequently asked questions

What is the Apache Parquet file signature?

Apache Parquet files start with the hex bytes 50 41 52 31 (PAR1 in ASCII). This magic number identifies the format regardless of the file's name or extension.

How do I check a file's magic number?

Open the file in a hex editor, or run a command such as xxd -l 16 example.parquet on Linux or macOS, or Format-Hex -Path example.parquet -Count 16 in Windows PowerShell, and read the first bytes.

Can a file fake the Apache Parquet signature?

Renaming a file does not change its bytes, so the extension can lie but the signature usually cannot. A genuine Apache Parquet file has these exact bytes; a file with the wrong bytes is not really Apache Parquet, whatever its name says.

Related signatures

Sources

Reuse this signature

This entry is part of the WhatFileType file signature reference, published under a CC BY 4.0 licence with the full provenance for every entry, a copy-paste embed and a JSON export. Credit WhatFileType and the data is yours to republish.