How to fix Apple Photos iCloud Photo Library upload using Network Link Conditioner

The Apple Photos application can cause very slow network performance. This post describes a workaround that can help.

When Apple released Yosemite OS X 10.10.3, they included the new Photos application. Photos replaces both iPhoto and Aperture. A new feature is the ability to upload all your photos to an iCloud Photo Library.

Photos iCloud Preferences

For small photo libraries, the upload probably goes smoothly, but for large libraries, the upload can effectively shut down your internet connection. Apple included a button to “Pause for one day” but that’s not really practical if you have 1,000s of photos to upload.

The following workaround will address the issue for many users until Apple makes a real fix. This fix limits the upload speed from your computer. It appears that some ISPs (mine is Comcast) heavily throttle your connection if your computer is hitting the limit. I’ve been running limited at 80% upload speed for days with no problem.

This fix is easy but a bit geeky. You will use Apple’s Network Link Conditioner system preference panel from the Apple Developer site to limit your network connection speed.

Network Link Conditioner (NLC) is used by application developers to test their apps. It allows them to simulate poor network conditions including slow network speed. It affects all network communication, not just Photos’ iCloud upload.

To set up NLC:

  1. Download the NLC system preference from the Apple Developer’s site. It is part of the Hardware IO Tools.
  2. Install the NLC system preference.
  3. Open the NLC system preference and create a new profile.
  4. Limit the Uplink speed. I tried both 60% and 80% of my available uplink bandwidth and they seemed to work OK.
  5. Set the Downlink limit to something at least close to your ISP’s bandwidth or above.

You’ll probably need to play around with the limits. Remember that it affects all of the network traffic in and out of the computer so something like a Time Capsule backup might go really slowly.

As an example, let’s say your ISP gives you 30Mbps download and 5Mbps upload. The upload speed is what we are trying to control. I’ve found that 70% works: 5Mbps X 7% = 3.5Mbps. Note that you cannot enter fractional speeds so you’ll need to enter 3500Kbps. The download speed may not be important but you might want to throttle as well. Leave the Packets Dropped and Delays as 0 since those settings simulate errors.

Network Link Conditioner Settings

Network Link Conditioner

Restarting the computer turns off Network Link Conditioner. If it’s icon is missing from the menubar, it is off.

WARNING: Watch out for Apple Photos uploading again!

A number of things can cause the network issue to occur, not just the initial upload. If your internet connection exhibits the problem, it will happen every time Apple Photos needs to upload photos.

Here’s a short list of times when Apple Photos will upload photos and may affect your network:

  1. The first time you convert to Apple Photos.
  2. Any time you add new photos.
  3. If you rebuild the Photos library. In this case, a substantial number of photos will be updated. This can be almost as bad as starting from scratch and can take days for a large library.
  4. If you restore the Photos library from a backup. As with #3, a substantial portion of your library may be updated and it can take days.

Bottom line: Any time you make a change to the Photos library, you may need to enable Network Link Conditioner to prevent your internet connection from shutting down.

35 thoughts on “How to fix Apple Photos iCloud Photo Library upload using Network Link Conditioner

  1. Hi Will, thank you so much for posting this fix! It’s made my network usable again while my 9,000+ photos and videos upload to the iCloud. One quick question if you monitor this… when I have the NLC on and set to 800 Kbps (my Internet provider caps me at 1 Mbps), my AppleTVs will not allow me to stream my local content from my iTunes library… I’m guessing that it is counting that traffic towards “upload” and since Photos is using so much of that bandwidth it chokes it off… is there a way to make local “uploads” exempt from NLC? I hope this makes sense, thank you for any advice you may have!

    Liked by 1 person

    1. Unfortunately, and as I understand NLC, it is not possible to only throttle part of the traffic. NLC is intended to be used to test apps by simulating a poor network. As such, it’s a sort of brute force “fix.” There used to be a way to throttle just part of the traffic in Mac OS X but that capability was removed in Yosemite.

      Until Apple fixes Photos, you’ll need to turn off Photos iCloud Upload and NLC when you need more local bandwidth.

      Like

      1. Thank you Will!! I have a question… rather than “throttle/limit” the bandwidth used by Photos, I would like to give the application full throttle/unlimited use of bandwidth overnight so I can upload my 60k photos quickly and efficiently. What would my NLC settings be for this circumstance? Thanks again!

        Like

      2. In the situation I describe, throttling actually gives you the best upload speed. Without throttling, you get a lower speed. It can take some trial and error to determine that speed.

        When you say “60K” I assume that’s a typo and you really mean 60G. 60K or even 60MB should upload quite quickly.

        Like

  2. Absolutely brilliant. Thank you so much for doing all the heavy lifting. This solved my upload problem (albeit until Apple fixes it). Every message board and “Apple Guru” would keep lecturing me on the basics of how a IP Network functions, as if I was an idiot. I kept telling people that there is a bug. My other services (Carbonite, etc), can easily do some type of QoS throttling, but when I start the Photos upload, my entire house would be down until I pressed “Pause for one day” on Photos preferences. Thank you again for your great troubleshooting.

    Like

  3. Thank you for a highly useful post. As Tej indicated, there is quite a bit of false information about the issue provided by Apple supporters. Whenever the icloud background process starts it will completely take over almost the entire bandwidth and bring a slow but reliable ADSL connection to its knees. I will see if installing this NLC throttler can at least get the household back to usable speeds while icloud does its thing. Too bad that this one process has to be so aggressive…

    Like

  4. Thanks for the tip. My entire home network would completely shut down for all devices with the Photos app uploading to iCloud. For someone who is not particularly tech savvy, this was an easy 5 minute work around for what was otherwise a very frustrating problem. I am surprised Apple has allowed this problem to persistfor so long. Thanks!

    Like

    1. While possible, it seems unlikely that the modem is the issue. A couple observations about the note by “Christopher P”:

      • The 100ms latency he sees is really poor and a general problem for him. I think it is unrelated to the iCloud Upload problem.
      • His observation that the problem seems to be associated with the Arris/Motorola modems is almost certainly because those are what Comcast (and probably others) rent. There are simply more of them out there.

      Although I don’t have any specific evidence, I believe the problem is related to throttling that providers use to limit things like BitTorrent. The fact that simply reducing the upload speed via Network Link Conditioner instantly fixes the issue seems to point to ISP throttling being the cause.

      The puzzling part is why Photos iCloud upload triggers it whereas something like a Dropbox upload does not.

      Like

      1. Thanks very much for your reply and observations. You saved me from a wasted modem purchase.

        I’m not having success making iCloud uploads faster by manipulating the Network Link Conditioner. Is it a matter of experimenting with different values?

        Thanks,

        André

        Like

      2. Do you think the throttling has anything to do with using Open DNS or some other such service? I’m testing it now. I stopped my Open DNS service and resumed my Photos upload without turning on the NLC and already the speeds have increased. The increase is not great from 135MB sent to 320MB sent (and inching upwards). What is the relevant information from Network Activities that indicates what’s going on? Is it Sent Bytes? Or Data sent/sec?

        Like

  5. Andre yes, you will need to experiment.

    Your network connection speed is set by your ISP. For example, a common speed for Comcast is 30mbps download and 5mbps upload. Step 1 is to make sure you know what those limits are. Once you know what those speeds are, the upload speed is the first one to experiment with. Start with at most 70% of that speed. If that does not help, set an even lower speed.

    Although it seems unlikely that OpenDNS would be involved, it’s not impossible and an interesting idea. The processes ISPs use to throttle is intentionally opaque and DNS lookups could possibly be used.

    Like

    1. Andre, I did a quick test using both OpenDNS and the default Comcast DNS. I could see no difference. It’s not easy to run a thorough test when the underlying cause is unknown but I would have expected to see a difference.

      Note that the throttling does not appear to kick in immediately. It seems to take a minute or two before the connection is throttled.

      Like

  6. Will: I’ve been running without OpenDNS for a few hours and I’m steady at about 1MBps. Nothing to cheer about but an improvement over the 135kbps I was getting over the last few days. I’m going to continue fiddling with NLC. What speeds are you getting when the trick works? Thanks again for all your help!

    Andre

    Like

  7. Thank you so much. I’m on vacation in the US and spending some time consolidating photos, etc. The house we’re renting has a Comcast 30/5 connection and it was taking literally days to upload photos to iCloud. I’ve just implemented a 3.5Mbit/s limit as you suggested, and I currently estimate it will take only 2 hours to finish the upload. That’s a massive win. Thank you again. Stupid Comcast.

    Like

  8. I too, was having the upload stalling issue with the Photos app when I tried to upload my largish library (60+gig) This was by far the biggest single improvement to my problem and got done in one day something I had struggled with for nearly a week!

    Like

    1. Same problem as you. I am not a Apple Developer and it appears to me that the “network link conditioner” preference can only be seen and downloaded if you are a Apple Developer. Is this correct? If so, do I need to sign up as an Apple developer just to get access? Thanks much.

      Like

  9. When I click on the Hardware IO Tools link above, it takes me to a page, but there is no link to download the tool. Am I missing something?

    Like

  10. If you have a decent router, you can also log into that and set QoS to limit upload bandwidth on the WAN connection. Same idea, know what you are paying for ie 5Mbs up, and then set your upload to 4.5Mbs 4500kbs. I have a Airport Extreme, so I dont have that option, so i guess I have to put back in my TPLink router.
    Crazy to me that this isn’t fixed yet, an Apple iCloud upload should see max upload and adjust accordingly (just like any real backup software). Keep in mind if you enable iCloud backup on you iOS devices (iphone ipad etc.) the same grinding halt in internet speeds happens.

    Like

    1. Thanks so much for this fix. MONTHS of trying to figure this out with my Macbook and tried a variety of fixes, needlessly deleting files. Never considered bandwidth until your article since iPhone and iPad had no issues. Great excuse to finally get my App Dev account. You have saved me so much frustration!!! This fix worked within minutes. You do have to babysit a bit and match your ISP settings but overall fantastic. I suggest using a service like http://whatismyipaddress.com/speed-test and lowering a few Mbps. Upload speed hovers around 79 mbps so I set to 70 mbps. I set the downlink to 10 mbps, normally mine is around 20 mbps.

      Like

  11. BTW I also took all other devices off the network I was using for the upload. and switched from WIFI to ethernet connection on my Mac.

    Like

  12. Quick question: Should I be able to see the difference in throttled upload speed within the Activity Monitor’s Network tab? I’ve tried changing the bandwidth within both NLC and my router’s QoS set to something super low (like 1kbps) and there doesn’t seem to be any change. Right now the Data sent/sec is showing me around 700-900kbps.

    Like

    1. Just to clarify, the only time I see a change in the Data sent/sec is when the router is saving (which I assume is because the connection is cut off momentarily).

      Like

    2. You should have seen a change in upload speed if you set it below your ISP’s maximum. If you set NLC to 1kbs upload max, then all outbound data should have been throttled at 1kbs and Activity Monitor should have reflected that.

      Like

      1. It doesn’t seem to matter what I set as the max. I have a 60mb/5mb connection and I guess the 700-900kbps upload speed will have to do. At this rate it’ll take over a week of continuous uploading to transfer everything to iCloud. Thanks for the information, though!

        Like

      2. NLC has been very reliable for me. If I set a max uplink speed of 3500kbs (as in the above example), Activity Monitor shows the upload throttled at that speed. I’m not sure where you should look to see why it is not working for you but you might want to try all the “standard” troubleshooting steps like resetting VRAM, resetting the SMC, reinstalling NLC, etc.

        Remember that NLC throttles all network traffic for your Mac. As such, you might want to try tests using your local network so that you remove the modem and ISP from any testing.

        Like

  13. How on earth has apple not done anything abiut thid, makes me think about android in the future. Ridiculous. Happened before a few months ago, photos hadnt uploaded because phone was full up, took ages to find out why then i delted some things and it uploaded fine. No killing my home network and no hanging and not uploading. 2017 and it happens again, this time though inhave made room on my phone and still the 30 photos 2 short vids, just wnt upload. First it was killing the internet then it killed my routers, both of them, i had to do a hard reset. Wtf apple.

    Like

  14. For anyone coming here and finding that Network Link Conditioner isn’t working, then make sure you download the latest Xcode version.

    As of writing this comment, you’ll to download and open “Additional Tools for Xcode 8.2” from https://developer.apple.com/download/more/ and then once the package is open select Hardware and then install the NLC preference pane from there.

    Like

Leave a comment