A fast, open-source routing engine for OpenStreetMap, usable as a Java library or standalone web server.
GraphHopper is an open-source routing engine that calculates optimal routes, distances, travel times, and turn-by-turn instructions using OpenStreetMap data. It solves the problem of providing fast, customizable, and feature-rich routing for applications ranging from web services to mobile navigation, supporting advanced features like map matching and isochrone analysis.
Developers and organizations building location-based applications, navigation systems, logistics software, or geospatial analysis tools that require efficient, customizable routing capabilities.
Developers choose GraphHopper for its exceptional speed and memory efficiency, extensive feature set beyond basic routing, strong OpenStreetMap integration, and flexibility to be used as an embedded Java library or a self-hosted web service.
Open source routing engine for OpenStreetMap. Use it as Java library or standalone web server.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Leverages Contraction Hierarchies and hybrid modes for fast query times and low memory usage, as detailed in the technical overview, making it suitable for large-scale applications.
Supports advanced capabilities like map matching, isochrone calculation, public transit routing with GTFS, and turn instructions in over 45 languages, going beyond basic point-to-point navigation.
Can be embedded as a Java library via Maven or run as a standalone web service, with both high-level and low-level APIs for diverse use cases, as shown in the installation and Maven examples.
Works out-of-the-box with OpenStreetMap data, including road attributes, speed limits, and access restrictions, and supports custom data imports for versatile routing scenarios.
Official support for offline routing on Android and iOS has been discontinued, as noted in the README, making it less viable for new mobile apps requiring robust offline navigation.
Requires Java installation, downloading large OSM files, and server configuration, which is more involved than using cloud-based APIs and can be time-consuming for quick deployments.
Real-time traffic or dynamic routing features are not built-in; they require custom development using custom models or additional integrations, as implied by the customization focus.
The README lists separate documentation links for multiple versions (e.g., 11.x, 10.x), which can lead to confusion and versioning issues for new users trying to get started.