📡 A simple, lightweight, real-time web app to monitor internet connection stability. Built with Node.js, Express, React and Chart.js. Runs locally on localhost
.
Track your ping in real time with a clean, interactive latency graph.
- 📊 Real-time latency graph (smooth and responsive)
- ⏱ Dynamic time range selector (60s to full session)
- 🧠 Live statistics: average, min, max and current latency
- ❌ Packet loss tracking (count & %)
- 🌐 Change ping target (IP or domain) without restarting
- 💡 Runs on
localhost
, no cloud or desktop install
- Backend: Node.js + Express +
ping
- Frontend: React + Chart.js (
react-chartjs-2
) - Runner:
concurrently
to launch both servers - No database: data is stored in memory per session
git clone https://github.com/OleksandrZadvornyi/ping-monitor.git
cd ping-monitor
npm install
npm start
- Backend runs on http://localhost:3001
- Frontend opens at http://localhost:5173
To stop the app, press Ctrl + C
in the terminal.
- The graph starts by pinging
8.8.8.8
by default - Use the input field to enter a new IP or domain and hit Change Target
- Select a view range (e.g. "5m", "1h") to zoom in or out
- Watch live latency changes and packet loss stats update
ping-monitor/
├── backend/
│ ├── server.js # Express API and ping loop control
│ └── pingWorker.js # Handles pinging and target switching
├── frontend/
│ ├── src/
│ │ ├── components/
│ │ │ ├── StatsPanel.jsx
│ │ │ └── LatencyGraph.jsx
│ │ ├── App.jsx
│ │ └── main.jsx
├── package.json # Runs both frontend/backend with concurrently
└── README.md
- 🔴 Plot red spikes for packet loss
- 💾 Export data to CSV
- 🌙 Dark mode
- 💡 System tray / background mode
This app is intentionally local-only for two main reasons:
- Privacy & security – your connection info stays on your machine
- Low latency – it's meant for real-time monitoring
If hosted remotely, it wouldn’t accurately measure your own ping, but rather the ping between the server and the target.
MIT