---
title: "Feather format"
description: "Feather is a fast, lightweight binary file format for storing columnar data frames on disk, based on the Apache Arrow columnar memory format, commonly used for quick interchange between pandas, R, and other Arrow-compatible tools."
canonical: "https://motherduck.com/glossary/feather-format/"
related:
  - title: "DuckLake | MotherDuck Docs"
    url: "https://motherduck.com/docs/concepts/ducklake/"
  - title: "DuckDB vs Pandas vs Polars for Python Developers"
    url: "https://motherduck.com/blog/duckdb-versus-pandas-versus-polars/"
  - title: "Loading data to MotherDuck with Python | MotherDuck Docs"
    url: "https://motherduck.com/docs/key-tasks/loading-data-into-motherduck/loading-data-md-python/"
gated_asset:
  title: "DuckLake on MotherDuck"
  url: "https://motherduck.com/product/ducklake/"
---

# Feather format

> Feather is a fast, lightweight binary file format for storing columnar data frames on disk, based on the Apache Arrow columnar memory format, commonly used for quick interchange between pandas, R, and other Arrow-compatible tools.

## Overview
Feather is a file format for saving data frames to disk with minimal serialization overhead, so that reading and writing is close to as fast as the data's in-memory representation. The current version, Feather V2, is simply the Apache Arrow IPC (interprocess communication) file format — Feather is essentially a friendly name for writing an Arrow table straight to disk.

## Why it's fast
Because Feather stores data in the same columnar layout Arrow uses in memory, reading a Feather file mostly involves memory-mapping bytes rather than parsing and reconstructing values, as text formats or row-oriented formats require. This makes it well suited to short-lived, intermediate files passed between processing steps or between languages like Python and R.

## Feather vs. Parquet
Feather trades some capabilities for speed. It generally applies lighter compression than Parquet and lacks Parquet's rich per-column statistics and predicate pushdown, which matter for scanning large datasets selectively. In practice, Feather is best for fast local interchange and caching, while Parquet is the better choice for long-term storage, large analytical datasets, and cross-tool archival, since it's more widely supported and compresses more aggressively.

## DuckDB and Feather/Arrow files
DuckDB reads Arrow IPC files — the format Feather V2 uses — through its Arrow support, recognizing `.arrow` and `.arrows` files directly:

```sql
INSTALL arrow;
LOAD arrow;

SELECT * FROM read_arrow('data.arrow');
```

In Python, DuckDB can also query a Feather file zero-copy after loading it with PyArrow, since DuckDB's Python client integrates directly with Arrow tables:

```python
import pyarrow.feather as feather
import duckdb

table = feather.read_table("data.feather")
duckdb.sql("SELECT * FROM table").show()
```