Highway hierarchies exploit hierarchical properties inherent in real-world road networks to allow fast and exact point-to-point shortest-path queries. A fast preprocessing routine iteratively performs two steps: first, it removes edges that only appear on shortest paths close to source or target; second, it identifies low-degree nodes and bypasses them by introducing shortcut edges. The resulting hierarchy of highway networks is then used in a Dijkstra-like bidirectional query algorithm to considerably reduce the search space size without losing exactness. The crucial fact is that 'far away' from source and target it is sufficient to consider only high-level edges. Various experiments with real-world road networks confirm the performance of our approach. On a 2.0 GHz machine, preprocessing the network of Western Europe, which consists of about 18 million nodes, takes 13 minutes and yields 48 bytes of additional data per node. Then, random queries take 0.61 ms on average. If we are willing to accept slower query times (1.10 ms), the memory usage can be decreased to 17 bytes per node. We can guarantee that at most 0.014% of all nodes are visited during any query. Results for US road networks are similar. Highway hierarchies can be combined with goal-directed search, they can be extended to answer manyto-many queries, and they are a crucial ingredient for other speedup techniques, namely for transit-node routing and highway-node routing.