streamtop
Live HLS, DASH, and IPTV stream diagnostics in the terminal.
Installation
Rust ecosystem (recommended)
Fast binary install (no compile), after cargo-binstall:
Windows — Scoop
scoop bucket add streamtop https://github.com/Jorji49/streamtop
scoop install streamtop/streamtop
Windows — Winget
winget install streamtop
Catalog ID is Jorji49.streamtop (winget requires Publisher.Package); install resolves via the streamtop moniker. PR: microsoft/winget-pkgs#424445.
Until the catalog indexes, from a clone (admin once: winget settings --enable LocalManifestFiles):
winget install --manifest .\dist\winget
macOS / Linux — Homebrew
One-shot without a tap:
Arch Linux (AUR template)
dist/aur/PKGBUILD is ready for streamtop-bin. Publish it to the AUR, then:
Docker
Requires the GHCR package to be public (GitHub → Packages → streamtop → Package settings → Change visibility).
Debian / Ubuntu (.deb)
Manual binary / build from source
# Linux x86_64 example
&& &&
Windows: if the linker fails, put WinLibs MinGW on your PATH, then rebuild.
Quick start
--probe-headers downloads only the start of each segment (faster, enough for header and wire checks).
What you see
| Area | Meaning |
|---|---|
| Status | URL, LIVE / ESTIMATED, health score (SHI), video FPS, latency, CDN, buffer, [LL-HLS] part timing |
| Last segment | Sequence, sizes, DNS / TCP / TLS / TTFB, container type |
| ABR ladder | Bitrates, resolution, FPS, codecs — [wire] = from the bitstream, red = manifest vs wire mismatch |
| Charts | Latency or TTFB, download rate or transfer time |
| Log | Warnings, ads (binary SCTE-35), stalls, HTTP errors |
FPS comes from the playlist (FRAME-RATE / @frameRate) when present; otherwise from the media bitstream when it can be read.
Commands
# Live dashboard
# Compare two feeds side by side
# Webhook alerts (Slack / Discord / any HTTP endpoint)
# Channel list audit → audit_report.json / .csv
# Headless pass/fail (CI)
# Prometheus metrics on :9090/metrics
# Grafana dashboard JSON (import; scrape streamtop --prometheus)
Alert kinds for --alert-on: stall, shi_below_70, http_5xx, mismatch, ad_start.
Keys
| Key | Action |
|---|---|
q / Esc / Ctrl+C |
Quit (Esc returns to channel list when one is open) |
Space |
Save report under diagnostics/ |
c |
Copy a curl for the last segment |
p |
Quick Play via mpv or ffplay (non-blocking) |
r |
Reset metrics |
Tab |
Channel overlay |
? |
Help |
/ |
Search in channel list |
j / k |
Scroll log or channel list |
License
MIT — see LICENSE.