# mtr: The Network Diagnostic That Combines traceroute and ping

> mtr combines the path-discovery behavior of traceroute with the continuous measurement of ping into a single tool. It probes each hop on the route to a destination and prints running statistics, making it the practical first tool for diagnosing network connectivity issues on Linux, macOS, and Windows via WSL.

**traviscross/mtr** — Official repository for mtr, a network diagnostic tool

- Repository: https://github.com/traviscross/mtr
- Website: http://www.bitwizard.nl/mtr/
- Stars: 3,357 · Forks: 375
- Language: C
- License: GPL-2.0
- Published: 2026-09-24 · Updated: 2026-09-24 · Language: en
- Canonical page: https://hysenlabs.com/projects/traviscross-mtr

## What mtr Does and Who Should Use It

mtr is a network diagnostic tool that probes the network path between the local host and a user-specified destination by sending packets with successively larger time-to-live values. Intervening routers reply when they discard an expired packet, allowing mtr to discover each hop. It then continues probing and accumulates round-trip statistics for every hop it discovers.

The primary audience is systems administrators and network engineers who need to identify where on a multi-hop path latency is accumulating or packets are being dropped. It is also useful for developers diagnosing slow connections to remote services. Because mtr runs continuously, it captures intermittent events that a single static trace would miss.

## How mtr Probes and Measures the Network Path

The probe mechanism works in steps. mtr sends packets to the destination with a TTL of 1, then 2, then 3, and so on. Each router on the path decrements the TTL by 1; when it reaches zero, the router discards the packet and sends an ICMP time-exceeded message back to mtr. mtr reads the source address of these messages to identify each hop, then continues sending probes to build running loss and latency statistics.

The README notes an important caveat: intermediate routers may be configured to never send ICMP responses, or may rate-limit them. Apparent packet loss at an intermediate hop therefore does not always mean that forwarded traffic is actually being lost at that point. A router that suppresses ICMP will show 100% loss in mtr even when traffic flows through it normally.

## Building mtr from the Git Repository

There are no GitHub releases for this repository. Building from the git source requires running the bootstrap script first to generate the configure script from configure.ac:

```bash
./bootstrap.sh && ./configure && make
```

If you are building from a tarball downloaded from https://www.bitwizard.nl/mtr/files/, the bootstrap step is not needed and the command is:

```bash
./configure && make
```

After a successful build, test mtr before installing by running it directly:

```bash
sudo ./mtr <host>
```

Replace <host> with a hostname or IP address. When the output looks correct, run make install to install the binaries. The README notes that mtr-packet must be suid-root because it requires access to raw IP sockets; see the SECURITY file in the repository for the security implications of this requirement.

## Platform-Specific Build Notes

On macOS, the README states no special build steps are needed beyond the standard sequence. On Solaris, use gmake instead of make, and be aware of a GTK dynamic linker issue with suid binaries: if GTK is installed in /usr/local/lib, the linker may refuse to load it for a suid program. The README suggests passing -Wl,-rpath=/usr/lib when using GNU LD.

For a build without GTK support, pass --without-gtk to configure:

```bash
./configure --without-gtk
```

If that does not work on your system, the README also documents:

```bash
make WITHOUT_X11=YES
```

On Windows, the README recommends using Windows Subsystem for Linux (WSL). After setting up WSL, install mtr with the distribution package manager:

```bash
sudo apt-get -y install mtr
```

For a traditional Windows build without WSL, the repository describes a Cygwin-based approach using setup-x86.exe to install the required build packages.

## The Intermediate-Hop Loss Interpretation Problem

The most common misreading of an mtr report is treating apparent loss at an intermediate hop as evidence of a problem at that specific router. The README documents this directly: routers may be configured to never send ICMP responses or to rate-limit them. A router that silently forwards traffic but never replies to expired-TTL probes will show 100% loss in the hop column, even though every packet it forwards continues to the next hop without issue.

The practical interpretation rule is to look at the loss column for the destination host. If the final hop shows no loss while an intermediate hop shows high apparent loss, the intermediate router is almost certainly suppressing ICMP and the traffic path is intact. Real packet loss at an intermediate point typically propagates: all hops from that point to the destination show similar or worse loss.

## mtr Versus traceroute and ping

traceroute is the closest alternative. It also uses TTL-based probes to discover the network path, but it performs one static sweep and exits. You see each hop once, with one or three timing samples per hop. mtr by contrast runs continuously, accumulating statistics across many probe rounds, which makes slow patterns visible over time.

ping measures round-trip time and packet loss to a single destination but shows nothing about which hop on the route is the source of the problem. mtr answers both questions simultaneously: which hops exist, and where latency or loss appears.

The practical difference is that traceroute and ping answer binary questions (does this path exist, does this host reply), while mtr provides longitudinal data across the full path. For a production outage where the cause is unclear, mtr's continuous output gives more diagnostic information than either tool alone.

## Maintenance, License, and Contribution Process

The last push to the repository was on 2026-09-24, and the repository is not archived. Contributions go through GitHub pull requests or unified diff patches sent by email to the maintainer. The README notes there is no mailing list: it was removed when the server was upgraded because it received only spam.

mtr is distributed under the GNU General Public License version 2. The LGPL-covered BSDCOPYING file (listed in the repository) suggests some components have different terms; the README points to COPYING for details. GPL-2.0 means binary distributions must include the source or an offer to provide it. Unlike a library licensed under LGPL, the GPL-2.0 terms apply to the tool as a whole.

The NEWS file in the repository tracks feature changes. The TODO file documents known planned work. There are no version-pinned GitHub releases, so anyone packaging mtr from this repository must choose a commit.

## Conclusion

mtr belongs in the toolkit of any engineer who troubleshoots network paths regularly. The continuous statistics it prints make intermittent packet loss visible where a single traceroute run would miss it. Those who only need to confirm reachability can stay with ping. Anyone diagnosing a specific slow path should run sudo mtr <host> and watch the per-hop loss and latency columns before escalating to the network provider. Check the SECURITY file in the repository before deploying mtr on shared systems, since mtr-packet requires suid-root to open raw IP sockets.

## FAQ

### What does MTR do?

mtr combines traceroute and ping into a single tool. It discovers each router on the path to a destination by sending packets with successively larger TTL values and then continuously measures round-trip time and packet loss at every hop, printing running statistics.

### What is the difference between My Traceroute (MTR) and traceroute?

traceroute performs a single pass and exits, showing one measurement per hop. mtr runs continuously and accumulates statistics across many probe rounds, making intermittent loss and latency patterns visible over time.

### What is an MTR report?

An mtr report is the output from running mtr in report mode, showing each hop on the path to a destination along with packet loss percentage and latency statistics accumulated over a set number of probes. It is commonly shared when diagnosing network issues with an ISP or hosting provider.

### How do I run My Traceroute (mtr)?

After building or installing mtr, run it with sudo ./mtr <host>, replacing <host> with a hostname or IP address. The suid-root mtr-packet binary requires root-level socket access, which is why sudo is needed when running the binary from the build directory.

## Sources

- [Issues](https://github.com/traviscross/mtr/issues)
- [License: GPL-2.0](https://github.com/traviscross/mtr/blob/master/LICENSE)
- [Project website](http://www.bitwizard.nl/mtr/)
- [README](https://github.com/traviscross/mtr/blob/master/README.md)
- [traviscross/mtr on GitHub](https://github.com/traviscross/mtr)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/traviscross-mtr
