Log every internet outage on Windows, and get a report that shows whether the problem was on your side or your provider's.
⬇ Download OutageLog.exe · Website · Sample report · How it decides · FAQ
Your internet keeps dropping, but when you call the provider everything "looks fine on our end", and the drop was over before you could run a speed test. What you need is a record of every outage, with times, and something that tells your Wi-Fi apart from their line.
OutageLog is a small tray app that checks your connection every 2 seconds, logs every drop, and turns the log into a one-page report you can send to your provider: every outage with start time and length, a day-by-day timeline, and a verdict for each one.
- Tells the sides apart. Every round it checks your router and three internet servers run by different companies (Cloudflare 1.1.1.1, Google8.8.8.8, Quad99.9.9.9). Router answers but the internet doesn't: the break is past your router, on the provider's side. Router stops answering too: it's your Wi-Fi, cable or router. Internet answers but names don't resolve: DNS.
- A report you can send. One self-contained HTML file with the availability percentage, every outage with times and length, a timeline per day, typical and worst ping, and a CSV download of the outage table. It prints cleanly and opens on any device. See a sample.
- Honest numbers. Time the PC was off or asleep isn't counted as uptime or as downtime, reconnecting after wake-up isn't logged as an outage, and single failed checks are counted separately as brief drops rather than inflating the outage count.
- Works where ping is blocked. If a server doesn't answer a ping, OutageLog tries a TCP connection on port 443 before calling it down.
- Notifies you when an outage starts and when you're back online, so you can note what you were doing.
- Built-in self-test. Run self-test fakes a 20-second outage (checks go to addresses that never answer, your real connection isn't touched) so you can see detection working. Self-tests are marked and left out of report totals.
- Plain files. Every check is a line in a daily CSV file in %LOCALAPPDATA%\OutageLog\data. Nothing is uploaded anywhere.
- One small exe. No installer, no account and nothing to install: it runs on the .NET Framework 4.8 that ships with Windows 10 and 11. MIT licensed.
- Download OutageLog.exefrom the latest release.
- Put it somewhere permanent (for example %LOCALAPPDATA%\OutageLog\) and run it. It starts with Windows from then on, since a log only helps if it's running when the internet drops. You can turn that off in the tray menu.
- When you want to show someone, right-click the tray icon → Make a report.
The exe isn't code-signed yet, so SmartScreen may show "Windows protected your PC". Click More info → Run anyway, or build it yourself (below). Release builds are compiled by GitHub Actions from the tagged source and come with a SHA-256 checksum.
For the best evidence, run it on a PC connected to the router by cable. On Wi-Fi, a weak signal shows up as "your side", never as "provider side", so the provider-side numbers stay trustworthy, but some real provider outages may hide behind Wi-Fi drops.
About every 2 seconds OutageLog runs these checks at the same time: a ping to your router (the default gateway), a ping to each of the three internet servers (with the TCP fallback), and a DNS lookup of a well-known site that bypasses Windows' DNS cache. Each round gets one verdict:
An outage starts at the first of 2 or more failed rounds in a row and ends at the first of 2 good rounds. A single failed round is a brief drop. An outage's verdict is what most of its rounds said. Checks in the 30 seconds after the app starts or the PC wakes up aren't judged, and gaps longer than 20 seconds between rounds (sleep, shutdown) count as "not monitoring".
Will it slow down my internet?
No. A round is 4 small pings and one DNS lookup, well under 1 KB, so about 1–2 MB an hour. On a metered connection you can check less often: set intervalSeconds in %LOCALAPPDATA%\OutageLog\settings.ini.
Does it prove the outage was my provider's fault?
It gives you timestamps and a clear observation: at 20:31 the router answered and three independent internet servers didn't, for 11 minutes. That's usually what gets a technician to look at the line. It's still one PC's view, and a provider may run its own tests. Keep the modem's own log (often at 192.168.100.1 for cable modems) alongside it if you can.
My outages all say "Internet down" with no side. Your router doesn't answer pings, so OutageLog can't tell whether the break was before or after it. The outage times are still right. Running the self-test tells you if this applies to you.
What about VPNs? OutageLog pings the gateway of the network adapter Windows uses to reach the internet. With a full-tunnel VPN that adapter may be the VPN's, so the "router" check means less, and a VPN that drops while your line is fine also looks like an outage. For evidence to show your provider, turn the VPN off or exclude OutageLog from it.
Where are the logs, and how big do they get?
%LOCALAPPDATA%\OutageLog\data, one CSV file per day, about 2 MB for a day of checks. Files older than 60 days are deleted (keepDays in settings.ini; 0 keeps everything).
Can a CSV file be edited? Yes. This is your own record, not a certified measurement. The report shows how everything was measured so anyone can judge it.
Why not PingPlotter, Net Uptime Monitor or Ping Tracer? They're good tools with different jobs. PingPlotter is a commercial diagnostics suite. Net Uptime Monitor costs $9.95 (its trial closes after 30–60 minutes) and writes a plain-text log. Ping Tracer is free, open source and actively maintained, and shows live latency graphs per network hop. OutageLog is the one whose whole job is an outage record that says which side each outage was on, turned into a report you can send.
OutageLog.exe --report 7 HTML report of the last 7 days (opens it)
OutageLog.exe --report 30 --out x.html --no-open
OutageLog.exe --self-test 20 real checks + a faked 20 s outage, using a temporary log; exit code 0 = pass
OutageLog.exe --watch print every round live, log nothing
OutageLog.exe --demo-report a report from made-up data
In PowerShell, pipe to Out-Host (for example .\OutageLog.exe --self-test | Out-Host) so the prompt waits for the output.
Needs the .NET SDK (6 or later) on Windows.
dotnet test tests/OutageLog.Tests
dotnet build src/OutageLog -c Release
The exe lands in src/OutageLog/bin/Release/net48/. The deciding logic (Classifier, OutageTracker, ReportData) is separate from the Windows code and covered by the unit tests.
People have been asking for this for over fifteen years, and the answers are usually "run ping -t into a text file":
- Super User: Generating usage logs that prove my Internet connection is flaky (150k views, no accepted answer) and How can I monitor my ISP's connection quality over time? (130k views, no accepted answer)
- Super User: Log internet connection outages in Windows 10 and How to test internet connection quality over time?
- Reddit, every few weeks: r/techsupport, r/Network, r/HomeNetworking, r/PFSENSE
MIT © 2026 BoazCohenJ