GraphHopper Routing Engine 7.0 Released

We have released the next version of GraphHopper, the flexible and fast open source routing engine for OpenStreetMap. Read more about it on GitHub and read on to find out what’s new.

When you start the new GraphHopper Routing Engine, you will be greeted by the new GraphHopper Maps. We have blogged about it earlier and you can try it out at

The new user interface for the GraphHopper routing engine. Rewritten from scratch for a more convenient and more powerful experience.

One long awaited feature is that GraphHopper can now handle also more complex turn restrictions (by @easbar and @lukasalexanderweber). The most common cases for turn restrictions were already well supported, but sometimes the current turn restriction depends on the previous road from which one reached the current road and this required special handling. This was rather tricky to implement and improves routing for e.g. navigation applications, especially in larger cities where such restrictions may occur more frequently:

The route does not include the two consecutive left turns at A and B as there is a “complex” turn restriction that prohibits this U-turn. However, the restriction allows the left turn at B when coming from Rivers Street.

In the new GraphHopper version you can now easier store the OSM way IDs (by easbar). This improves the interaction with other applications like a PostgresSQL/PostGIS database or similar where you store your own properties per way ID from OpenStreetMap and want to enhance e.g. the GraphHopper response with these properties.

Customizable Routing

There are now new EncodedValues like “curvature” and “footway”. E.g. with “curvature” you can create custom models that prefer curvy roads or avoid them which can be quite powerful in combination with the “urban_density” or slope related EncodedValue released in the previous version.

We improved the response speed for heavier customized profiles and the hike profile has now more realistic times.

Changes to Areas

You can now also define custom areas outside of a custom model, so that you can create multiple models without creating the same areas again. We now use the FeatureCollection as format in the custom model to make it easier to use with other tools. And you can see the areas directly in GraphHopper Maps:

In this example the area is excluded and this is easily visible due to the shown area (in red).


Thanks a lot to all contributors!

easbar, boldtrn, michaz, lukasalexanderweber, otbutz, karussell, ratrun, OlafFlebbeBosch

Many Other Bug Fixes and Improvements

Start using GraphHopper

You can see the new version in action on, or install it locally on your laptop or server. Do not hesitate to ask questions or leave feedback in our forum.

Happy routing!

Next Article