Network Throttling
Throttle shapes the traffic flowing through Probe so you can see how your app behaves on a slow or flaky network. It works in two modes: a global profile that applies to every request, and a scoped rules list where each rule has its own URL matcher and shape parameters.
Throttling kicks in for everything that goes through Probe — desktop traffic and any phone or tablet using Probe as its proxy. There’s no separate iOS/Android setting to maintain.

What gets shaped
Section titled “What gets shaped”Each profile is built from these knobs:
- Down speed (bytes/sec) — caps how fast Probe streams the response back to the client. Probe meters the response in chunks and sleeps between them so the average rate matches your value.
- Up speed (bytes/sec) — same idea, but for the request body going to the upstream.
- Down delay / Up delay (ms) — extra latency added on each leg. Up delay is added before the request is forwarded; down delay is added before the response is surfaced. Together they simulate one round-trip’s worth of RTT.
- DNS delay (ms) — extra delay applied at the start of every connection, on top of the directional delays.
- Down loss / Up loss (%) — probability that a response (or request body) is dropped. At 100% loss the request hangs forever, simulating a dead network.
A value of 0 on any knob means “no effect” — Probe’s metering loops short-circuit and the traffic flows at full speed.
Built-in presets
Section titled “Built-in presets”Open the Throttle picker in the toolbar to pick a preset. The values match Apple’s Network Link Conditioner reference profiles where applicable.
| Preset | Down | Up | Delay (down/up) | Loss |
|---|---|---|---|---|
| Off | uncapped | uncapped | 0 / 0 | 0% |
| DSL | 2 Mbps | 256 kbps | 5 / 5 ms | 0% |
| 3G | 780 kbps | 330 kbps | 100 / 100 ms | 0% |
| LTE | 50 Mbps | 10 Mbps | 50 / 65 ms | 0% |
| High Latency DNS | uncapped | uncapped | 0 / 0 ms (+ 3000 ms DNS) | 0% |
| Very Bad Network | 1 Mbps | 1 Mbps | 500 / 500 ms | 10% / 10% |
| 100% Loss | uncapped | uncapped | 0 / 0 | 100% / 100% |
You can save your own custom profiles next to the built-ins if you frequently reach for a specific shape.
Global mode
Section titled “Global mode”Click the throttle icon in the toolbar and pick a preset (or Custom to dial your own). The change applies immediately to every new connection — both desktop and any device using Probe as its proxy. Pick Off to disable throttling.
The icon highlights when a profile other than Off is active so you don’t forget you’re shaping traffic.
Scoped rules: throttle only what matters
Section titled “Scoped rules: throttle only what matters”The global profile is a blunt instrument — it touches every request. The scoped rules list lets you apply different shapes to different URLs, leaving everything else alone.
Each rule has:
- a matcher — host, URL glob, or app/process name,
- a profile — the same set of knobs as the global profile (down/up bps, delays, loss),
- an enabled toggle.
Probe evaluates the rules in order; the first match wins, and the matched profile overrides the global profile for that request. Once a rule is chosen for a request, its shape is locked in for both the request and response leg, even if you edit the rules list mid-flight.
The rule editor
Section titled “The rule editor”Add or edit a rule from the throttle rules list. On macOS and Windows, the editor opens as a native child window — a separate OS window with its own title bar — so you can leave it floating while you watch live traffic in the main Probe window and tweak the rule’s pattern or shape on the fly. Quick-create paths (e.g. right-click a log row → Throttle for this URL) use the same surface.
URL-shape note
Section titled “URL-shape note”Throttle URL globs are matched against the MITM-shaped URL — including :443 for HTTPS and :80 for HTTP. Write patterns with a wildcard before the path (e.g. **/v1/upload/*) or include the default port if you’re matching on host exactly. Map Local, Map Remote, and Breakpoints strip the default port for you; throttle and Scripting URL matchers do not, so be explicit there.
Worked example: slow uploads only
Section titled “Worked example: slow uploads only”You want to verify your upload progress UI on a real LTE connection — but only for upload calls. Other traffic should flow at full speed.
- Set the global profile to Off.
- Open the throttle rules list and add:
- Matcher: URL glob
**/v1/upload/* - Profile: Down
50 Mbps, Up1 Mbps, delay50 / 65 ms
- Matcher: URL glob
- Save and enable the rule.
Now uploads crawl at 1 Mbps and you can watch your progress bar do real work, while every other request still flies.
Related
Section titled “Related”- Breakpoints — pause traffic instead of slowing it.
- Scripting —
pro.req/pro.reshooks if you need conditional shaping that throttle rules can’t express. - Map Local — combine a fake response with a delay to test loading states.