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.

Throttle picker dropdown open in the toolbar showing built-in profiles like 3G, 4G, Edge, plus any custom ones

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 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.

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.