BINARY FORMAT

Binsparse

Binsparse (the binsparse-specification) is a cross-platform binary storage format for sparse matrices, tensors, and multidimensional arrays. It emerged from a standardization effort hosted under the GraphBLAS project and described in the 2025 paper "Binsparse: A Specification for Cross-Platform Storage of Sparse Matrices and Tensors" (arXiv:2506.19175) by Benjamin Brock, Willow Ahrens, Hameer Abbasi, Timothy A. Davis, and collaborators. Its motivation is that sparse computation is typically bandwidth-bound, so the cost of reading or writing a matrix to disk often dominates the actual arithmetic; existing interchange formats such as Matrix Market (Matrix Market) and FROSTT are human-readable text and therefore slow and bulky. Binsparse targets standardized, portable, high-throughput binary interchange, reporting roughly 2.4x smaller files, 26x faster reads, and 31x faster writes versus Matrix Market parsers.

A Binsparse object has two parts: a small JSON descriptor and one or more raw binary arrays. The descriptor (under a "binsparse" namespace) carries required fields including version, format, shape, numberofstoredvalues, and datatypes, plus optional fill and structure fields for implicit fill values and symmetric or Hermitian matrices. Rather than serializing the format itself, Binsparse is embeddable: the JSON and the named binary arrays live inside an existing binary container. Reference implementations in C and C++ use HDF5; the spec also names NetCDF, Zarr, NPZ, and even in-memory containers such as DLPack for zero-copy handoff between libraries.

The format enumerates twelve predefined layouts spanning dense (DVEC, DMATR, DMATC), compressed (CVEC, CSR, CSC), doubly compressed (DCSR, DCSC), and coordinate (COOR, COOC) representations, with COO and DMAT as aliases; custom hierarchical layouts can be composed from element, dense, and sparse levels. Supported element types cover the standard 8- to 64-bit signed and unsigned integers, float32/float64, a boolean bint8, plus complex and iso (uniform-value) modifiers.

Because a graph is naturally represented as a sparse adjacency matrix, Binsparse is directly relevant to the graph-data world: CSR/CSC and COO encodings of large graphs move efficiently between GraphBLAS-based analytics engines, and iso-valued arrays compactly store unweighted adjacency structure. It complements array-oriented matrix exchange formats such as Harwell-Boeing (Harwell-Boeing), Rutherford-Boeing (Rutherford-Boeing), and Matrix Market rather than replacing labeled-graph serializations like GraphML. Its main limitations are youth and scope: the specification is at version 0.1, container and language support is still expanding, and it deliberately encodes numeric array structure only, carrying no rich node/edge attribute model, so it is an efficiency-focused numerical layer rather than a semantic graph description.

Alternative Names: binsparse-specification

Frequently Asked Questions

What is a Binsparse file?

A Binsparse file stores a graph — its nodes, edges and attributes — in the Binsparse format (also: binsparse-specification). See the feature table above for what it supports.

How do I open a Binsparse file?

Open it in a graph tool that supports Binsparse, or convert it to a format your tool reads. With GraphInOut you can convert Binsparse to GraphML, DOT, Connected JSON and more, right in your browser.

How do I convert a Binsparse file to another format?

Use the Convert from Binsparse link above: upload or paste your Binsparse file (input preset to Binsparse), choose a target format and download the result — free, no install.