Traceroute and ping,in a single live view.
OpenMTR is a modern, lightweight network diagnostic tool and a successor to WinMTR. It probes every hop continuously and shows loss, jitter, latency and ASN in real time, with a clean Qt6 interface for Windows, macOS and Linux.
Continuously traces the route to a host and shows per-hop latency and packet loss statistics in real time.
© slamb.eu · GPL-2.0 license
| Hop | ASN | Hostname | IP | Loss% | Sent | Recv | Bestms | Avrgms | Wrstms | Lastms | Jttrms |
|---|
A live replica using real data from an OpenMTR export. Press Start to run a live trace, switch the theme, or open the version info.
Why OpenMTR
Live
Every hop between you and the target is probed continuously and the statistics update in real time.
Problem hops stand out
Loss bars and dimmed 0% hops make trouble spots obvious at a glance.
GUI or CLI
A full desktop app, plus a headless report mode for scripts, cron jobs, CI and SSH.
No admin rights
Runs as a standard user. Nothing to elevate, nothing to install as a service.
Follow the path
The example above traces 18 hops from a home router in Czechia to a server in Tokyo. The long jump to about 220 ms is the intercontinental link through Hong Kong.
Two early hops report loss, but everything after them is clean. That is just those routers rate-limiting ICMP replies, so the path itself is healthy. Knowing how to read that is the whole point of a tool like this.
How a trace works
OpenMTR sends packets with an increasing time-to-live. Each router that drops one reports back, and that is how the whole path appears, hop by hop.
Made for real-world problems
Whenever a connection feels wrong and someone asks you to "send an MTR", this is the tool to reach for.
Gamers
Lag spikes? Find out whether it is your Wi-Fi, your provider or the game server, and hand support the proof.
Sysadmins and NOC
Check paths from any workstation, script it with --report, and export csv or json for tickets and monitoring.
Home users and ISP support
When support asks for a trace, export the report and attach it. No account, no installer, no admin rights.
Everything you need to find the bad hop
Derived from the WinMTR Redux engine, with a modern interface and a lot more around it.
Tracing and statistics
Real-time route tracing
Continuously probes every hop and updates statistics live.
Per-hop statistics
ASN, hostname, IP, packet loss, jitter, sent and received counts, plus best, average, worst and last latency.
Packet loss at a glance
A visual loss bar per hop with exact numbers in a tooltip. Hops with 0% loss are dimmed so the problem ones stand out.
Route change and load-balancing detection
Hover a hop that answered from more than one IP and it is flagged as a route change or per-packet load balancing, with details.
ASN lookup
Autonomous System Numbers are resolved automatically through Team Cymru's DNS service.
IPv4 and IPv6
Full dual-stack support, with automatic fallback if the target can't be resolved with the chosen protocol.
Configurable ping size
Adjust the ICMP payload from 64 to 8192 bytes.
Live test duration
A running timer in the title bar during a trace, frozen when stopped. Start time and duration are included in exports.
Interface
Light and dark themes
Switches instantly and follows the system theme on launch. The title bar follows too, natively on every platform.
Custom frameless window
A Fluent-inspired look and the same controls everywhere. On macOS you also get a native application menu.
Tooltips everywhere
Loss details, and the full IP or hostname whenever it doesn't fit its cell. Tooltips follow the cursor and stay on screen.
Smart column sizing
Hostname and IP columns share space by content width, and the toolbar adapts as the window narrows.
HiDPI aware
Crisp on high-DPI and mixed-DPI setups on every platform.
Instant close
The app exits immediately at any time. Background threads stop asynchronously without blocking the UI.
Export and workflow
Export or copy
Save as .txt, .csv or .json through a native Save dialog, or copy the full report. Double-click any cell to copy its value.
Headless report mode
Run a one-shot trace from the command line and get text, JSON or CSV. No window, no display needed.
Works in scripts, too
The same engine and the same report code run without a window. Use it in cron jobs, CI, Task Scheduler, or over SSH.
Like the real CLI, progress is a single self-overwriting line on stderr. The demo measures for 10 s to keep it short; the report is from a real 2-minute run.
Options
| --time <s> | Required. How long to measure after the route has settled. Warm-up isn't counted. |
| --size <bytes> | ICMP payload, 64 to 8192 (default 64, same as the window). |
| -4 / -6 | Force IPv4 or IPv6. Default is IPv6 with automatic IPv4 fallback. |
| --txt / --json / --csv | Report format. Text is the default. |
| --output <path> | Write the report straight to a file. Works with no shell or console, e.g. Task Scheduler. |
| -h / -v | Show usage, or print the version. |
Progress goes to stderr and disappears when output is redirected, so it never ends up in a saved report.
Exit codes for scripting
| 0 | Report printed, the destination replied |
| 1 | Report printed, the destination never replied |
| 2 | Invalid command line |
| 3 | The target could not be resolved |
| 4 | The trace could not start (no ICMP socket or handle) |
| 5 | The --output file could not be written |
| 130 | Interrupted with Ctrl+C, partial report still printed |
Real output of the same run as the window above, exactly as OpenMTR writes it. Hops 4 and 5 show loss while the rest of the path is clean.
WinMTR vs OpenMTR
OpenMTR carries on the idea of WinMTR, with an engine derived from WinMTR Redux, and builds the rest around current platforms.
| Original WinMTR | OpenMTR | |
|---|---|---|
| Platforms & delivery | ||
| Platforms | Windows only | Windows 11 (AMD64, ARM64), macOS 13+ (Apple Silicon) and Linux (x86_64, aarch64) |
| Distribution | Windows executable | Windows EXE, macOS DMG and Linux AppImage |
| Analysis | ||
| Per-hop statistics | Hostname, loss, sent/recv, best/avg/worst/last | All of that, plus ASN and jitter per hop |
| ASN lookup | Automatic through Team Cymru DNS, cached | |
| Jitter | Its own column | |
| Loss at a glance | Numbers only | Loss bar per hop, 0% hops dimmed so problem hops stand out |
| Route changes | Multiple answering IPs are flagged as route change or load balancing, with details | |
| IP versions | IPv4 only | IPv4 and IPv6 with automatic fallback |
| Ping size | 64 to 8192 bytes | 64 to 8192 bytes |
| Interface | ||
| Window | Classic Win32 dialog | Modern Qt6 window with a Fluent-inspired frameless design |
| Themes | Light and dark, follows the system, native title bar on every platform | |
| Hop details | Properties dialog per hop (double-click) | Loss details, plus the full IP or hostname where it doesn't fit |
| Copying | Whole report as text or HTML | Whole report, or any single value with a double-click |
| Export and automation | ||
| Export formats | Text, HTML | txt, csv and json through a native Save dialog |
| Headless mode | GUI only, the command line just starts a trace in the window | --report with text, JSON or CSV output |
| Exit codes | Documented codes 0 to 5 and 130 for scripts | |
| CSV safety | Spreadsheet formula injection neutralised in hostnames | |
| Under the hood | ||
| Engine | Thread per hop | Single async dispatch loop, based on WinMTR Redux |
| Documentation | README and a short in-app help | Architecture, engine, GUI, build and CI docs, plus a known-issues history |
| Development | Moved to GitHub in Nov 2025, still looking for developers | Actively developed |
| License | GPL v2 | GPL v2 |
supportedpartlynot available
Small, fast and documented
One binary that is either a Qt Widgets GUI or a headless CLI. Everything that matters is shared between the two, so they can never disagree about what a trace found.
Async engine
A single dispatch loop replaces one thread per hop, avoiding a thread's stack and scheduling slot for every hop.
Shared core
The tracer, report formatting, warm-up logic and ASN cache are used identically by the window and the command line.
No Qt Network
Deliberately avoided, together with hardened build flags and uncompressed packaging, to keep antivirus false positives down.
Safe exports
Hostnames come from remote reverse DNS, so CSV exports neutralise spreadsheet formula injection in that column.
Well documented
Architecture, engine internals, GUI internals, build and CI notes, and a known-issues history live in the repo's docs/ folder.
main.cpp ├─ --version → print version, exit ├─ --report → cli::run() (no QApplication) └─ otherwise → QApplication + MainWindow shared: tracer · report_core · asncache · updatecheck
Get OpenMTR
Free and open source. Pick your platform.
| Requires | Windows 11, AMD64 or ARM64 |
| Recommended | 24H2 (build 26100) or newer. On earlier builds the window opens with an empty console window behind it. |
start OpenMTR.exe in cmd or Start-Process OpenMTR.exe in PowerShell to get the prompt back.| Requires | macOS 13 Ventura or newer, Apple Silicon |
Open the .dmg and drag OpenMTR to Applications. The app is signed ad-hoc rather than with an Apple Developer ID, so macOS refuses the first launch. Clear the quarantine flag once:
xattr -dr com.apple.quarantine /Applications/OpenMTR.app| Requires | Desktop Linux, x86_64 or aarch64, with a recent glibc |
Download the AppImage from the releases page, make it executable and run it:
chmod +x OpenMTR*.AppImage && ./OpenMTR*.AppImageqt6-base-dev, CMake 3.22+, Ninja and a C++20 compiler are enough.Questions
Is OpenMTR a replacement for WinMTR?
Yes. It does the same job, a combined traceroute and ping with live per-hop statistics, in a modern application that also runs on macOS and Linux. Its network engine is derived from WinMTR Redux.
Do I need administrator rights?
No. OpenMTR runs as a standard user.
How do I read the results?
Loss at the final hop is what matters. A middle hop that shows loss while later hops don't is usually just a router rate-limiting its ICMP replies, not a real problem. In the example above, hops 4 and 5 show loss but the destination is clean.
My antivirus flagged it. Is it safe?
The source is open, so you can read or build it yourself. Network tools that send ICMP packets sometimes trigger machine-learning false positives, and the project's build flags and packaging are chosen specifically to reduce that.
macOS says the app is damaged.
The app is signed ad-hoc, not with a paid Developer ID. Run xattr -dr com.apple.quarantine /Applications/OpenMTR.app once after moving it to Applications and it launches normally.
Is it free?
Yes, GPL v2, with no ads and no accounts. If it helps you, you can support development on Ko-fi or GitHub Sponsors.
Built in the open
OpenMTR builds on WinMTR Redux by White-Tiger and the original WinMTR by Vasile Laurentiu Stanimir. The macOS build was created and fine-tuned by BKPepe. The whole application was built with Claude, directed and reviewed by the project maintainer.