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

Route Map after a live trace from Manila to heise.de: the route through Hong Kong, Singapore and Marseille to Frankfurt on a world map, and the hop table with location, source, hostname, address and round-trip time

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.

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.

The hop table's Location and Source columns: hops 7 to 11 placed by carrier site code in Singapore and Frankfurt, hops 4, 5 and 12 to 14 by the IP database, hops 1 to 3 local

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 Unplaced panel listing hops 4, 5 and 7 as location impossible for RTT, for example 10,266 km away when the round trip allows at most 6,133 km

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.

The Unplaced panel: hops 1 to 3 private or carrier NAT addresses, never looked up, and hops 6 and 15 to 19 that did not answer

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 status bar: origin Manila from the public IP, the command traceroute -m 30 -q 3 -w 1, and checks for the trace, PTR, Hoiho and the IP database

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

WhatToWhen
Public router hostnamesCAIDA Hoihoeach trace, unless switched off; cached 30 days
Public hop addressesRIPEstateach trace, unless switched off; cached 30 days
Reverse DNS queriesyour own resolverfor public hops without a name
Your public IPRIPEstatonly while no origin is set in Settings
Target, key, your network's ASRIPE Atlasonly 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.

Ko-fi PayPal Bitcoin and Monero