Global, equal-area, millimeter-accurate geospatial index
A5 turns any location on Earth into a 64-bit cell ID, on a grid of equal-area pentagons that runs from continents down to 30mm². Join, aggregate and compare data anywhere, with fast libraries and integrations across your whole stack.
Strong ecosystem
Robust base libraries in TypeScript, Python and Rust, with DuckDB, R, QGIS, deck.gl and more built on top. All interoperable via a cell index that is frozen from v1.0, so stored IDs stay valid.
Fast & rich API
High-level functions make working with the grid easy. The native Rust core indexes over 2 million points per second on a laptop.
Equal area, single topology
Every cell is an exactly equal-area pentagon — no exceptions, no kinks. Resolutions all the way down to 30mm² give a common way to represent point, line, polygon and raster data without statistical bias.
Built for big data
Cell IDs follow a global space-filling curve that never crosses itself, so polygons and coverings are compact ID ranges. Fill, union and intersect billions of cells in seconds, and use A5 as a natural partitioning key.
Unmistakable on a map
A5's pentagon mosaic is recognizable at a glance, and renders fast in a variety of geospatial libraries, such as deck.gl, MapLibre or QGIS.
A few lines to your first cell
INSTALL a5 FROM community;INSTALL a5 FROM community;LOAD a5;
SELECT a5_cell_to_boundary( a5_cell_to_parent(a5_lonlat_to_cell(2.2945, 48.8584, 20), 10));
lonboard