ZERO-UPLOAD SANDBOX
.feather Tier 1 · Deep AST Parser

Feather v2 Columnar DataFrame

Fast, language-agnostic DataFrame persistence format for Python (Pandas/Polars) and R, standardized since v2 directly atop the Apache Arrow IPC file specification.

Feather v2 uses identical `ARROW1\x00\x00` binary framing to `.arrow`, typically compressed with LZ4 or Zstd for sub-millisecond local disk I/O.

MIME Types application/vnd.apache.arrow.file, application/octet-stream
Byte Endianness little
0xFF

Drop any .feather file (even 100 GB+) to inspect locally

Reads tiny File.slice() header/footer pages in a sandboxed Web Worker · 0 Bytes Uploaded

Binary Signature & Wire Layout

.feather Magic Bytes & Header Offset Map

Offset: 0x00 (0 B) ASCII: ARROW1..
41 52 52 4F 57 31 00 00

Feather v2 / Arrow IPC 8-byte aligned header

Byte Offset Length Data Type Field Name Engineering Description
0x00 - 0x07 8 B char[8] magic 'ARROW1\x00\x00' (Feather v1 used 'FEA1')
EOF-6 .. EOF-1 6 B char[6] trailer Trailing 'ARROW1' footer
Upload Gateway & AppSec Advisory

.feather Security & Polyglot Risk Matrix

Risk Level: low
Arbitrary Code / Macros
NO (Inert Data)
Pickle Deserialization
SAFE (No Pickle VM)
XML External Entity (XXE)
NONE
Polyglot Prepend Risk
LOW (Strict 0x00 Magic)
Backend Upload Validation Recommendation

Check head[0:6] == 'ARROW1' (or 'FEA1' if supporting legacy Feather v1) and trailing 'ARROW1'.

Compiler-Verified Reference Code

Read .feather Header & Metadata Without Heavy Dependencies

import os, sys
with open(sys.argv[1], "rb") as f:
    head = f.read(6)
    f.seek(-6, os.SEEK_END)
    tail = f.read(6)
    assert head == b"ARROW1" and tail == b"ARROW1"
    print("Valid Feather v2 (Arrow IPC)")
CI/CD & Unit Test Fixtures

Deterministic .feather Sample Files & Edge Cases

Open Full .feather Sample Matrix & Mutator →
minimalexpect: valid

minimal-v2.feather

Feather v2 file written by pyarrow.feather — a 2-column float64 frame on the Arrow IPC file spec.

↓ Download (698 B)
SHA-256: a7b7e3734e10f27781a826cecf82630049d2b74468dea4744a47c433f88ddc4a
Exact: 698 bytes
curl -fsSL https://fileformat.co/fixtures/v1/feather/minimal-v2.feather -o minimal-v2.feather \
  && echo "a7b7e3734e10f27781a826cecf82630049d2b74468dea4744a47c433f88ddc4a  minimal-v2.feather" | shasum -a 256 -c
realisticexpect: valid

dataframe-metrics.feather

120-row Feather v2 frame with timestamp/string/float64 columns for pandas / Polars / R interchange tests.

↓ Download (2.3 KB)
SHA-256: 9c926ae0f0b8243b5c925b4148d223a0087992617977aa1f8a24537e9ee400ca
Exact: 2,314 bytes
curl -fsSL https://fileformat.co/fixtures/v1/feather/dataframe-metrics.feather -o dataframe-metrics.feather \
  && echo "9c926ae0f0b8243b5c925b4148d223a0087992617977aa1f8a24537e9ee400ca  dataframe-metrics.feather" | shasum -a 256 -c
edge-caseTruncated Footerexpect: parser_error

truncated-tail.feather

Feather file missing footer bytes and trailing ARROW1 signature — pyarrow read must raise.

↓ Download (682 B)
SHA-256: d3a2f23f36b2b0ae8ebfbffd7606ce33280de61a137e55e3ce62bce679e6ed70
Exact: 682 bytes
curl -fsSL https://fileformat.co/fixtures/v1/feather/truncated-tail.feather -o truncated-tail.feather \
  && echo "d3a2f23f36b2b0ae8ebfbffd7606ce33280de61a137e55e3ce62bce679e6ed70  truncated-tail.feather" | shasum -a 256 -c

Related Specifications & Alternatives