Skip to main content
v2026.11,772 entries · CC-BY 4.0

Direct comparison

HDF5 vs Zarr vs Parquet Compared

HDF5, Zarr, and Parquet compared: N-D arrays vs columnar data, local vs cloud storage, and single- vs parallel-write workloads.

Written and maintained by CASRAI Editorial Board

Last updated

Ask CASRAI · included with Regulatory Radar

Ask about HDF5 vs Zarr vs Parquet Compared

Ask CASRAI answers research-administration questions and cites the passages behind every claim — and says so when the corpus does not cover something, instead of guessing. It comes with a Regulatory Radar subscription at $29 a month, alongside the daily digest of regulatory changes and the dashboard of what changed.

150 questions a day, on this site, over the API, or inside your own tools through the CASRAI MCP server.

Everything CASRAI publishes — this page, the dictionary, the guides and the news — stays free to read, with no account and no card.

How do HDF5, Zarr, Parquet compare side by side?

The table below compares HDF5, Zarr, Parquet across 12 procurement-relevant dimensions, from data model through weakest fit.

Side-by-side comparison

DimensionHDF5ZarrParquet
Data modelHierarchical, self-describing container: groups (like folders) holding typed N-dimensional datasets and attributes anywhere in the treeChunked N-dimensional array format with an optional group hierarchy; no single-file containerColumnar tabular format: rows grouped into row groups, stored column-by-column within each
Primary data shapeLarge dense N-D numeric arrays and heterogeneous, deeply nested scientific dataLarge N-D numeric arrays needing parallel or cloud-streamed read/writeTabular / dataframe-shaped data -- event logs, transaction records, feature tables
Physical storageSingle binary file by default (B-tree indexed internally); can span family/external filesEach chunk is its own object/key -- directory of files locally, or native S3/GCS/Azure Blob objectsA file, or a set of files across a partitioned directory, commonly stored directly in object storage
ChunkingNative per-dataset chunked storage with a configurable chunk cacheCore design primitive -- array split into regular chunks up front, each independently compressedRow groups plus per-column pages act as the internal chunking unit; enables column/row-group pruning
CompressionBuilt-in filters (gzip/deflate, szip) plus third-party filter plugins (e.g. Blosc) via the HDF5 filter pipelinePluggable codecs via numcodecs (Blosc, Zstandard, LZ4, gzip), configured per arrayPer-column compression and encoding (Snappy, gzip, Zstandard, dictionary/run-length encoding)
Best storage targetLocal or networked POSIX filesystem; cloud object storage is workable but awkwardBuilt for cloud/object storage from the ground up; equally usable on a local filesystemCloud object storage and distributed filesystems -- the standard data-lake format
Parallel / concurrent writesSWMR mode (added in 1.10, 2016) allows one writer with concurrent readers; true multi-writer needs Parallel HDF5 (MPI-IO) into one shared fileDifferent processes can write different chunks of the same array concurrently with no shared file lockParallel workers typically write separate files/partitions rather than one shared file, sidestepping single-file contention
Concurrency / corruption riskUncoordinated concurrent writes to a plain, non-SWMR file risk corrupting itLow, since each chunk is an independent object; two writers to the identical chunk still need external coordinationLow, since files are treated as immutable once written and any number of readers can read concurrently
Typical ecosystemh5py, PyTables, native C/Fortran/Java/MATLAB APIs; NetCDF4 and MATLAB .mat v7.3 are built on itzarr-python, Xarray, Dask, TensorStoreApache Arrow, Spark, DuckDB, Pandas, Polars, Impala, cuDF
Random access patternEfficient hyperslab (sub-array) reads out of a large chunked dataset without loading the whole fileReads only chunks intersecting the requested slice, over range requests against object storageEfficient column pruning and row-group skipping via predicate pushdown; not built for N-D slicing
Maturity / originHDF Group; format dates to 1998, successor to HDF4 -- one of the most mature scientific-data formatsCommunity format from the mid-2010s scientific Python/bio-imaging world; v3 core spec ratified May 2023Originated 2013 at Twitter/Cloudera, drawing on Google’s Dremel paper; now an Apache top-level project
Weakest fitMany workers writing the same array concurrently, or storing it as many small cloud objectsA single small array that fits in memory, where per-chunk object overhead outweighs the parallel-I/O benefitA large dense N-dimensional numeric array (imaging volume, climate grid) -- loses native multi-D slicing

Common questions

Common questions about HDF5 vs Zarr vs Parquet

Which format should I use for large N-dimensional scientific arrays?

+

HDF5 or Zarr, not Parquet. Choose HDF5 for a single-writer workflow on local or networked POSIX storage where mature tooling matters. Choose Zarr when the array needs parallel writers or lives in cloud object storage.

Can I use Parquet for array data?

+

Only by flattening the array into columns, which loses the native multi-dimensional chunking and slicing that HDF5 and Zarr provide. Parquet is built for tabular data, not dense N-dimensional arrays.

Is Zarr a replacement for HDF5?

+

Not a strict replacement -- the two overlap in what they can store, but Zarr specifically targets parallel, cloud-native workloads, while HDF5’s strength is a mature, self-describing single-file format for single-writer local workflows.

Which of the three is safest for concurrent writes?

+

Zarr (chunk-per-object) and Parquet (partition-per-file) both avoid the single shared-file contention that makes concurrent HDF5 writes fragile without SWMR mode or a Parallel HDF5 (MPI-IO) build.

Can I convert between these formats?

+

Yes. Xarray can read and write both HDF5- and Zarr-backed arrays through a common interface, and Arrow-based tooling reads and writes Parquet from most dataframe libraries.

Referenced across the research world

University of Cambridge logoColumbia University logoCrossref logoUniversity of Edinburgh logoHarvard University logoUniversity of Oxford logoPrinceton University logoStanford School of Medicine logoUniversity College London logoORCID logoUniversity of Cambridge logoColumbia University logoCrossref logoUniversity of Edinburgh logoHarvard University logoUniversity of Oxford logoPrinceton University logoStanford School of Medicine logoUniversity College London logoORCID logo
  • University of Cambridge logo
  • Columbia University logo
  • Crossref logo
  • University of Edinburgh logo
  • Harvard University logo
  • University of Oxford logo
  • Princeton University logo
  • Stanford School of Medicine logo
  • University College London logo
  • ORCID logo

View CASRAI adoption →

Regulatory Radar

Stop finding out after the fact

$29/month, cancel anytime. Daily digest updates from our analysis, a dashboard holding the same items, and a cited assistant for everything they raise.

  • Federal Register, Federal Register+, Grants.gov, Regulations.gov, NSF News, UKRI, plus CASRAI’s own published content.
  • 72,264 indexed passages, and every answer cites the ones it drew on.