Whiteboard ScaleGoogle MapsDesign Walkthrough

Google Maps System Design Walkthrough

Complete design walkthrough with animated diagrams, capacity math, API design, schema, and failure modes.

Solution PathTarget: 30 min
We designed a navigation platform for 300M DAU serving 521K tile requests per second from 500 TB of pre-rendered vector tiles. CDN absorbs 98% of tile traffic. Contraction Hierarchies on a 500M-node road graph compute shortest paths in under 10ms, a 100x speedup over Dijkstra. Live traffic from 4M GPS probes per second updates 50M road segment speeds every 60 seconds in Redis. ETA prediction achieves 97%+ accuracy via CH routing plus ML correction.
1/10
1.

What is Google Maps?

The system sounds simple: show a map, find a route. Google Maps serves 300 million daily active users across 200+ countries with real-time navigation, traffic, and place search. But the real challenge has three dimensions.
First, tile serving at planetary scale: the map is a pyramid of pre-rendered vector tiles across 22 zoom levels. At zoom 18 there are 69 billion tiles.
The system serves 521K tile requests per second, with CDN absorbing 98% of that load. The full tile catalog spans approximately 500 TB.
Second, shortest-path routing on a massive graph: the global road network has 500 million nodes. Dijkstra would take 500ms to 2 seconds per query.
Contraction Hierarchies preprocess the graph to enable sub-10ms queries, a 100x speedup, critical for serving 11,600 direction requests per second. Third, real-time traffic estimation: 4 million GPS probes per second from navigating users are map-matched to road segments, aggregated into speeds, and fed back into routing edge weights every 60 seconds.
This data powers an ETA prediction model that achieves 97%+ accuracy. The design differentiates from Uber (topic 7) in a fundamental way: Uber uses H3 hexagonal grids for spatial dispatch (matching riders to nearby drivers).
Google Maps uses quadtree tile addressing for rendering and Contraction Hierarchies for graph routing. Different problems, different data structures.
Google Maps: 300M DAU, 200+ countries. Three challenges: tile serving at 521K tiles/sec across 500 TB, graph routing on 500M nodes in <10ms via CH, traffic estimation from 4M GPS probes/sec with 97%+ ETA accuracy. Key differentiator from Uber: quadtree tiles + CH routing, not H3 hexagonal dispatch.
Google Maps is a navigation platform serving 300 million daily active users with real-time directions, traffic visualization, and place search across 200+ countries. The system sounds simple: show a map, find a route. But the real challenge is serving map tiles across 22 zoom levels from a catalog of 500 TB of pre-rendered vector tiles at 521K requests per second, computing shortest paths on a road graph with 500 million nodes in under 500ms, and estimating arrival times from 4 million real-time GPS probes per second with 97% accuracy.
  • Quadtree tile pyramid with 22 zoom levels: 4z4^z tiles per level, 69 billion tiles at zoom 18, served as vector tiles (Protocol Buffer) via CDN at 98% cache hit ratio
  • Contraction Hierarchies on a 500M-node road graph: bidirectional upward search explores ~1,000 nodes in under 10ms, a 100x speedup over Dijkstra
  • 4M GPS probes/sec ingested through Kafka, HMM map-matched to road segments, aggregated into speeds every 60 seconds across 50M segments stored in 900 MB of Redis
  • Two-stage ETA prediction: CH-based graph routing plus GBDT ML correction with 15 features achieves 97%+ accuracy, re-estimated every 30 seconds during navigation