Graphhopper
Open source routing engine for OpenStreetMap. Use it as Java library or standalone web server.
Install / Use
/learn @graphhopper/GraphhopperREADME
GraphHopper Routing Engine
GraphHopper is a fast and memory-efficient routing engine released under Apache License 2.0. It can be used as a Java library or standalone web server to calculate the distance, time, turn-by-turn instructions and many road attributes for a route between two or more points. Beyond this "A-to-B" routing it supports "snap to road", Isochrone calculation, mobile navigation and more. GraphHopper uses OpenStreetMap and GTFS data by default and it can import other data sources too.
Community
We have an open community and welcome everyone. Let us know your problems, use cases or just say hello. Please see our community guidelines.
Questions
All questions go to our forum where we also have subsections specially for developers, mobile usage, and our map matching component. You can also search Stackoverflow for answers.
Contribute
Read through our contributing guide for information on topics like finding and fixing bugs and improving our documentation or translations! We also have good first issues to get started with contribution.
Get Started
To get started you can try GraphHopper Maps, read through our documentation and install GraphHopper including the Maps UI locally.
- 11.x: documentation , web service jar , announcement
- unstable master: documentation
See the changelog file for Java API Changes.
<details><summary>Click to see older releases</summary>- 10.x: documentation , web service jar , announcement
- 9.x: documentation , web service jar , announcement
- 8.x: documentation , web service jar , announcement
- 7.x: documentation , web service jar , announcement
- 6.x: documentation , web service jar , announcement
- 5.x: documentation , web service jar , announcement
- 4.x: documentation , web service jar , announcement
- 3.x: documentation , web service jar , announcement
- 2.x: documentation , web service jar , announcement
- 1.0: documentation , web service jar , Android APK , announcement
- 0.13.0: documentation , web service jar , Android APK , announcement
- 0.12.0: documentation , web service jar , Android APK , announcement
- 0.11.0: documentation , web service jar , Android APK , announcement
- 0.10.0: documentation , web service zip , Android APK , announcement
- 0.9.0: documentation , web service zip , Android APK , announcement
- 0.8.2: documentation , web service zip , Android APK , announcement
- 0.7.0: documentation , web service zip , Android APK , announcement
Installation
To install the GraphHopper Maps UI and the web service locally you need a JVM (>= Java 17) and do:
wget https://repo1.maven.org/maven2/com/graphhopper/graphhopper-web/11.0/graphhopper-web-11.0.jar \
https://raw.githubusercontent.com/graphhopper/graphhopper/11.x/config-example.yml \
http://download.geofabrik.de/europe/germany/berlin-latest.osm.pbf
java -D"dw.graphhopper.datareader.file=berlin-latest.osm.pbf" -jar graphhopper*.jar server config-example.yml
After a while you see a log message with 'Server - Started', then go to http://localhost:8989/ and you'll see a map of Berlin. You should be able to right click on the map to create a route.
See the documentation that contains e.g. the elevation guide and the deployment guide.
Docker
The Docker images created by the community from the master branch can be found here
(currently daily). See the Dockerfile for more details.
GraphHopper Maps
The GraphHopper routing server uses GraphHopper Maps as web interface, which is also [open source](https://github.com/grap
