For an open source alternative to Google Maps, the strongest matches are googlemaps/google-maps-services-python (This is a client library for calling Google Maps), graphhopper/graphhopper (GraphHopper is a specialized routing engine for calculating directions) and mapbox/mapbox-gl-js (Mapbox GL JS is a high-performance map rendering library). osmandapp/osmand and rastapasta/mapscii round out the shortlist. Each is ranked by relevance to your query, popularity and recent activity.
Self-hosted mapping platforms and navigation services providing privacy-focused alternatives to proprietary global map providers.
This project is a Python client library for interacting with Google Maps web services to retrieve geospatial, routing, and place data. It provides a programmatic interface for developers to access geocoding, elevation, time zone, and point-of-interest services. The library implements automatic exponential backoff and request retries to handle intermittent server errors and rate limit exceedances. It manages communication through credential-based authentication and session-based connection pooling to reduce latency across repeated API calls. The capability surface covers bidirectional geocodi
This is a client library for calling Google Maps web services, not a self-hosted mapping platform — it provides API access to geocoding, routing, and places but does not render maps, run offline, or offer custom styling.
GraphHopper is a Java routing library and OpenStreetMap routing engine used to calculate optimal paths and driving directions. It provides a map matching engine for aligning GPS coordinate traces to road networks, a GTFS transit router for multi-modal travel, and a spatial analysis utility for isochrone generation. The project supports the creation of custom vehicle profiles and weighting logic to influence path calculations. It implements contraction hierarchies to accelerate pathfinding by reducing the search space between coordinates. The engine covers a broad range of geospatial capabili
GraphHopper is a specialized routing engine for calculating directions and isochrones, but it does not provide map rendering, geocoding, or places search, so it is a building block rather than a complete self-hosted mapping platform.
Mapbox GL JS is a WebGL map rendering engine and interactive web map framework used to render vector tiles, raster imagery, and 3D terrain in the browser. It functions as a vector tile map library and geospatial data visualization tool, employing GPU-accelerated shaders to transform geospatial data into interactive maps. The project distinguishes itself through the integration of custom WebGL layers directly into the rendering pipeline and the use of data-driven expressions to map feature properties to visual attributes. It supports specialized data loading via PMTiles and provides offline ma
Mapbox GL JS is a high-performance map rendering library for vector tiles and custom styling, but it does not include the routing engine, geocoding, or places search needed for a full navigation platform—those require separate backend services or APIs.
OsmAnd is a mobile navigation application and vector map viewer that uses OpenStreetMap data to provide offline map access, turn-by-turn routing, and geospatial tools. It functions as a mobile routing engine and a GPX track recorder, allowing users to navigate and record movement without an active internet connection. The project integrates a mobile interface for contributing to the OpenStreetMap project, enabling users to report map errors and add new points of interest directly from their devices. It also includes a system for visualizing satellite imagery and custom tile overlays on top of
OsmAnd is a mobile navigation app for offline OSM maps and routing, not a self-hosted server platform — you cannot host it as a service to replace Google Maps for your users or organization.
Mapscii is a terminal-based geographic interface and vector map renderer. It allows users to view and explore geographic map data and points of interest directly within an xterm-compatible console using ASCII and Braille characters. The project functions as a vector tile map client capable of fetching and styling geographic layers from public or private sources. It also serves as an MBTiles map viewer, enabling the exploration of geographic data stored in local files for offline use. The tool provides keyboard-driven navigation for zooming and panning across coordinates, along with the abili
Mapscii is a terminal-based vector map viewer that renders maps from tiles and supports offline MBTiles, but it lacks a routing engine, geocoding, and places search — it is a lightweight map client, not a full self-hosted mapping platform that can replace Google Maps.
Places is a location search service and set of user interface components designed to translate text queries into geographic coordinates and provide real-time address suggestions. It provides a geocoding search service to convert address queries into structured location data and precise coordinates. The project focuses on optimizing the accuracy of address autocomplete through user intent prediction and conversion-based result ranking. These capabilities analyze search queries and interaction patterns to surface results from the most likely content category and increase the likelihood of desir
Algolia/places is a geocoding and address autocomplete library, not a full self-hosted mapping platform — it offers location search and coordinate conversion but lacks map rendering, routing, POI search, and the ability to run entirely offline or self-hosted without Algolia's backend.
This is a Ruby toolkit for converting addresses to geographic coordinates and performing reverse geocoding via multiple external API providers. It provides a library for integrating location services into Ruby applications, including an IP geolocation tool to translate IP addresses into coordinates, city names, and country data. The project includes a command line interface for bulk geocoding of database records with integrated rate limiting and a geospatial query engine for calculating distances and performing radius or bounding box searches. It also features a mocking framework that provide
Geocoder is a Ruby library and CLI for address-to-coordinate geocoding via external APIs, but it does not include map rendering, routing, or POI search — it is a specialized component rather than the full self-hosted mapping platform you are looking for.
OpenFreeMap is an OpenStreetMap vector tile server and distribution system designed for self-hosted map tile infrastructure. It provides a platform for deploying and managing full-planet map datasets on independent server infrastructure, delivering map data as vector tiles. The system distinguishes itself by distributing pre-processed map data as standard filesystem images, allowing for the mounting of full-planet extracts without the need for a live database. It utilizes a static file serving model and a vector tile distribution system that provides weekly updates in image formats for local
OpenFreeMap is a self-hostable vector tile server that excels at map rendering and tile distribution, but it lacks the routing engine, geocoding, and place search capabilities needed to replace Google Maps as a full navigation platform.
Valhalla is an open-source routing engine that calculates optimal paths and travel times using OpenStreetMap data. It is built around a tiled routing graph framework, allowing map data to be organized into small geographic tiles for efficient regional updates and offline routing capability. The project distinguishes itself through a multimodal routing server that combines automobile, pedestrian, bicycle, and public transit modes into single journeys. It includes a GPS trace matching engine to align noisy coordinates to the most probable road network paths and an isochrone and matrix generator
Valhalla is a self-hostable routing engine focused on multimodal directions using OpenStreetMap data, but it is only one component of a full mapping platform — it lacks map rendering, geocoding, and POI search, so it cannot serve as a standalone Google Maps replacement on its own.
Maplibre GL JS is a WebGL map rendering engine and vector tile map library used to create interactive web maps. It serves as a web-based GIS visualization tool and an interactive map interface framework for rendering geographic data and vector tiles on web pages. The library provides capabilities for 3D terrain rendering and the integration of custom 3D content. It supports complex geospatial data visualization through the use of heatmaps, clusters, and 3D extrusions, while allowing for custom map styling and environmental effect customization. The system covers a broad range of functional a
Maplibre GL JS is a powerful map rendering library for custom-styled interactive web maps, but it is not a full mapping platform—it lacks built-in routing, geocoding, and places search, so it serves as a component rather than a self-hosted Google Maps replacement.
react-native-maps is a cross-platform map component and visualization library for embedding interactive maps within mobile applications on iOS and Android. It provides a declarative interface for managing geospatial user interfaces, allowing for the rendering of geographical data and location-based features. The library enables the visualization of spatial data through the placement of markers, the creation of custom callouts, and the drawing of polylines and polygons as map overlays. It supports interactive map navigation, including the ability to animate map regions and customize the visual
This is a cross-platform map component for embedding interactive maps in React Native mobile apps, not a self-hostable mapping platform with routing, geocoding, or POI search—it is a UI building block, not the standalone platform you need.
Leaflet is a lightweight JavaScript mapping library used to build mobile-friendly interactive maps on web pages. It functions as an open-source geospatial toolkit and web map renderer, providing the necessary tools to display geographical tiles and vector data. The framework is designed as a mobile-first map interface, ensuring that mapping experiences remain responsive and efficient across both desktop browsers and mobile devices. It enables the creation of custom map implementations and the visualization of geospatial data through the addition of markers, popups, and layers. The library co
Leaflet is a lightweight JavaScript library for rendering interactive maps, which covers map display and custom styling, but it does not include a built-in routing engine, geocoding, or place search—so it is a component you would combine with other services rather than a complete self-hosted Google Maps replacement.
react-native-maps is a cross-platform mobile map component for iOS and Android that renders interactive geographic data and markers. It provides a native map view and viewport controller to manage camera movement, zoom levels, and coordinate-based animations on mobile devices. The project includes a GeoJSON map renderer for visualizing complex geographic features and an interactive map overlay library for drawing polylines, polygons, and heatmaps. It supports integration with both Google Maps and Apple Maps, allowing developers to switch between providers or apply cloud-based styling and cust
react-native-maps is a mobile map component library that integrates with Google or Apple Maps, not a self-hosted mapping platform with its own routing, geocoding, or POI search—so it is a building block rather than the full replacement you are looking for.
Kepler.gl is a web-based geospatial visualization framework designed for rendering large-scale location datasets. It functions as a modular React mapping component that enables developers to embed interactive, high-performance geographic visualizations into web applications, serving as a comprehensive engine for building browser-based GIS dashboards. The library distinguishes itself through a highly extensible architecture that centers on centralized state management. By utilizing a predictable state-driven model, it allows for the programmatic control of map layers, filters, and viewport set
Kepler.gl is a geospatial visualization framework for rendering large-scale location datasets, not a self-hosted mapping platform with routing, geocoding, and POI search—so it cannot replace Google Maps on its own.
| Repository | Stars | Language | License | Last push |
|---|---|---|---|---|
| googlemaps/google-maps-services-python | 5K | Python | Apache-2.0 | |
| graphhopper/graphhopper | 6.5K | Java | Apache-2.0 | |
| mapbox/mapbox-gl-js | 12.3K | TypeScript | NOASSERTION | |
| osmandapp/osmand | 5.8K | Java | NOASSERTION | |
| rastapasta/mapscii | 9K | JavaScript | mit | |
| algolia/places | 5.3K | JavaScript | MIT | |
| alexreisner/geocoder | 6.4K | Ruby | MIT | |
| hyperknot/openfreemap | 4.7K | Python | other | |
| valhalla/valhalla | 5.4K | C++ | other | |
| maplibre/maplibre-gl-js | 9.9K | TypeScript | other |