Open source · Android 5.0 and newer

A slow network,
on purpose.

App Throttler slows, blocks and inspects the traffic of the Android apps you choose. No root, no server, and nothing else on the phone is touched.

GPL-3.0v0.1.0

The App Throttler Home screen with the VPN stopped. The profile is Custom: 86 kbps download, 66 kbps upload, 100 ms latency plus 20 ms jitter and 1.0% packet loss. The status line reads Stopped and the bottom navigation shows Home selected.

Make any network misbehave.

Five controls, per-app rules and a live view of every connection — in one small app that stays out of the way of everything else.

Only the apps you pick

Everything else keeps its normal connection. Tick the apps under test and leave the rest of the phone alone.

Five real controls

Download, upload, latency, jitter and packet loss. Set them by slider or load a preset — and change them while the tunnel is running.

Watch the wire

A live rate chart, every open connection with its host and bytes, a packet capture and a log for when something won't connect.

Every connection, in plain sight.

Traffic from the selected apps is terminated locally, so the app can show you what would otherwise be invisible — and let you act on it.

  • App, host, port, bytes and whether a connection was blocked.
  • Search, filter by app, or show blocked attempts only.
  • Turn any connection into a rule: block the app or the host.
  • Record to .pcap for Wireshark, or export the list as CSV.
The App Throttler Traffic screen with the Connections tab selected. It lists eight open Instagram connections to Facebook CDN addresses and to 8.8.8.8:53, each with its protocol and byte counts. Above the list are a packet-capture bar, a search field and the filters All apps and Blocked only.

Interface walkthrough

Every screen,
purpose-built.

Engineered for quick workflows. Switch conditions, isolate apps, audit open flows, and export packet captures without context switching.

Five numbers,
one connection.

Speeds are logarithmic and the last notch means unlimited. All selected apps share the session values unless one is given its own profile.

Download 10 kbps – 50 Mbps

Caps data delivered to the selected apps.

Upload 10 kbps – 50 Mbps

Caps data sent by the selected apps.

Latency 0 – 2,000 ms

Added to every round trip, half each way.

Jitter 0 – 500 ms

Random variation of latency, per packet.

Packet loss 0 – 30%

Share of packets dropped at random.

Presets, ready to go

Built in. Save your own values and app selection as a profile.

Built-in network presets and their download, upload, latency, jitter and packet loss values
Network Download Upload Latency Jitter Loss
2G 40 kbps 20 kbps 300 ms 50 ms 2.0%
EDGE 240 kbps 200 kbps 400 ms 80 ms 1.5%
3G 384 kbps 128 kbps 100 ms 20 ms 1.0%
4G 10.2 Mbps 5.1 Mbps 20 ms 5 ms 0.1%
Slow Wi-Fi 1 Mbps 512 kbps 50 ms 10 ms 0.5%
Congested Wi-Fi 2 Mbps 1 Mbps 150 ms 100 ms 5.0%
Satellite 5 Mbps 1 Mbps 600 ms 30 ms 0.5%
Offline — — — — 100%

Automate

Put the throttle in your test script.

Drive the tunnel from adb, a Quick Settings tile or a launcher shortcut. No screen taps in the middle of a run.

  • Quick SettingsStart and stop from the shade, using the saved settings.
  • ShortcutsLong-press the app icon for Start and Stop throttling.
  • ScenariosTrain through a tunnel, Elevator ride, Flaky Wi-Fi — or build your own sequence.
adb · start a session
$ adb shell am start \
  -n com.rangandale.appthrottler/.control.ControlActivity \
  -a com.rangandale.appthrottler.action.START \
  --es profile 3G

VPN permission must be granted once in the app. Names are matched case-insensitively; a scenario such as “Elevator ride” needs quoting.

No root. No server.
Nothing leaves the phone.

The throttle is a local VPN that only touches the apps you select. There is no account, no analytics, and no traffic routed through us. The source is yours to read.

No root

Runs as a local VPN on stock Android 5.0 and newer.

Local only

Traffic is relayed straight to the internet. Nothing is sent to a third party.

GPL-3.0

Read it, audit it, fork it. Issues and pull requests are welcome.

Get the build.

v0.1.0 release APK · Android 5.0 and newer · 6.4 MB. Signed release build; Android asks for VPN permission the first time you start it.

SHA-256 9cc1f8e4dab05fde368c2fec5540836e8f70b4f10816b6c240ef071e5c860caa
Build & install from source
./gradlew :app:assembleRelease
adb install -r release/AppThrottler-v0.1.0.apk