Last updated: July 20, 2026
A network-testing client for Android built on iperf2, with live meters designed to let you correlate throughput, latency, and congestion-signal metrics as they happen, rather than reading one number in isolation.
Download the APK from the
SourceForge file listing
(look for the iperf2*_android.apk file, not the big green "Download" button
at the top of the page, which grabs a different default file). Open it from your phone's
Downloads or notification shade, and allow the one-time "install unknown apps" prompt.
On first launch, set Host to the server you want to test against and pick a mode. The app remembers your last 5 host/port entries via the dropdown.
Standard throughput testing, with live meters for:
| Metric | What it shows |
|---|---|
| Throughput | Instantaneous and average Mbps |
| RTT smoothed | Smoothed round-trip time, paired with a chart of current RTT riding above the connection's tracked RTT floor |
| Load Delay | Current RTT minus the RTT floor — the delay attributable to load on the path |
| CE Duration | Congestion-experienced marking duration (where supported by the path) |
| Write Block Time | Time the sender spent blocked on a full send buffer |
| Retries | TCP retransmissions |
| CWND / inFlight / NotSent | Combined chart of congestion window, bytes in flight, and bytes queued but not yet sent |
Congestion control algorithm is selectable: cubic, reno,
bbr, or prague (prague is greyed out on most stock devices —
it needs a patched kernel most phones don't have).
Round-trip responsiveness testing (request/response, measured in RPS) — not idle-network latency. With the Working load toggle on, the app runs a concurrent upload/download/bidirectional load underneath the responsiveness probes, so you can see how well round-trip times hold up when the link is actually busy — the same concept behind "responsiveness under working load" / bufferbloat testing.
| Metric | What it shows |
|---|---|
| RPS | Responses per second, with avg/min/max |
| Working load up / down | Concurrent bulk throughput in each direction, if enabled |
| RPS (live, windowed) | A windowed mean ± stdev band, so you can see whether responsiveness is stable or degrading under load |
Tests the L4S (Low Latency, Low Loss, Scalable throughput) congestion-signaling path.
| Metric | What it shows |
|---|---|
| Throughput, RTT smoothed, Load Delay, CE Duration | Same meaning as the TCP versions above |
| Packets/sec | UDP packet rate |
| CE marks/sec | Rate of congestion-experienced (CE) marks received |
| Marking Probability | Fraction of packets arriving CE-marked |
| Loss Probability | Fraction of packets lost |
| Window / Inflight / Queued | Combined chart, the UDP-L4S counterpart of TCP's CWND/inFlight/NotSent view |
Every metric is shown as a small dial paired with a time-series sparkline beside it, each with a time axis ("-Ns" to "now") derived from your configured Interval. The dial gives the current reading plus avg/min/max; the sparkline lets you see the trend and line up a spike in one metric against what else was happening at the same moment.
| Option | What it does |
|---|---|
| Duration / Interval | Test length and reporting interval, in seconds |
| Reverse (-R) | Server sends instead of the client (TCP/UDP L4S) |
tcp_notsent_lowat | Caps how much unsent data the kernel buffers, for more responsive write-blocking behavior (TCP) |
| Custom request/reply size | Override the default Bounceback request/response payload sizes |
| Hold to save results | Long-press a run to save it into one of four A/B/C/D slots for side-by-side comparison against a later run |
responde.* hosts that
ship as the app's default targets exist to verify the app itself works end to end —
connects, authenticates, renders the live meters correctly. They are not sized for load
testing, so don't read anything into the throughput/RPS numbers you see against them.
Point the app at your own iperf2 server if you want numbers that mean something for your
own path.
Connecting to a non-local host automatically and silently attaches a permit-key to authenticate against the developer's own test servers — there's no login or password to enter. This has no effect when pointing the app at your own iperf2 server.