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 presets Off, DSL, 3G, LTE, High Latency DNS, Very Bad Network and 100% Loss, plus any custom ones

Each profile is built from these knobs:

  • Down speed (bytes/sec) — caps how fast the response reaches the client. Probe holds the response for its body size divided by this rate, so the average rate matches your value.
  • Up speed (bytes/sec) — same idea, for the request body: Probe holds the request for its body size divided by this rate before forwarding it.
  • 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 request, 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 adds no delay for it 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 open Custom Profiles… 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 → Tools → Throttle) use the same surface; they pre-fill the request's host, path and query and pick the URL glob matcher, so the new rule matches that request right away.

Throttle URL globs are matched with the default port (:443 for HTTPS, :80 for HTTP) removed, like Map Local, Map Remote, Breakpoints and Scripting rules. A pattern without a scheme (api.example.com/v1/upload/*) is compared with the URL minus its scheme, so it matches HTTP and HTTPS; a pattern with a scheme (https://…) matches only that scheme. The scheme and host ignore case (API.Example.com matches api.example.com); the path and query are case-sensitive.

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.
  • Map Local — combine a fake response with a delay to test loading states.