What is H3?
A hexagonal, hierarchical geospatial index that carves the Earth into cells you can address with a single ID — then zoom into any cell by stepping down a resolution.
H3 was developed by Uber and open-sourced in 2018. It solved a problem that comes up constantly in operations analytics for anything that moves across a map: how do you aggregate events — pickups, deliveries, outages, sightings — into comparable spatial buckets, at the resolution the question calls for, without the artifacts you get from latitude/longitude grids?
The system's full name — Hierarchical Hexagonal Geospatial Indexing System — tells you most of what it does. It assigns every point on Earth to a hexagonal cell, every cell to a parent at a coarser resolution, and every parent to (approximately) seven children at the next finer one. Sixteen resolutions in all, from resolution 0 (122 cells covering the planet) to resolution 15 (cells smaller than a square metre).
Why hexagons?
Hexagons have a useful property that squares don't: every neighbour sits at the same distance from the centre. On a square grid, the four edge neighbours are closer than the four corner neighbours, which skews any analysis that depends on local proximity — nearest-neighbour searches, diffusion models, radial smoothing. Hexagons eliminate that artifact.
They also tile well visually, read well in heatmaps, and don't produce the "line" effect that square grids impose on maps.
The tradeoff is that hexagons can't perfectly subdivide into smaller hexagons — unlike squares, which quarter into four smaller squares — so H3 uses an aperture-7 subdivision where each parent corresponds to seven children, with a small amount of overlap at the edges. For most analytical purposes the imperfection is invisible.
Resolutions, roughly
| Resolution | Avg. edge length | Rough feel |
|---|---|---|
| 0 | 1,107 km | continent-scale |
| 3 | 60 km | metro region |
| 6 | 3.2 km | neighbourhood |
| 8 | 461 m | city block cluster |
| 9 | 174 m | city block |
| 11 | 24.9 m | building footprint |
| 13 | 3.6 m | parking space |
| 15 | 0.5 m | sub-metre precision |
Resolution 8 and 9 are the most common choices for city-scale analytics — big enough to aggregate meaningful counts, small enough to resolve individual neighbourhoods or road segments.
What people use it for
- Ride-share and delivery operations. Pickup density, demand forecasting, surge zones, chauffeur positioning, courier routing — H3 is the native language of these problems because the entities themselves move continuously and need to be bucketed consistently across time.
- Heatmaps and choropleths. Hexagons produce cleaner visual density than squares and don't carry the political baggage of administrative boundaries.
- Spatial joins at scale. Index two datasets to the same resolution, join on cell ID, done. Much faster than r-tree joins against geometry.
- Hierarchical rollups. Keep raw data at resolution 11 or 12, aggregate up to 8 for dashboards, down to 15 for debugging — all without re-tessellating.
- Zone definition. Service areas, incentive zones, delivery boundaries. Easier to maintain as a list of H3 cells than as polygons.
About this site
H3Split is a small single-purpose utility. It takes H3 cell IDs at one resolution and returns the children at a finer resolution — a one-liner in h3-js (cellToChildren(cell, res)) that you nonetheless end up writing surprisingly often, in notebooks, in SQL UDFs, in one-off scripts.
Everything runs client-side via h3-js loaded from a CDN. Your cells never leave your browser. There's no account to create, nothing to install.
If you want to go further, the docs cover input formats, keyboard shortcuts, and gotchas, and the blog has deeper dives on H3 fundamentals and comparisons with other spatial indexes.
Built with h3-js. Not affiliated with Uber.