Network Link Conditioner (NLC) is a free Apple developer tool that simulates degraded network conditions — slow bandwidth, high latency, packet loss — on macOS. It installs as a System Settings preference pane and applies throttling system-wide, making it the most common starting point for network throttling macOS developers reach for when testing how their apps behave on slow connections. This guide walks through how to install and configure NLC, the friction points you'll hit in practice, and the alternatives that have emerged as developers look for faster workflows.
Network Link Conditioner isn't bundled with macOS or Xcode. You need to download it separately from Apple's developer site. Here's how:
.prefPane file to install it into System Settings.It installs as a preference pane — not a standalone app or menu bar item. Once active, all network traffic on your Mac goes through the selected profile's conditions. You can create custom profiles with specific bandwidth, latency, and packet loss values, or use the built-in presets like 3G, Edge, and WiFi.
NLC works, but there are real friction points that become more noticeable the more you rely on network throttling macOS workflows during development.
NLC isn't in Xcode, the App Store, or Homebrew. You have to know it exists, sign into the Apple developer portal, locate the "Additional Tools" DMG for your specific Xcode version, and manually install a preference pane. For something you'd expect to be a first-party developer tool, the discovery experience is surprisingly buried.
Switching from one profile to another requires toggling the conditioner off and back on. If you're testing multiple conditions in a single session — say, checking your app on 3G, then Edge, then lossy WiFi — the constant toggling adds up.
There's no way to set NLC to turn itself off after a set duration. Forget to disable it manually and you'll spend the next meeting wondering why Slack won't load and every page takes 30 seconds.
When NLC is active, there's no visual cue anywhere on screen. You have to open System Settings and navigate to the preference pane to check whether throttling is still on. This makes it easy to leave running without realizing it.
The UI hasn't changed in years. NLC still works on recent macOS versions, but Apple hasn't shown signs of active development. Some developers report that the preference pane fails to install after a macOS update, or that System Settings stops recognizing it entirely.
Charles is a well-established HTTP proxy that lets you inspect, modify, and throttle network traffic. Its throttling feature simulates slow connections by routing traffic through a local proxy with configurable bandwidth and latency limits.
Charles is a solid choice if you need both traffic inspection and network throttling on macOS in one tool. But if throttling is all you need, it's overkill — it's a heavyweight app designed primarily for debugging. The proxy layer can also cause issues with certificate pinning and VPN connections, which adds its own friction to testing workflows.
Proxyman is a modern macOS-native proxy tool, similar in purpose to Charles but with a more polished interface. It includes a "Network Conditions" feature with presets for 3G, 4G, WiFi, and bad/medium network conditions. You can also throttle specific hosts rather than your entire connection, which is useful for targeted testing.
Like Charles, Proxyman is primarily a traffic inspection tool where throttling is a secondary feature. The proxy-based approach means the same potential issues with certificate pinning and VPNs. It's a great tool if you need the full debugging suite, but expensive if you only need to slow your network down.
Network Throttler is a macOS menu bar app purpose-built for network throttling. At $5.99 one-time with a 7-day free trial, it's the most affordable option — and unlike the proxy-based tools, it doesn't route traffic through a proxy layer. It uses a privileged helper to apply conditions at the system level, similar to how NLC works but with a more accessible interface.
It lives in your menu bar, so you can see at a glance whether throttling is active and switch profiles instantly — no restarting required. Built-in profiles cover the common scenarios: 3G, Edge, DSL, LTE, 1 Mbps, and lossy WiFi. Custom profiles let you set exact values for download speed, upload speed, latency, packet loss, and DNS delay. The auto-disable timer turns off throttling after a set duration, which directly addresses one of NLC's biggest pain points.
It's a 1.7 MB native SwiftUI app — universal binary for Apple Silicon and Intel. No analytics, no telemetry.
If you already have Network Link Conditioner installed and only test occasionally, it gets the job done. If you need traffic inspection alongside network throttling on macOS, Charles or Proxyman give you both capabilities in one tool. If you want the fastest, simplest workflow for day-to-day testing — something you can toggle in two clicks from the menu bar — Network Throttler is built for exactly that.
You might also find this useful: How to Simulate a Slow Network on Mac for Testing