GitHub - skhell/pingtrace: Cross-platform ping + traceroute + MTR in one command. Static Go binary, no runtime required. DNS, PeeringDB and ipinfo.io enrichment built in. · GitHub
/" data-turbo-transient="true" />
Skip to content
Search or jump to...
Search code, repositories, users, issues, pull requests...
-->
Search
Clear
Search syntax tips
Provide feedback
--><br>We read every piece of feedback, and take your input very seriously.
Include my email address so I can be contacted
Cancel
Submit feedback
Saved searches
Use saved searches to filter your results more quickly
-->
Name
Query
To see all available qualifiers, see our documentation.
Cancel
Create saved search
Sign in
/;ref_cta:Sign up;ref_loc:header logged out"}"<br>Sign up
Appearance settings
Resetting focus
You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.
Dismiss alert
{{ message }}
skhell
pingtrace
Public
Uh oh!
There was an error while loading. Please reload this page.
Notifications<br>You must be signed in to change notification settings
Fork
Star<br>10
main
BranchesTags
Go to file
CodeOpen more actions menu
Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit
History<br>14 Commits<br>14 Commits
.github
.github
cmd/pingtrace
cmd/pingtrace
internal
internal
schema
schema
.gitignore
.gitignore
.goreleaser.yaml
.goreleaser.yaml
CHANGELOG.md
CHANGELOG.md
LICENSE
LICENSE
README.md
README.md
SECURITY.md
SECURITY.md
go.mod
go.mod
go.sum
go.sum
View all files
Repository files navigation
pingtrace
Get a clean, color-coded view of every reply and every hop in a single run enriched with private and public DNS, ipinfo.io and PeeringDB policies. Easily export the results in CSV and JSON format.
Why pingtrace over the standard tools?
You usually run<br>pingtrace gives you in one command
ping then traceroute / tracert depending on OS then mtr<br>you run universally pingtrace that style the output and offer additional flags like MTR
dig +short for every hop<br>reverse DNS resolved automatically, with optional private DNS for internal hops
for ip in $(seq …) loops<br>simply pingtrace 10.0.0.0/24 or --file targets.csv
copy/paste into a spreadsheet or note<br>--export ./reports writes timestamped UTC CSVs and pingtrace 10.0.0.0/21 do it by default; add --json for a schema-validated JSON report alongside
It's the same probes you already trust (the OS ping / traceroute) pingtrace just runs them with no additional latency overhead, parallelize requests for faster CIDR resolution, decorates outputs for clear cross-platform readability including export.
Try it in 30 seconds
Install from source
go install github.com/skhell/pingtrace/cmd/pingtrace@latest<br>pingtrace help
# the headline command ping + trace + enrichment<br>pingtrace 8.8.8.8
# live MTR (Ctrl+C / q to stop)<br>pingtrace 1.1.1.1 --mtr
# bounded MTR, 10 cycles, 2s apart, exported to CSV<br>pingtrace 1.1.1.1 -m --cycles 10 --interval 2 --export ./reports
# CSV + JSON report (JSON validates against schema/pingtrace.schema.json)<br>pingtrace 8.8.8.8 --export ./reports --json
# multiple targets, a CIDR, or a file<br>pingtrace 8.8.8.8,1.1.1.1,example.com<br>pingtrace 10.0.0.0/30<br>pingtrace --file ./targets.csv
# script-friendly: pick your columns<br>pingtrace 8.8.8.8 --no-trace --columns seq,ip,time_ms,status
Run pingtrace --help for the grouped, color-coded flag reference, and pingtrace config to open an interactive TUI for tokens, DNS, and thresholds.
Operational notes
pingtrace depends on system ping and traceroute tooling being available on PATH.
On Windows, tracert is used.
On Unix-like systems, traceroute is used, with tracepath as a fallback where available.
--export without a path writes operation-specific CSV files in the current working directory.
If --export points to a .csv file path, pingtrace uses that file's directory and still writes separate ping_...csv and trace_...csv files.
Private DNS enrichment is automatically skipped if the configured server does not respond within 5 seconds.
--json writes a sibling JSON report (probe_...json for ping/trace runs, mtr__...json per MTR target) into the same directory as --export, or the current working directory when --export is omitted. The document validates against schema/pingtrace.schema.json and lists any CSVs written in its exportedFiles section.
PeeringDB and ipinfo.io enrichment is skipped for private/RFC-1918 IP addresses.
Feedback
If pingtrace saved you time in a troubleshooting session, it was worth building.
Star the project on GitHub
Report bugs or request features in Issues
Buy a coffee (or a snack for my buddy Schnauzer Tyson) if you feel like it.
About
Cross-platform ping + traceroute + MTR in one command. Static Go binary, no runtime required. DNS, PeeringDB and ipinfo.io enrichment built...