How to Force Safari to Re-Sync Bookmarks Between Mac and iOS

The other day I decided to organize my bookmarks in Safari on my Mac. After years and years of cruft building up, I had duplications galore, not to mention dozens (at least) of sites that were long defunct. (“How bad was it, really?” you might ask. Well, I still had a bookmarklet to add things to Google Reader, if that gives you any indication.)

So while I was watching TV one night, I went through and started pruning. And pruning. And pruning some more. At the end I had a nice, tidy group of bookmarks in a handful of sensible folders. They were even sort alphabetically with folders on top, thanks to SafariSort.

I felt very good about the whole thing.

Until I looked at Safari on my iPhone.

It was clear that Safari on my iPhone had been keeping up with the changes… to a point. But at some point there had been a breakdown of communications. If I made a change on the iPhone, it was changed on my Mac. If I made a change on my Mac, it was changed on my iPhone. So it was clear that iCloud was syncing current changes, but some changes hadn’t made it to the iPhone. The iPhone bookmarks were not alphabetized, and some of individual bookmarks were not in the right folders. The differences were significant enough that I didn’t want to try to fix it on my iPhone, especially since I had things how I wanted them on the Mac.

I tried logging into iCloud.com but that didn’t help: Safari bookmarks may be synced through iCloud, but they are not available on iCloud.com. This is unlike, say, your contacts and calendar, which are available on iCloud.com if you ever need to make changes and have them sent to all of your devices.

The Nuclear Option

Long-time iCloud users (especially those who remember back to the MobileMe era) will be familiar with “The Nuclear Option” for fixing syncing issues. The idea is fairly simple: backup the data that you know the be correct (or that you want to keep), then delete the data from iCloud. Wait for the deletion to sync to all of your devices, then restore the data, and wait for it to sync back across your devices.

Fortunately I no longer need to use The Nuclear Option very often. Several years ago it was a regular part of making sure that my contacts were the same on all of my devices, but iCloud sync has gotten a lot better and a lot more reliable lately. Still, desperate times call for desperate measures. So I copied my ~/Library/Safari/Bookmarks.plist file to Dropbox, made sure that Dropbox had finished syncing the file to its servers (just in case my computer exploded), and deleted all of my Safari bookmarks.

I checked my iPhone and iPad to confirm that the deletion had wiped out everything. It had. I added a new bookmark to make sure that would sync to them all. It did. (In hindsight, that may have been the fatal flaw in my plan, but at the time it seemed like a reasonable thing to check.)

I quit Safari on my Mac, replaced the new ~/Library/Safari/Bookmarks.plist with a copy from Dropbox, and launched Safari again. Then I waited for my iPhone and iPad to welcome the information from my Mac.

Instead, all of Safari’s bookmarks on my Mac disappeared, and were replaced with the one new bookmark that I had used for a sync test.

“Have you tried turning it off and back on again?”

Undaunted, I decided that there must be something in the “Bookmarks.plist” file that indicated that it was older than the information on my iPhone and iPad. So I turned off Safari syncing in iCloud on my Mac by going to System Preferences » iCloud » and unchecking “Safari” in the list of apps.

Then I made some changes to the bookmarks in Safari on my Mac (so that it would have newer information than my iOS devices), and quit Safari on the Mac to make sure that those changes were saved to disk.

Feeling pretty smart, I re-launched Safari on my Mac, and then turned iCloud sync back on.

Once again, all of my bookmarks on Safari on my Mac disappeared, and were replaced with the one bookmark from Safari on my iOS devices.

Well… drat.

(Note: “drat” might not have been the actual word that I used to express my feelings at that moment.)

Now what?

When in doubt, read the menu

The options for importing and exporting bookmarks for Safari on the Mac are pretty limited. (It has been my belief for a number of years that no one on the Safari team makes heavy use of bookmarks, because its feature-set is so limited.)

Exporting is limited to one fairly absurd option: exporting your bookmarks to an HTML file. “Who would ever use that?!?” I wondered to myself.

You might think that since Safari saves its bookmarks into a .plist file that you would be able to import from a .plist file. You would be wrong, however. The only two options available were to import from Google Chrome, or … import from a “Bookmarks HTML File…”

The last thing I wanted to do was get another browser involved, so I decided to try the Bookmarks HTML File option. Yes, the same option that I had mocked mere moments before. “Surely this won’t work right,” I thought to myself, even as I did it, and wondered what else I would try once it inevitably failed.

Again I disabled iCloud sync for Safari, quit Safari, copied the “Bookmarks.plist” file from Dropbox, and relaunched Safari.

Then I chose File » Export Bookmarks… and saved them to an HTML document.

I turned Safari’s iCloud sync back on, watched all of my bookmarks disappear and be replaced with that one test bookmark that I now so deeply regretted.

Then I chose File » Import From… » Bookmarks HTML File…

Moments later, Safari on my iPhone filled with all of my bookmarks, nicely arranged and alphabetized. The import process put all of its bookmarks into a sub-folder named something like “Imported 2018–10–17” but it was easy enough to drag them back to the top-level of my bookmarks, delete that one stupid bookmark I had used as a test, and then delete the (now empty) “Imported 2018–10–17” folder.

iPhone Screenshot of Safari Bookmarks

Doesn’t that look nice?

So, despite my jibes and misgivings, I have to give full credit it to whoever developed the export/import system for Safari’s HTML Bookmarks: I was wrong: it worked flawlessly, and it was actually much easier than what I had been trying (replacing the Bookmarks.plist file).

Managing bookmarks is one of those tasks which is still much easier on the Mac than on iOS, and I hope that it gets better in the future. But, in the meantime, if you find yourself with your Safari bookmarks out of sync between your iOS devices and Mac(s), now you know one way of fixing it. I would be very interested to know if I would have had an easier time if I had not saved the test bookmark… but not interested enough to go through it all again. Plus, the thing about sync glitches is that once you fix them, you can usually never be really sure whether or not you can replicate what caused the problem in the first place.