On a trace from Manila, an IP geolocation database put a Tata Communications backbone router
in Harare, though it answered at the same round-trip time as its neighbours in San Jose. On a
trace to heise.de, the same database had no city for any of Arelion's backbone routers between
Hong Kong and Frankfurt: no answer at all for some, just "France" for the rest. A map built on
that shows Asia, a blank, then Germany. Yet every one of those routers names its site in its
hostname: hnk, sng, mei, ffm. Route Map reads
those names first.
Desktop traceroute map · Windows, macOS, Linux · v0.1.0-beta.4
See where your packets actually went.
Route Map places each router by its operator's own hostname before it asks any IP database, rejects every placement the round-trip time makes impossible, and labels each hop with where its location came from.
Also: Windows 10/11 macOS, Apple silicon macOS, Intel Linux AppImage Linux tar.gz. v0.1.0-beta.4, checksums and install steps.
Free and open source, AGPL-3.0 github.com/osintph/routemap

How it places a hop
Hostname first
Operators name routers after their sites: ffm-b16-link.ip.twelve99.net is
Arelion in Frankfurt. Route Map reads names with CAIDA's Hoiho rules and a table of carrier
site codes, and falls back to an IP database only when the name says nothing.

Checked against physics
Light in fibre covers about 200 km per millisecond, so each millisecond of round trip allows about 100 km: a hop that answers in 5 ms is within about 500 km, plus 300 km of slack for an approximate origin. Any placement farther than that is rejected, whatever its source, and the reason is shown.

The recorded heise.de trace with the origin deliberately set to Frankfurt: the Manila hops and even Arelion's Singapore router are rejected, because their round trips cannot reach that far.
Nothing guessed, nothing dropped
Every hop carries its source, and a hop the database knows only to a country is drawn hollow. A hop that cannot be placed stays in the table and in the Unplaced panel, with the reason it is not on the map.

On your machine, with your tools
The trace runs on your computer with its own tracert, traceroute or
mtr, and the status bar says which, with which flags, and which lookups answered.
Hops appear on the map and in the table as the trace runs; click a marker to find its rows, or
a row to find its marker. Paste a trace someone else ran, say where it came from, and it is
mapped the same way. Export a PNG map, the full trace as JSON, or a PDF report with every hop,
its source and the raw tool output, from the window or the command line.
The same engine powers the Route Map tab in OSINTPH's FalconEye.

The source labels
hoiho- A CAIDA Hoiho rule for that operator matched the hostname and names the city.
site-code- The hostname carries a carrier's own site code, from the bundled table.
ip-db- RIPEstat's IP geolocation placed it: a hint, since backbone addresses often sit where the prefix was registered.
ip-db, country only- Only the country is known; hollow marker, kept out of the map's fit.
local- Your network or your ISP's carrier NAT; never looked up anywhere.
What leaves your machine
| What | To | When |
|---|---|---|
| Public router hostnames | CAIDA Hoiho | each trace, unless switched off; cached 30 days |
| Public hop addresses | RIPEstat | each trace, unless switched off; cached 30 days |
| Reverse DNS queries | your own resolver | for public hops without a name |
| Your public IP | RIPEstat | only while no origin is set in Settings |
| Target, key, your network's AS | RIPE Atlas | only for an Atlas trace, with your own key; public |
No account, no telemetry, no automatic update check. Private, CGNAT and reserved addresses are never looked up. The full list: privacy.
Support the project
Route Map is free. Donations pay for code signing, hosting, the RIPE Atlas probe, and maintenance time.