Skip to content

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.

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.

Open the Throttle picker in the toolbar to pick a preset. The values match Apple’s Network Link Conditioner reference profiles where applicable.

PresetDownUpDelay (down/up)Loss
Offuncappeduncapped0 / 00%
DSL2 Mbps256 kbps5 / 5 ms0%
3G780 kbps330 kbps100 / 100 ms0%
LTE50 Mbps10 Mbps50 / 65 ms0%
High Latency DNSuncappeduncapped0 / 0 ms (+ 3000 ms DNS)0%
Very Bad Network1 Mbps1 Mbps500 / 500 ms10% / 10%
100% Lossuncappeduncapped0 / 0100% / 100%

You can save your own custom profiles next to the built-ins if you frequently reach for a specific shape.

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.

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.

Add or edit a rule from the throttle rules list. On macOS, 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. On Windows, the editor opens as an in-app modal dialog with the same fields. Quick-create paths (e.g. right-click a log row → Throttle for this URL) use the same surface — child window on macOS, dialog on Windows.

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.

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.

  1. Set the global profile to Off.
  2. Open the throttle rules list and add:
    • Matcher: URL glob **/v1/upload/*
    • Profile: Down 50 Mbps, Up 1 Mbps, delay 50 / 65 ms
  3. 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.

  • Breakpoints — pause traffic instead of slowing it.
  • Scriptingpro.req / pro.res hooks if you need conditional shaping that throttle rules can’t express.
  • Map Local — combine a fake response with a delay to test loading states.