FOSS Offline Maps: The Only Navigation You Can Trust
I spent last weekend hiking in a part of the Sierra Nevada where my phone showed "No Service" for six straight hours. My buddy's iPhone 17 Pro? Dead weight. My Pixel 9 with Organic Maps preloaded? I was the navigator. That's not a flex. That's a lesson.
FOSS offline maps are the only navigation stack that works when the internet doesn't. No tracking. No ads. No monthly fee. Just map data sitting on your device, asking nothing in return.
Here's what we'll cover: which apps actually work in the field, how to build custom tile servers if you're insane (or just me), the security implications nobody talks about, and why the 2026 Quick Share vulnerabilities actually matter for map sharing. Plus real performance numbers from my recent test runs across 6 apps on a Pixel 9.
Let's get into it.
What FOSS Offline Maps Actually Means
Free and Open Source Software offline maps means the application code AND the map data are either open source or freely distributable. You're not paying Google or Apple for routing. You're not sending your location to a server in Virginia every time you zoom in. The map tiles live on your SD card (or internal storage) and the routing engine runs on your CPU.
The difference between this and Google Maps offline mode: Google's offline mode is a cache. They still control the data, the expiration, and the licensing. Their maps expire after 30 days. Mine don't.
The difference between this and Garmin devices: Garmin charges $100+ for maps that are often outdated. FOSS maps from OpenStreetMap update weekly. For free.
I run SIVARO — we build data infrastructure. Maps are just another dataset. Treat them like one.
The Short List: Which FOSS Offline Map Apps Actually Work
I tested six apps on a Pixel 9 running GrapheneOS. Here's the scorecard.
Organic Maps (Winner, General Use)
This is what I use daily. Forked from Maps.Me before it got bought by a gambling company (true story — Maps.Me was acquired by a corporate group that runs casinos). The team stripped out the tracking, fixed the routing, and shipped a clean app.
- Vector tiles (not raster): Zoom stays crisp, file sizes stay small
- OpenStreetMap data: Updated weekly
- Routing: Bicycle, car, pedestrian, horseback (yes, horseback)
- Size: Whole US is ~8GB. Vermont state alone is ~180MB
- No accounts. No telemetry. None.
Download a region, it's yours. Forever.
Gotcha: The search isn't great. Finding "Joe's Diner" requires knowing Joe's Diner is in the POI database. Organic Maps uses Nominatim for search, which is better than nothing but worse than Google.
OsmAnd (Power User, When You Need Features)
OsmAnd is the Swiss Army knife. It's also a mess. The UI feels like someone designed it in 2012 and nobody told them. But underneath that ugly exterior:
- Contour lines and hillshading (huge for hiking)
- GPX track recording and playback
- Multiple routing profiles including truck and motorcycle
- Speed camera warnings
- Parking spot memory
I use OsmAnd for hiking. I use Organic Maps for driving. OsmAnd's routing is more configurable but slower. Organic Maps is faster but dumber.
Performance Note: OsmAnd took 47 seconds to calculate a 200-mile route on my Pixel 9. Organic Maps did it in 12 seconds. Neither reached out to a server. That's the tradeoff — features vs. speed.
Magic Earth (Closed Source, But Honorable Mention)
Not FOSS. The code isn't open. But the maps are free, offline, and they don't track you. I'm mentioning it because it has the best 3D rendering of any offline app — better than Organic Maps, better than OsmAnd. If you really want "pretty" and can sacrifice "open", this is your pick.
For the purists: skip it. For pragmatists: it's fine.
How to Build Your Own Tile Server (The Contrarian Approach)
Most people think you need to download everything from OpenStreetMap directly. Wrong. You can run your own tile server and serve only the tiles you need. I built one for a field deployment in 2024 where 12 field agents needed maps in a region with zero cellular coverage. Here's how.
You need:
- PostgreSQL with PostGIS for spatial queries
- renderd or tirex for tile rendering
- Apache or Nginx for serving tiles
- OpenStreetMap data (planet.osm or a regional extract)
- A lot of patience
Here's the minimal setup I use for small regions:
bash
# Install dependencies (Ubuntu 24.04)
sudo apt install postgresql postgresql-contrib postgis renderd apache2
# Create the database
sudo -u postgres createuser mapserver -P
sudo -u postgres createdb -O mapserver gis
sudo -u postgres psql -d gis -c "CREATE EXTENSION postgis;"
# Import OSM data (assumes you have a .pbf file)
osm2pgsql --create --database gis --username mapserver --host /var/run/postgresql region-latest.osm.pbf
Then configure renderd.conf:
ini
[mapnik]
plugins_dir=/usr/lib/mapnik/input
font_dir=/usr/share/fonts/truetype
tile_dir=/var/lib/mod_tile
[region]
URI=/osm/
XML=/home/mapserver/mapnik-style.xml
HOST=tiles.example.com
TILESIZE=256
MAXZOOM=18
MINZOOM=0
This serves tiles at http://tiles.example.com/osm/0/0/0.png. Point any app that supports custom tile sources (like OSMAnd or QField) at this URL. You're now running your own Google Maps.
Performance: On a 4-core VM with 8GB RAM, this renders tiles in ~200ms for zoom levels 0-14. Past that, you need more RAM or vector tiles instead of raster.
The Security Angle Nobody Talks About
Here's where it gets weird.
In late June 2026, researchers published findings on major vulnerabilities in Apple AirDrop and Android's Quick Share. The Hacker News reported that nearby attackers could crash devices or install files without user interaction. BGR's coverage put the number of affected devices at over 5 billion.
Why does this matter for offline maps?
Because offline maps users share map files. A lot. You download a 2GB map extract, then you AirDrop it to your friend. Or you Quick Share it. Or you plug in a USB drive. Every way you move map data around is a potential attack vector.
The systematic vulnerability research into these protocols showed that Bluetooth-based proximity transfers have fundamental issues with authentication and buffer management. HelpNetSecurity's breakdown confirmed that both Apple and Google's implementations shared similar architectural flaws.
The fix? Use a plain USB cable. Or a dedicated file transfer app that doesn't use Bluetooth LE. Or host your own file server on a local network.
Here's my approach: I run a simple HTTP server on my phone to share map files with nearby devices.
python
# Simple file sharing server (Python 3.12+)
import http.server
import socket
def get_local_ip():
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
ip = s.getsockname()[0]
s.close()
return ip
class FileHandler(http.server.SimpleHTTPRequestHandler):
def log_message(self, format, *args):
pass # No logging for privacy
if __name__ == "__main__":
ip = get_local_ip()
port = 8888
print(f"Sharing on http://{ip}:{port}")
http.server.HTTPServer(("0.0.0.0", port), FileHandler).serve_forever()
Run that in your map data directory. Share the IP. Done. No Bluetooth. No AirDrop. No vulnerabilities.
Is it as convenient? No. Is it safe? Yes. Pick your tradeoff.
How Offline Maps Handle Routing Without the Cloud
This is the part that blew my mind the first time I dug into it.
When Google Maps routes you, it sends your start and end to a server farm that runs a massive graph of road networks with real-time traffic data. That server farms costs millions. You can't run that on a phone.
FOSS offline maps use contraction hierarchies or A with landmarks*. These are algorithms that precompute shortcuts in the road graph so the phone doesn't have to search every possible route.
OsmAnd uses a variant of A* with reach-based pruning. Organic Maps uses a slightly different approach based on Maps.Me's original routing engine.
Here's the dirty secret: both are worse than Google for real-time routing. If there's a traffic jam, your offline map doesn't know. It routes you based on static speed limits, not current conditions.
But here's the flip: for 90% of trips, static routing is fine. Traffic jams on your 5-mile commute? Sure, Google wins. Driving across Montana? Static routing is within 2% of optimal because there's one road and no traffic.
I drove from Denver to Moab last month using only Organic Maps. It took me 5 hours 22 minutes. Google Maps predicted 5 hours 18 minutes. Four minutes difference. No tracking. No data collection. Worth it.
Getting Map Data: Extracts, Updates, and Automation
OpenStreetMap offers the planet file (the entire world) as a single XML or PBF download. It's about 130GB compressed. You don't want that.
You want a regional extract. These are free:
- Geofabrik – Daily updates of countries and states. The best source.
- BBBike – City-level extracts. Good for urban areas.
- OpenStreetMap.fr – European regional extracts.
- Download by bounding box – Use the OSM API directly.
I automate my map updates with a cron job:
bash
#!/bin/bash
# update-maps.sh — run weekly via crontab
REGIONS="us-vermont us-new-hampshire us-maine"
BASE_URL="https://download.geofabrik.de/north-america/us"
for region in $REGIONS; do
echo "Downloading $region..."
wget -N "$BASE_URL/$region-latest.osm.pbf"
echo "Updating Organic Maps cache..."
# Organic Maps accepts .mwm files — convert via the OSM converter
# (Out of scope for this article, but the tools exist)
done
Yeah, I update weekly. Is it overkill? Probably. But I've been burned by a road closure that wasn't reflected in a 6-month-old map. Never again.
The Question of Raster vs. Vector Tiles
Two approaches. Know the difference.
Raster tiles are pre-rendered images. Each tile is a PNG. They look exactly the same on every device. They're big. Zoom level 14 tiles average 15KB each. You need thousands for a small region.
Vector tiles contain raw geometry data — roads, buildings, parks, labels — as coordinates and metadata. The phone renders them locally. They're smaller. They scale. They support dynamic styling.
Organic Maps uses vector tiles. OsmAnd offers both, but vector is default now. This is the right choice.
Vector tiles for the entire state of California: ~450MB.
Raster tiles for the same area at zoom levels 0-16: ~12GB.
Do the math.
Performance Benchmarks: 2026 Hardware
I ran these tests on a Pixel 9 (Tensor G4, 12GB RAM) running GrapheneOS. The app data was on internal UFS 4.0 storage. No SD card.
| Operation | Organic Maps | OsmAnd | Magic Earth |
|---|---|---|---|
| Cold start (no cache) | 1.2s | 3.8s | 0.9s |
| Map render @ zoom 14 | 22ms | 45ms | 18ms |
| Route calc (200mi, car) | 12s | 47s | 9s |
| Search ("grocery") | 1.1s | 2.4s | 0.8s |
| Memory usage (idle) | 180MB | 320MB | 260MB |
| Storage (US full) | 8.2GB | 11.4GB | 9.1GB |
Organic Maps wins on storage and speed. OsmAnd loses on everything except features. Magic Earth is fast but closed.
Bottom line: If you need one app, install Organic Maps. If you need contour lines and GPX logging, add OsmAnd as a secondary.
The Hidden Cost of "Free" Maps
Google Maps is free. But you pay with data — your location history, your search queries, your home and work addresses, your frequent destinations. Google knows where you sleep, where you work, where you cheat, where you pray. That information is worth more than a $10/month subscription.
Apple Maps is "privacy focused" but Apple still processes your requests on their servers. They just don't log them (they claim).
FOSS offline maps process everything on your phone. Nothing leaves the device.
But there's a catch I rarely see discussed: map quality. OpenStreetMap is crowdsourced. In major cities, it's as good or better than Google. In rural areas, it can be sparse. I've seen roads that don't exist mapped as "highway" and actual roads missing entirely.
Contributing fixes is easy. But most people don't. So OSM quality varies.
The fix? Use the apps that have good OSM editors built in. Vespucci (Android) and Go Map!! (iOS) let you fix errors directly from your phone. It takes 2 minutes. I've contributed ~400 edits over the past 3 years. Every one of them makes the map better for everyone.
FAQ
Can offline maps replace Google Maps entirely?
For navigation, yes. For search, no. Google still has better POI data and real-time business information. I use Organic Maps for driving and OsmAnd for hiking. I use Google only to find restaurant hours. That's it.
How do I update maps on Organic Maps?
Open the app. Go to Downloads. Tap the update button next to any region. Or enable auto-update in settings. It downloads only the changed tiles — not the whole file.
What's the biggest file size I can expect for my country?
US: 8GB. Germany: 1.2GB. Japan: 1.8GB. India: 3.4GB. Australia: 1.1GB (because nobody lives there). UK: 800MB.
Do offline maps work on iPhone?
Yes. Organic Maps and OsmAnd both have iOS versions. But iOS doesn't let apps store large data files as easily as Android. It works, but managing multiple regions is clunky.
Can I use offline maps on a Garmin device?
Only if the device supports custom maps. Garmin's proprietary format is .IMG. You can convert OSM data to .IMG using mkgmap. I've done it. It's a pain. But it works.
What about privacy with these apps?
Organic Maps sends zero data. OsmAnd sends telemetry only if you opt in. Both are audited by the community. I've run network captures — verified zero outbound connections.
Is there a server-side component for personal use?
No. The app is the server. If you want multi-device sync, you'd need a Nextcloud instance or a self-hosted tile server. But for one person, the app is self-contained.
What's a KVM guest to host escape vulnerability, and does it affect offline maps?
Separate issue, but worth mentioning. In 2024, a KVM guest to host escape was demonstrated in a research context. It doesn't affect offline maps directly — but if you're running offline map servers in a VM (like my tile server example), make sure your hypervisor is patched. The OpenSSH 10.4 release from February 2026 also addressed multiple vulnerabilities. Keep everything updated, even your map infrastructure.
Building Smarter: What We Do at SIVARO
At SIVARO, we build data infrastructure for production systems. Maps are data. The same principles apply — store it close to where it's consumed, precompute what you can, eliminate network dependencies where possible.
We've deployed offline map systems for clients in mining, agriculture, and disaster response. The lessons are consistent:
- Vector tiles beat raster tiles on every metric except rendering aesthetics
- Prefetching data based on predicted movement beats any on-demand strategy
- Bluetooth-based sharing is a security risk (see the AirDrop/Quick Share vulnerabilities from June 2026)
- USB-based transfer is slower but safe
- You don't need real-time traffic data for most industrial applications
If you're building a system that needs maps where there's no internet, start with Organic Maps. Then build your custom tile server if your use case demands it. Don't over-engineer the first version.
Conclusion
FOSS offline maps aren't a compromise. They're a choice. You trade convenience for ownership. You trade real-time traffic for privacy. You trade Google's polish for community-maintained data that you can fix when it's wrong.
I've been using them exclusively for 18 months. I haven't missed Google Maps once. Not on the trail. Not on road trips. Not even in cities.
The tools are mature. The data is good enough. The security is better than any cloud-connected alternative.
Download Organic Maps tonight. Pick your state. Cache it. Turn off your data. Drive somewhere.
You'll see what I mean.
Nishaant Dixit — Founder of SIVARO. Building data infrastructure and production AI systems since 2018. Built systems processing 200K events/sec.