Simulate slow internet connections on a Mac

When you are building a website or app, you want to know how it behaves on a slow connection. macOS has a built-in way to throttle your network, and there are a few other options as well.

Apple provides a preference pane called Network Link Conditioner. It is part of the "Additional Tools for Xcode" package, which you can download from Apple's developer site.

Once installed, it appears in System Settings (or System Preferences on older macOS). You can choose from presets like "3G", "Edge", "100% Loss", or create your own profile with custom bandwidth, latency, and packet loss.

This is the cleanest option because it works system-wide and affects all traffic — browsers, apps, everything.

Using pfctl and dnctl in Terminal

macOS includes pfctl (the packet filter) and dnctl (the dummynet traffic shaper), which let you throttle traffic from the command line:

sudo dnctl pipe 1 config bw 100Kbit/s delay 200
sudo echo "dummynet-anchor \"throttle\"" | sudo pfctl -f -
sudo echo "anchor \"throttle\"" | sudo pfctl -f -

This is more involved to set up but does not require any extra software. Useful if you need to script it or apply it in a CI environment.

Charles Proxy

Charles Proxy is a paid app with a built-in throttling feature. It sits between your Mac and the network and lets you set bandwidth, latency, and reliability. It is especially useful if you want to throttle only specific hosts or ports rather than all traffic.

Which one to use

For most people, Network Link Conditioner is the simplest choice. It is free, works system-wide, and the presets match real-world conditions. If you need more control or host-specific throttling, Charles Proxy is worth the investment.


Enjoyed this post?

Well, you could share the post with others, follow me with RSS Feeds and/or send me a comment via email.


Tags

Category:

Year: