A lightweight macOS menu bar app for live network speed and connection latency.
- Live download and upload activity from the active network interface
- Clear online, connecting, offline, and paused states
- One-second TCP latency samples with a rolling five-minute history
- Adaptive chart scale, missed-probe markers, average latency, and packet-loss summary
- Cancellable download and upload capacity estimate with validated HTTP responses
- A locally saved last result and timestamp, so old readings are never presented as current
- Launch at Login, pause monitoring, About, and Quit controls in the app
For most users, download the latest release—no development tools are required. The release is a universal app that runs natively on both Apple silicon and Intel Macs with macOS 12 or later.
- Go to Releases
- Download
SpeedBar.zip - Unzip it and drag
SpeedBar.appinto Applications - Open
SpeedBar.app
Release builds are ad-hoc signed for bundle integrity, but they are not Developer ID signed or notarized. macOS may therefore block the first launch. Right-click the app and choose Open. If macOS still reports that the app is damaged, run:
xattr -dr com.apple.quarantine "/Applications/SpeedBar.app"Then open the app again.
- Quit the currently running copy of SpeedBar
- Download
SpeedBar.zipfrom the latest release - Unzip the download
- Drag
SpeedBar.appinto Applications - Choose Replace when Finder asks
- Open
SpeedBar.appagain
SpeedBar does not have accounts. It stores only the last successful speed-test result, its timestamp, and small local preferences.
The menu bar displays current traffic, for example: ↓1.2M/s ↑318K/s.
- ↓ is the current download rate
- ↑ is the current upload rate
- Left-click opens live latency history and the speed test
- Right-click opens controls for testing, pausing, launching at login, About, and Quit
The popover separates live traffic (bytes per second) from tested connection capacity (bits per second). It also distinguishes an idle connection from an offline one.
The latency chart samples once per second and shows the latest five minutes. Its vertical scale adapts to normal conditions so small changes remain visible. Amber triangles identify spikes beyond the visible scale, red crosses identify probes that timed out, and muted dots represent periods when the Mac was offline. A failed probe is not treated as proof that the whole connection is offline.
The speed test is a quick capacity estimate rather than a laboratory-grade benchmark. It warms up the connection, downloads about 20 MB, and uploads about 5 MB using Cloudflare's speed-test service. Both directions must return successful HTTP responses before SpeedBar saves the result. The test can be cancelled at any time.
On macOS 13 or later, use Launch at login in the SpeedBar popover. On macOS
12, add SpeedBar.app manually in System Settings → General → Login
Items.
- Latency monitoring opens a short TCP connection to
1.1.1.1:443once per second while monitoring is active. - Speed tests use
speed.cloudflare.comand transfer random upload data. - SpeedBar does not inspect traffic contents, keep browsing history, or send analytics.
- Results and preferences stay in the current macOS user account.
- macOS 12.0 or later
- Xcode Command Line Tools
# Install Xcode Command Line Tools if needed
xcode-select --install
# Clone and build
git clone https://github.com/nishantkumar1292/speedbar.git
cd speedbar
./build.sh
# Run
open SpeedBar.app
# Run the unit and render-level layout tests
swift testThe build creates a universal SpeedBar.app containing both Apple silicon and
Intel code and targets macOS 12 or later. The internal SwiftPM executable remains
named InternetSpeed.
The default app version is 0.2.0. To build another version, set VERSION:
VERSION=0.2.1 ./build.sh# Build and verify the app
VERSION=0.2.0 ./build.sh
codesign --verify --deep --strict --verbose=2 SpeedBar.app
# Package it
ditto -c -k --norsrc --keepParent SpeedBar.app SpeedBar.zip
# Create a release
gh release create v0.2.0 SpeedBar.zip \
--title "SpeedBar v0.2.0" \
--notes-file RELEASE_NOTES.md