MTR: ping and traceroute together
MTR sends several packets to every router on the path, so you can see where loss and delay really start and send the evidence to whoever runs that network.
Results for github.com
Reached, no real loss
No real loss on the way to github.com
HostPapa, then Arelion Sweden, then GitHub.
AS36352 HostPapa, then AS1299 Arelion Sweden, then AS36459 GitHub
Delay does not always rise along the path: routers answer traceroute slowly while forwarding fast.
- This ran from one place. Choose "From other places" to trace from up to five.
Hops16
HostPapa: hop 1. Arelion Sweden: hops 5 to 12. GitHub: hop 16.
- 1_gateway1.2 ms
- 210.
9. 8. 2010.9 ms - 310.
9. 1. 20911.8 ms - 410.
9. 1. 571.3 ms - 5lax-b6-link.
ip. twelve99. net0.6 ms - 6lax-bb2-link.
ip. twelve99. net0.9 ms - 7dls-bb4-link.
ip. twelve99. net62.7 ms - 8atl-b24-link.
ip. twelve99. net70.5 ms - 9atl-bb2-link.
ip. twelve99. net58.2 ms - 10ash-bb2-link.
ip. twelve99. net57.9 ms - 11rest-b2-link.
ip. twelve99. net58.1 ms - 12github-ic-368832.
ip. twelve99-cust. net62.5 ms - 13 to 153 routers didn't answer * * *
- 16github.
com58.4 ms
Network and country per hop are our best match to published routing and registry data, and can be wrong. A hop with no network shown had no match.
Statistics
| Hop | Host | Loss | Sent | Last | Avg | Best | Worst | Stdev |
|---|---|---|---|---|---|---|---|---|
| 1 | _gateway | 0% | 5 | 1.24 | 1.2 | 1.11 | 1.26 | 0.1 |
| 2 | 10.9.8.201 | 0% | 5 | 0.85 | 0.9 | 0.84 | 0.9 | 0 |
| 3 | 10.9.1.209 | 0% | 5 | 8.99 | 11.8 | 8.58 | 15.34 | 2.9 |
| 4 | 10.9.1.57 | 0% | 5 | 0.74 | 1.3 | 0.63 | 2.76 | 0.8 |
| 5 | lax-b6-link.ip.twelve99.net | 0% | 5 | 0.53 | 0.6 | 0.49 | 0.6 | 0.1 |
| 6 | lax-bb2-link.ip.twelve99.net | 0% | 5 | 0.94 | 0.9 | 0.88 | 0.94 | 0 |
| 7 | dls-bb4-link.ip.twelve99.net | 0% | 5 | 62.78 | 62.7 | 62.63 | 62.91 | 0.1 |
| 8 | atl-b24-link.ip.twelve99.net | 0% | 5 | 70.49 | 70.5 | 70.4 | 70.77 | 0.1 |
| 9 | atl-bb2-link.ip.twelve99.net | 0% | 5 | 58 | 58.2 | 58 | 58.4 | 0.2 |
| 10 | ash-bb2-link.ip.twelve99.net | 0% | 5 | 57.9 | 57.9 | 57.86 | 58.01 | 0.1 |
| 11 | rest-b2-link.ip.twelve99.net | 0% | 5 | 58.11 | 58.1 | 58.02 | 58.14 | 0 |
| 12 | github-ic-368832.ip.twelve99-cust.net | 0% | 5 | 62.47 | 62.5 | 62.33 | 62.53 | 0.1 |
| 16 | github.com | 0% | 5 | 58.34 | 58.4 | 58.29 | 58.42 | 0.1 |
Send this to your ISP
Plain text in the usual mtr --report layout. The first line says when and from where the test ran.
Start: 2026-11-15T18:48:23.576Z From: Los Angeles, US (HostPapa) To: github.com
HOST: probe Loss% Snt Last Avg Best Wrst StDev
1.|-- _gateway 0.0% 5 1.2 1.2 1.1 1.3 0.1
2.|-- 10.9.8.201 0.0% 5 0.8 0.9 0.8 0.9 0.0
3.|-- 10.9.1.209 0.0% 5 9.0 11.8 8.6 15.3 2.9
4.|-- 10.9.1.57 0.0% 5 0.7 1.3 0.6 2.8 0.8
5.|-- lax-b6-link.ip.twelve99.net 0.0% 5 0.5 0.6 0.5 0.6 0.1
6.|-- lax-bb2-link.ip.twelve99.net 0.0% 5 0.9 0.9 0.9 0.9 0.0
7.|-- dls-bb4-link.ip.twelve99.net 0.0% 5 62.8 62.7 62.6 62.9 0.1
8.|-- atl-b24-link.ip.twelve99.net 0.0% 5 70.5 70.5 70.4 70.8 0.1
9.|-- atl-bb2-link.ip.twelve99.net 0.0% 5 58.0 58.2 58.0 58.4 0.2
10.|-- ash-bb2-link.ip.twelve99.net 0.0% 5 57.9 57.9 57.9 58.0 0.1
11.|-- rest-b2-link.ip.twelve99.net 0.0% 5 58.1 58.1 58.0 58.1 0.0
12.|-- github-ic-368832.ip.twelve99-cust.net 0.0% 5 62.5 62.5 62.3 62.5 0.1
13.|-- ??? 100.0% 5 0.0 0.0 0.0 0.0 0.0
14.|-- ??? 100.0% 5 0.0 0.0 0.0 0.0 0.0
15.|-- ??? 100.0% 5 0.0 0.0 0.0 0.0 0.0
16.|-- github.com 0.0% 5 58.3 58.4 58.3 58.4 0.1What we found3
GoodThe trace reached github.com in 16 hops and 58 ms, with no packets lost at the destination
Note3 routers did not answer
That is normal: many routers ignore traceroute on purpose. Hops 13, 14 and 15.
NoteThis jump crosses the Atlantic
That is expected: about 62 ms. Hop 7.
How to read this
Each hop is a router that passed your test packets on. Routers answer traceroute themselves, slowly and sometimes not at all, while still forwarding real traffic quickly.
So a silent hop is normal. Loss at one hop that does not continue to the end is a router limiting its own replies. Only loss that starts at a hop and carries on to the target is real.
Hops with a private address belong to the network the test started from. An address in the shared range means your provider puts many customers behind one public address.
From Los Angeles, US (HostPapa, AS36352 · data centre). Probes by Globalping.
Structured result (JSON) · 11 KB
{
"target": "github.com",
"type": "mtr",
"protocol": "icmp",
"family": "auto",
"mode": "server",
"paths": [
{
"status": "finished",
"probe": {
"country": "US",
"city": "Los Angeles",
"asn": 36352,
"network": "HostPapa",
"latitude": 34.05,
"longitude": -118.24,
"kind": "datacenter"
},
"reached": true,
"resolvedAddress": "140.82.114.3",
"hopCount": 16,
"answered": 13,
"finalMs": 58.4,
"asPath": [
{
"asn": 36352,
"name": "HostPapa"
},
{
"asn": 1299,
"name": "Arelion Sweden AB"
},
{
"asn": 36459,
"name": "GitHub, Inc."
}
],
"hops": [
{
"ttl": 1,
"kind": "public",
"ip": "23.95.36.21",
"hostname": "_gateway",
"asn": 36352,
"rtt": {
"min": 1.11,
"avg": 1.2,
"max": 1.26
},
"loss": 0,
"stats": {
"sent": 5,
"received": 5,
"last": 1.24,
"best": 1.11,
"avg": 1.2,
"worst": 1.26,
"stdev": 0.1
},
"asName": "HostPapa",
"prefix": "23.95.32.0/21",
"country": "US"
},
{
"ttl": 2,
"kind": "private",
"ip": "10.9.8.201",
"rtt": {
"min": 0.84,
"avg": 0.9,
"max": 0.9
},
"loss": 0,
"stats": {
"sent": 5,
"received": 5,
"last": 0.85,
"best": 0.84,
"avg": 0.9,
"worst": 0.9,
"stdev": 0
}
},
{
"ttl": 3,
"kind": "private",
"ip": "10.9.1.209",
"rtt": {
"min": 8.58,
"avg": 11.8,
"max": 15.34
},
"loss": 0,
"stats": {
"sent": 5,
"received": 5,
"last": 8.99,
"best": 8.58,
"avg": 11.8,
"worst": 15.34,
"stdev": 2.9
}
},
{
"ttl": 4,
"kind": "private",
"ip": "10.9.1.57",
"rtt": {
"min": 0.63,
"avg": 1.3,
"max": 2.76
},
"loss": 0,
"stats": {
"sent": 5,
"received": 5,
"last": 0.74,
"best": 0.63,
"avg": 1.3,
"worst": 2.76,
"stdev": 0.8
}
},
{
"ttl": 5,
"kind": "public",
"ip": "62.115.162.226",
"hostname": "lax-b6-link.ip.twelve99.net",
"asn": 1299,
"rtt": {
"min": 0.49,
"avg": 0.6,
"max": 0.6
},
"loss": 0,
"stats": {
"sent": 5,
"received": 5,
"last": 0.53,
"best": 0.49,
"avg": 0.6,
"worst": 0.6,
"stdev": 0.1
},
"asName": "Arelion Sweden AB",
"prefix": "62.115.128.0/18",
"country": "US"
},
{
"ttl": 6,
"kind": "public",
"ip": "62.115.112.246",
"hostname": "lax-bb2-link.ip.twelve99.net",
"asn": 1299,
"rtt": {
"min": 0.88,
"avg": 0.9,
"max": 0.94
},
"loss": 0,
"stats": {
"sent": 5,
"received": 5,
"last": 0.94,
"best": 0.88,
"avg": 0.9,
"worst": 0.94,
"stdev": 0
},
"asName": "Arelion Sweden AB",
"prefix": "62.115.0.0/17",
"country": "US"
},
{
"ttl": 7,
"kind": "public",
"ip": "62.115.140.247",
"hostname": "dls-bb4-link.ip.twelve99.net",
"asn": 1299,
"rtt": {
"min": 62.63,
"avg": 62.7,
"max": 62.91
},
"loss": 0,
"stats": {
"sent": 5,
"received": 5,
"last": 62.78,
"best": 62.63,
"avg": 62.7,
"worst": 62.91,
"stdev": 0.1
},
"asName": "Arelion Sweden AB",
"prefix": "62.115.128.0/18",
"country": "DE",
"jump": 61.8
},
{
"ttl": 8,
"kind": "public",
"ip": "62.115.116.213",
"hostname": "atl-b24-link.ip.twelve99.net",
"asn": 1299,
"rtt": {
"min": 70.4,
"avg": 70.5,
"max": 70.77
},
"loss": 0,
"stats": {
"sent": 5,
"received": 5,
"last": 70.49,
"best": 70.4,
"avg": 70.5,
"worst": 70.77,
"stdev": 0.1
},
"asName": "Arelion Sweden AB",
"prefix": "62.115.0.0/17",
"country": "GB"
},
{
"ttl": 9,
"kind": "public",
"ip": "62.115.143.236",
"hostname": "atl-bb2-link.ip.twelve99.net",
"asn": 1299,
"rtt": {
"min": 58,
"avg": 58.2,
"max": 58.4
},
"loss": 0,
"stats": {
"sent": 5,
"received": 5,
"last": 58,
"best": 58,
"avg": 58.2,
"worst": 58.4,
"stdev": 0.2
},
"asName": "Arelion Sweden AB",
"prefix": "62.115.128.0/18",
"country": "FR"
},
{
"ttl": 10,
"kind": "public",
"ip": "62.115.137.132",
"hostname": "ash-bb2-link.ip.twelve99.net",
"asn": 1299,
"rtt": {
"min": 57.86,
"avg": 57.9,
"max": 58.01
},
"loss": 0,
"stats": {
"sent": 5,
"received": 5,
"last": 57.9,
"best": 57.86,
"avg": 57.9,
"worst": 58.01,
"stdev": 0.1
},
"asName": "Arelion Sweden AB",
"prefix": "62.115.128.0/18",
"country": "SE"
},
{
"ttl": 11,
"kind": "public",
"ip": "62.115.121.216",
"hostname": "rest-b2-link.ip.twelve99.net",
"asn": 1299,
"rtt": {
"min": 58.02,
"avg": 58.1,
"max": 58.14
},
"loss": 0,
"stats": {
"sent": 5,
"received": 5,
"last": 58.11,
"best": 58.02,
"avg": 58.1,
"worst": 58.14,
"stdev": 0
},
"asName": "Arelion Sweden AB",
"prefix": "62.115.0.0/17",
"country": "PL"
},
{
"ttl": 12,
"kind": "public",
"ip": "213.248.67.47",
"hostname": "github-ic-368832.ip.twelve99-cust.net",
"asn": 1299,
"rtt": {
"min": 62.33,
"avg": 62.5,
"max": 62.53
},
"loss": 0,
"stats": {
"sent": 5,
"received": 5,
"last": 62.47,
"best": 62.33,
"avg": 62.5,
"worst": 62.53,
"stdev": 0.1
},
"asName": "Arelion Sweden AB",
"prefix": "213.248.64.0/18",
"country": "US"
},
{
"ttl": 13,
"kind": "silent",
"loss": 100
},
{
"ttl": 14,
"kind": "silent",
"loss": 100
},
{
"ttl": 15,
"kind": "silent",
"loss": 100
},
{
"ttl": 16,
"kind": "destination",
"ip": "140.82.114.3",
"hostname": "github.com",
"asn": 36459,
"rtt": {
"min": 58.29,
"avg": 58.4,
"max": 58.42
},
"loss": 0,
"stats": {
"sent": 5,
"received": 5,
"last": 58.34,
"best": 58.29,
"avg": 58.4,
"worst": 58.42,
"stdev": 0.1
},
"asName": "GitHub, Inc.",
"prefix": "140.82.112.0/20",
"country": "US"
}
],
"diagnosis": [
{
"code": "REACHED",
"tone": "success",
"text": "The trace reached github.com in 16 hops and 58 ms, with no packets lost at the destination."
},
{
"code": "SILENT_HOPS",
"tone": "info",
"text": "3 routers did not answer. That is normal: many routers ignore traceroute on purpose.",
"hops": [
13,
14,
15
]
},
{
"code": "OCEAN_CROSSING",
"tone": "info",
"text": "This jump crosses the Atlantic. That is expected: about 62 ms.",
"hops": [
7
]
}
],
"report": "Start: 2026-11-15T18:48:23.576Z From: Los Angeles, US (HostPapa) To: github.com\nHOST: probe Loss% Snt Last Avg Best Wrst StDev\n 1.|-- _gateway 0.0% 5 1.2 1.2 1.1 1.3 0.1\n 2.|-- 10.9.8.201 0.0% 5 0.8 0.9 0.8 0.9 0.0\n 3.|-- 10.9.1.209 0.0% 5 9.0 11.8 8.6 15.3 2.9\n 4.|-- 10.9.1.57 0.0% 5 0.7 1.3 0.6 2.8 0.8\n 5.|-- lax-b6-link.ip.twelve99.net 0.0% 5 0.5 0.6 0.5 0.6 0.1\n 6.|-- lax-bb2-link.ip.twelve99.net 0.0% 5 0.9 0.9 0.9 0.9 0.0\n 7.|-- dls-bb4-link.ip.twelve99.net 0.0% 5 62.8 62.7 62.6 62.9 0.1\n 8.|-- atl-b24-link.ip.twelve99.net 0.0% 5 70.5 70.5 70.4 70.8 0.1\n 9.|-- atl-bb2-link.ip.twelve99.net 0.0% 5 58.0 58.2 58.0 58.4 0.2\n 10.|-- ash-bb2-link.ip.twelve99.net 0.0% 5 57.9 57.9 57.9 58.0 0.1\n 11.|-- rest-b2-link.ip.twelve99.net 0.0% 5 58.1 58.1 58.0 58.1 0.0\n 12.|-- github-ic-368832.ip.twelve99-cust.net 0.0% 5 62.5 62.5 62.3 62.5 0.1\n 13.|-- ??? 100.0% 5 0.0 0.0 0.0 0.0 0.0\n 14.|-- ??? 100.0% 5 0.0 0.0 0.0 0.0 0.0\n 15.|-- ??? 100.0% 5 0.0 0.0 0.0 0.0 0.0\n 16.|-- github.com 0.0% 5 58.3 58.4 58.3 58.4 0.1"
}
],
"meet": null,
"measurementId": "2Id1KXR0rif7mVXca00021Vge",
"startedAt": "2026-11-15T18:48:23.576Z",
"incomplete": false
}More in Network
Next step
- IP lookupWho runs the slow hop?Check github.com in IP lookup
- Ping from many placesDoes the target answer from other places?Check github.com in Ping from many places
- Port checkerIs port 443 open on it?Check github.com in Port checker
What MTR shows that traceroute does not
A traceroute sends a few packets to each router and shows the times. MTR keeps going. It sends a set of packets to every router on the path, and for each one it reports how many were lost, and the last, average, best and worst delay, with the spread. That table is the standard evidence for a slow or unreliable connection, which is why support teams ask for it.
Everything a traceroute gives you is still here: the hops in order, the network behind each one, the folded silent routers and the biggest step in delay. The packets setting runs from one to sixteen, and five is a good start. More packets make the loss figures steadier and the test slower.
Telling real loss from a router being careful
The first thing people see in an MTR is a router in the middle showing 60 percent loss, and the second is panic. Most of the time it means nothing. A router has two jobs: forwarding traffic and answering your test packets. When it is busy it protects the first job and drops the second.
| What you see | What it means |
|---|---|
| Loss at one hop, none at the hops after it | The router limits its own replies. Your traffic is not affected. |
| Loss at the last hops before the target, then the target answers fully | Those routers are filtered. It does not matter. |
| Loss that starts at a hop and carries on to the target | Real loss. The network that runs the first hop with loss is where to look. |
| Loss at the target only | The target itself drops packets, or limits its replies. Test it from another place. |
We apply this rule for you. Loss that is backed by the hops after it is shown as a warning. Loss that is not is shown quietly, with the words limited replies, instead of in red.
The report to send to your provider
Under the table there is a plain text report in the usual mtr --report layout. The first line says when the test ran, where from and to which host. Copy it into a support ticket as it is. A provider can read it at a glance, and it is hard to argue with a table that names the first hop where loss begins.
Start: 2026-11-15T07:01:00.000Z From: Los Angeles, US (HostPapa) To: github.com
HOST: probe Loss% Snt Last Avg Best Wrst StDev
1.|-- 10.9.0.1 0.0% 5 0.3 0.3 0.3 0.4 0.3
2.|-- gw.lax.hostpapa.net 0.0% 5 0.9 0.9 0.8 1.2 0.3How to run a good test
- Start with five packetsIt is quick and enough to separate steady loss from a single dropped packet. Raise it to sixteen when the first result looks borderline.
- Use more than one placeIf the host is slow from everywhere, the problem is probably at the host. If it is slow from one place, the path to that place is the suspect.
- Try TCP when ICMP is blockedTCP on port 443 passes firewalls that drop ICMP, and it tests the path web traffic really takes.
- Read the headline firstIt names the first hop where real loss begins, or says that nothing on the path is lost.
- Run it again laterCongestion comes and goes. Two reports from different times of day make a stronger case.
The probes are volunteer machines, many of them in data centres, so they show how the internet sees the host from there and not from your house. For your own connection, run mtr on your own computer. Networks and countries are our best match and can be wrong.
Questions people ask
What does MTR stand for?
It began as Matt's traceroute and is now often read as my traceroute. It joins ping and traceroute in one tool, which is why it is the first thing network engineers reach for when a connection is unreliable.
Why does a router in the middle show 60 percent loss?
Because it limits how fast it answers test packets. If the hops after it show no loss, your traffic is passing through fine. We label that kind of loss as limited replies and keep the warning for loss that continues to the target.
How many packets should I send?
Five is a good first test. Use ten to sixteen when you need steadier figures, for example before you send a report to a provider. Each packet adds a little time to the test.
What is the standard deviation column for?
It shows how much the delay varies. A hop with a low average and a large spread answers unevenly, which can matter for calls and games even when nothing is lost.
Is this the same as running mtr on my computer?
No. It runs from the places you choose, not from your home. That is useful to see how a host looks from elsewhere. To test your own connection, run mtr or WinMTR locally and compare.
What is the difference from a plain traceroute?
A traceroute shows the path and one round of times. MTR repeats the test many times and counts lost packets, so it can tell a steady fault from a bad moment.
Use it from AI, the API or the command line
Every LookupOwl tool is also a free API and an MCP tool, with no key and no account. This one is traceroute. Please be kind to the rate limits.
curl "https://lookupowl.com/api/v1/tools/traceroute?q=github.com&preset=north-america"claude mcp add --transport http lookupowl https://lookupowl.com/mcp