macOS artificially restricts speeds to 100 Mbps over Ethernet

Overview

I have a 1 Gbps connection via a Cat 6 Ethernet cable to my MacBook Pro (16-inch, 2019). I am on macOS Big Sur 11.6 on the Intel Core i9 if that helps.

The Ethernet cables connect to the Thunderbolt port via a dock supporting a 1 Gbps networking and my router, switch and modem all support 1 Gbps speeds.

Getting speeds of 1 Gbps

I have tried this with two other docks/Ethernet to Thunderbolt ports and can reproduce the issue.

The issue

Whenever I restart the machine or I freshly connect the dock (or even just the CAT cable to the dock), I get the specified 1 Gbps speeds on my machine.

However, after a few minutes of usage (this varies between 5 - 30 minutes), the speeds drop to 118 Mbps / 118 Mbps.

If I disconnect and reconnect the dock or the network cable, it sometimes fixes the issue and sometimes it doesn't and my speed is limited to 118 Mbps (exact).

The My NetworkAdvanced setting on my Ethernet looks like this:

Network Hardware Settings

And it shows T1000 with duplex. I have tried all suggestions on various Apple forums like this one and they haven't worked for me.

It is like the Mac suddenly decides that it cannot support 1 Gbps and switches to 118 Mbps (why exact 118 Mbps though?).

Speedtest showing speeds of 118 Mbps

What setting can I check/change to fix this issue?

-- Update 01 --

As per some suggestions, I ran an iperf3 test between two MBPs on the local network and got about 940 Mbps.

However, I also got the Internet speedtest hitting 900 Mbps when I ran that next. I am not ruling out some local network issue. I'll rerun iPerf once I see my Internet speed drop to rule out any local network issues.

iPerf3 results

Checking for ISP caps via a secondary device over Wi-Fi

When I get low speeds on my Ethernet, switching to Wi-Fi or testing on my phone (over Wi-Fi), gives me substantially higher speeds - around 200 - 300 Mbps. So I doubt it is an ISP cap (possible, but unlikely).

-- Update 02 (and solution) --

It was not the Macbook but my router doing some QoS :|

After encountering iPerf3 showing 940 Mbps and my Speedtest reporting 118 Mbps, I started dismantling my network and connecting my Macbook at various levels right until I connected it directly to the modem. (Modem was 1 Gbps and router was 118 Mbps).

(I had also procured a Windows machine and connected it to the LAN which was also capped at 118 Mbps. That proved that it was not the Mac but something to do locally with my network.)

Turned out that my router (I have a TP-Link Deco) has a QoS setting which is set at 120 Mbps and when a certain number of devices connect / there is enough network activity, it restricts speeds to 120 Mbps. (Hence the 118 Mbps on speed tests).

The reason I was thrown off initially was because my phone was showing higher speeds when my Macbook was being throttled.

This turned out to be due to the fact that my phone was registered as a higher-priority device and the router skipped the QoS on it and allowed its full bandwidth.

TP Link Deco QoS Setting


MacOS does not come with such a restriction. There's no built-in feature that limits transfer speeds to 118 Mpbs (or similar value) after while.

You can build such a feature yourself using the included pf packet filter, but I assume you have not done so.

As your network settings show that the speed negotiated between the ethernet port on the dock/Mac and the switch shows as 1000Base-T then you do have a 1 Gbps link.

You're using an unreliable way of determining speeds by using SpeedTest. I would not recommend that for testing speeds on your local network. You could simply be throttled at the server or ISP - i.e. after you have spent an amount of bandwidth over a small period over time, the server or ISP put in place throttling to ensure that you do not overuse their bandwidth.

One of the best tools for local network speed testing is iPerf3. I would recommend installing that, and then measure the network speed between your Mac and another device on your local network. Then you can isolate the cause of the throttling to be outside your local network.


Check your network cable

If it's not a software based issue, it's likely hardware. I'd replace the network cable with a known good one. Even cables that look OK can have issues.