Skip to content


Switch branches/tags

Latest commit

* Expose cython API for internal use

* fix typeo

* Expose Cython API for external use

* Add Cython test

* Install cython in tests

* fix syntax for 2.7 and 3.5

* Fix lint check

* Call pytest on directory

* Build cython test in coverage-lint

* Only run cython test if import succeeds

* No bare except

Git stats


Failed to load latest commit information.
Latest commit message
Commit time

H3 Logo

h3-py: Uber's H3 Hexagonal Hierarchical Geospatial Indexing System in Python

PyPI version PyPI downloads conda version version

Tests codecov

Python bindings for the H3 core library.


From PyPI:

pip install h3

From conda:

conda config --add channels conda-forge
conda install h3-py


>>> import h3
>>> lat, lng = 37.769377, -122.388903
>>> resolution = 9
>>> h3.geo_to_h3(lat, lng, resolution)


We provide multiple APIs in h3-py.

Example gallery

Browse a collection of example notebooks, and if you have examples or visualizations of your own, please feel free to contribute!

We also have an introductory walkthrough of the API.


h3-py wraps the H3 core library, which is written in C. The C and Python projects each employ semantic versioning, where versions take the form X.Y.Z.

The h3-py version string is guaranteed to match the C library string in both major and minor numbers (X.Y), but may differ on the patch (Z) number. This convention provides users with information on breaking changes and feature additions, while providing downstream bindings (like this one!) with the versioning freedom to fix bugs.

Use h3.versions() to see the version numbers for both h3-py and the C library. For example,

>>> import h3
>>> h3.versions()
{'c': '3.6.3', 'python': '3.6.1'}