If you count yourself one of the lucky few that follow me on X (the social media app formerly known as Twitter), then you’ll have a slight idea what this post is about. If, by happenstance, you’re not one of my many adoring fans on said microblogging service, then this has the opportunity to come as a complete surprise. But the rumors are true! I’m in the middle of a project to move all my photos out of OneDrive and into iCloud Photos.

As I wrote on X, I got inspired after our recent trip to Vietnam (the travel blog of which is still coming, I can promise you). But it was not the wonderful country, the fantastic food or the OE experience (I realise that’s redundant, but it reads better!) that inspired this change. Oh no! It was my friend Jeremy. He is an avid photographer, not unlike myself, except he uses a real camera with different lenses and everything! Jeremy had this great way of sorting photos, rating the good ones and then aggressively culling the rest. It made me realize something – I was holding onto bad photos for the sake of “not losing any”. It also helped me realize that the purpose of photos is twofold – to store a memory or for the sake of the photo itself. One may even call the last reason “art”, but that just sounds too up oneself for my liking.

For spoilers, read my X thread, lol

So how does this relate to moving photos into iCloud photos? Well, you see, my system before was to store all my photos in OneDrive. All 120,000 of them. And the goal was to one day go through and delete the duplicates and curate them into a proper photo collection. Years and years of adding photos to this pile just ended up with more photos to one day sort. Well, that day has come. Or rather, it came six months ago when I was inspired by Jeremey. Oh, and the update to iOS16 helped. You see, Apple added a fantastic feature where it scans your photo library and finds the duplicates. Automatically! Now if that isn’t worth the price of an iPhone, I don’t know what is. But you know what’s surprising? It’s actually very good. Like very, very good!

Let me break it down quick. Using on device processing – so no info is ever sent to the cloud – it detects duplicate photos, and then shows you said duplicates in its own special album. And this is where the magic happens – if you decide to merge the photos, it copies the metadata across to the highest resolution photo and gets rid of the inferior copy. Do you have a JPG and a HEIC photo of the same thing? Goodbye JPG, hello HEIC and hello to the space savings that is a modern file format.

No longer will I be the one to hunt and search for duplicates as every morning, when I take my phone off charge, its done it for me. And since I started doing it this way. I have managed to get rid of 12,634 duplicate photos and 112 videos. Truly, we live in an age of wonder.

As to the other part of the why – OneDrive is not very good for photo management. When you treat photos as files, you lose a lot of what makes photos special. Apple have this way of creating memories with the photos – detecting when you’ve been on holiday and offering up a great short video with some very well-matched music to keep as a memory or share it with others. iCloud Photos also makes sharing albums and photos easy and intuitive. OneDrive offers a “on this day” each day, but you can tell that behind the scenes, all its doing is “if photo date = today’s day and month date, then show photo”.

Now onto the nitty gritty of the project. It comes with a few caveats, all of which are because of Apple. As fantastic as their eco-system is, they really have made some stupid decisions here. You see, Apple has Live Photos – those short videos with every photo to make the photo feel alive and add extra magic to the memory. When you transfer them to your Windows PC, you end up with a static HEIC photo and a 3 second MOV file. Do you really want all 10,000 of your photos to come with a video or only a select few? Hmm… And secondly, you cannot upload HEIC files to iCloud Photos.

But Kyle, you may ask, doesn’t Apple natively shoot all photos in HEIC format? Why yes they do. Surely then Apple should recognize their own file format and allow you to sync these files back to iCloud Photos? Not if you’re on Windows. “Sorry, you took the file out of iCloud. Now it’s your problem”, says Apple. This has led to a bunch of workarounds causing this project to go on way longer than I expected.

Let’s break down the steps I took, along with the mistakes I made along the way. Ready? Buckle up, because a few of the decisions I made at the time will make you cringe…

Firstly, I had an old external hard drive that was 1TB of photo library. I thought I had all these photos in OneDrive, but I wanted to make sure. So, I started there. What better way to make sure you aren’t copying duplicates to the cloud than by making sure it’s sorted? I have a fantastic program for this called PhotoMove. It scans the EXIF data of the photos and sorts them into folders for you. Very handy! But my photo names were all over the place! Thanks to, at some point, owning iPhones, Windows Mobile 6.5, Windows Phone and of course photos from real cameras. Time to standardize the naming!

I used Adobe Bridge and took a whole week to come up with a standard – IMG_DDMM.YYYY_SequenceNumber. Right, mistake number one. Some of you are already cringing, I can feel it. But in my defense, a small batch of photos I tested with, all came out fine. When I applied this naming standard to my external hard drive, which I’ll remind you, contained about 900 gigs of photos and videos, well then chaos broke out. Every single one of the file extensions was overwritten. Suddenly I had thousands of 2013_1234 files that no computer on earth knows what do with! Oh dear. Oh dear, indeed!

Luckily, I found a free program called TrID last month (that’s how long I have been battling with this colossal mistake). It scans the files and guesses what their extensions should be. Then it renames the extension and hopefully you have a fully functioning file back. I wrote a quick PowerShell script to go over my collection (in small batches this time) and checked the output to know what’s happened. I present to you the code below. Feel free to use it!

Get-ChildItem "<path_to_photos>" -recurse | ForEach-Object { $_.FullName } > "<path_to_photos>\ListAllFiles.txt"
Foreach ($1 in gci -recurse -name "<path_to_photos>") {
    
    $1 = "<path_to_photos>" + $1 ; <path_to_TrID_folder>\trid.exe $1 -ce | Out-File -FilePath "<path_to_photos>\Renamed_Photos.log" -Append
    
    } 

That sorted out the lost photos. Now getting the photos into iCloud Photos is another battle completely. Like I said, Apple does not allow you to upload HEIC and even some MOV files into iCloud Photos on Windows. That’s the important part – on Windows. If you own a Mac, iPhone or iPad, away you go laughing! Using the iCloud Photos app on Windows, you can store JPG, JPEG, Giff, Tiff, PNG files, and even confusingly, RAW photos, and it will happily sync them up to iCloud Photos to be viewable on your iPhone. It’s very slow, with it syncing just under 100 files a day on average. I don’t know why it’s so slow, but iCloud itself has not impressed with its speed on Windows. Actually, we all know why. Apple wants you to buy a Mac. That is the only reason behind this built-in limitation.

So, the next steps – separate all the files out into their type, and upload what we can from my PC, and upload the rest via my iPad. Surely things should be quick now? Oh, my sweet summer child. All the photos I have, I put into iCloud Drive. I synced this to my laptop and then began sorting the photos out based on their type. First, I settled on a new naming scheme and used Adobe Bridge to make sure all the files were named as <file_type>_YYMMDD_HHMMSS. For example, JPG files are JPG_230913_101309.jpg, MOV files are JPG_230913_101309.mov, and so on and so forth. Then I used PhotoMove to move the photos into their respective folder based on file type. This is important if I can sync JPG from my laptop, because then I can just copy this folder from iCloud Drive and into iCloud Photos on the PC.

All the other files that can’t sync via the PC are now going to take part in a fun little dance I call “playing on the iPad”. Using the files app on the iPad, I select the photos (you can’t select a folder because according to Apple, what are folders and who uses them anyways), and then drag the photos into the Photos app. This works pretty well, except when it doesn’t. Sometimes it will import all the photos but one. Does it tell you which one failed or why? Nope. You just get the message “No all items were imported”. Thanks Apple… Your error messages are as helpful as Microsoft’s.

And so that is where the project is at the moment. I am waiting for iCloud Drive to sync the photo changes I made, because apparently renaming photos that were synced to iCloud causes them to download and resync the entire file again, and then I can begin the import via the iPad. In light of this, I have ordered a 256 GB USB-C flash drive and will be using that, plus iCloud Drive to sync my photos into iCloud Photos on the iPad.

Once the import is complete, then Part 2 of the project begins – The Clean Up! In this part, I’ll be removing duplicates, checking metadata on photos and starting to curate my collection. This I can do from my phone, and I can use the time on the train to and from work every morning and afternoon to slowly work my way through this.

Part 3 will be the resync to OneDrive. As I wrote on X, iCloud Photos will be the boss. All the photo management will take place there. OneDrive will be the receiver of the curated collection as another form of backup. I am still trying to figure out how to keep these in sync, but I’ll cross that bridge when I get to it. If you have any ideas, please let me know!