We have released version 11 of GraphHopper, the flexible and fast open source routing engine for OpenStreetMap. Read more about it on GitHub or try GraphHopper Maps.
The following contributors worked on over 45 pull requests and many more smaller changes:
michaz, easbar, otbutz, karussell, ratrun, OlafFlebbeBosch, tyrasd, james-willis, caspg, vasilybels, OsamaAlmaani, binora
Thanks a lot to all contributors!
Turn-by-Turn Navigation
We introduced a POST /navigate endpoint that accepts a GraphHopper request including a custom model, which makes it possible to use customized requests even for navigation. There are examples how this can be used in maplibre navigation SDK as well as ferrostar.
And several further improvements have been made to the /navigate endpoint.
Bike Improvements
Not only have we improved the bike instructions for the /navigate endpoint but there were many bug fixes and improvements related to the bike routing itself.
Flexible Turn Costs
A new feature landed that allows you to model turn penalties in the custom model without writing Java code. This function makes it possible, for example, to avoid turning left:

or reduce turns in general:

When setting the new turn penalty feature it is possible to differentiate between right- and left-hand traffic, and between the road classes (highway tags) of the roads involved. Please note that this feature is not enabled in the GraphHopper API or for GraphHopper Maps.
Read more about it in the corresponding pull request.
Improved Avoidance of Private Roads
Interestingly, the turn penalty feature made it possible to resolve a long-standing issue regarding private and destination-only roads. These roads are now properly avoided, even if they are short, and no unusual detours will be produced if a destination is on such a road. Read more about it in the pull request. This works already for the GraphHopper Directopms API and for GraphHopper Maps:

🎉 This work was sponsored by OPTITOOL.
Public Transit
An additional solver for public transit queries was added from @michaz. It is much faster than the current solver, especially for profile queries (to get all routes that are optimal at some point in a time interval). It loads and pre-processes and runs national networks on laptops, and has been known to work for continental networks on bigger servers. Read more about this in the pull request.
Improved Performance
Last but not least: the isochrone calculation, routing queries and the import process are now faster.
GraphHopper Maps

Several noteworthy improvements have been made:
- Under ‘Settings’, you will now find the option to avoid motorways for cars, and the ‘ecargobike’ profile when you chose “racing bike”, among many other features. Previously this was already possible with a custom model, but a request with a pre-generated profile is faster. And the new “profile group” feature exposes many pre-generated profiles in a user friendly way.
- The map view will now stick to your current location if you click the “current location” button on the map.
- The hike profile now allows even more dangerous sac_scales but GraphHopper Maps marks them as very dangerous with an orange route hint icon.
- Requests with custom models are now faster as for longer routes a heuristical approximation is enabled.
- Hide the path while pressing ‘h’ to see the underlying network.
- Several bug fixes and improvements.
Happy routing and try GraphHopper Maps now!