Sweepfor Mac

Mac maintenance

Migration Assistant Slow on Mac? Here's the Fix

Migration Assistant stuck for hours on your Mac? Find the actual cause — Wi-Fi vs Thunderbolt, file types that bog it down, and how to speed things up.

8 min read

You started Migration Assistant last night thinking you’d be set up by morning. It’s now 2pm the next day and the bar shows “About 4 hours remaining.” It’s been showing that for the last six hours.

Migration Assistant’s progress estimates are infamously wrong. The actual cause of the slowness is one of about five specific things. Here’s how to identify and fix yours.

Find out what’s actually happening

Migration Assistant shows a progress bar but no detail. To see what it’s actually doing, open Activity Monitor on the destination Mac and look for these processes:

  • migrationtool — the actual migration daemon
  • rsync — file copy engine
  • mds_stores, mdworker — Spotlight indexing the new files

If mds_stores is at 100% CPU and migrationtool is idle, Spotlight is the bottleneck. The migration’s done copying; it’s now indexing what was copied. That can take 1-3 hours on its own.

If migrationtool is busy and Activity Monitor’s Network tab shows constant traffic, the copy is genuinely in progress.

If everything’s idle and the progress bar isn’t moving, the migration is stuck on a specific file or has hit an error.

Check the system log for migration-specific events:

log show --predicate 'process == "migrationtool"' --last 1h --info

You’ll usually see what file or stage it’s on.

The Wi-Fi problem

If you’re migrating over Wi-Fi, that’s almost certainly your bottleneck.

Real-world throughput comparison for 500 GB of mixed files:

  • Thunderbolt 3/4 cable: ~2 hours
  • Wired Ethernet (gigabit, both ends): ~4 hours
  • USB-C with Time Machine backup: ~3 hours
  • Wi-Fi 6 (excellent conditions): ~8 hours
  • Wi-Fi 5 / older: 12+ hours, with frequent drops

Wi-Fi migrations also fail more often. Each drop forces Migration Assistant to retry the section it was on, which adds time on top of the raw transfer.

If you’re more than 4 hours into a Wi-Fi migration with no end in sight, cancel it (yes, really) and switch to a wired method. The cancel is safe — Migration Assistant doesn’t corrupt the destination on cancel; it just leaves a partial copy you can throw out. Erase the destination user, restart Migration Assistant over Thunderbolt or via a Time Machine backup on a USB drive.

A Thunderbolt 4 cable costs $30. The 6-hour saving is worth it.

Clean before you migrateDon’t carry junk to your new Mac. Sweep clears it first. Try Sweep free →

File types that bog Migration Assistant down

Some types of files are slow to migrate even on a fast connection:

  • Photos library — millions of small thumbnail and metadata files. A 200 GB Photos library can take 90 minutes to copy on its own.
  • Mail~/Library/Mail has tens of thousands of small message files. Painful to migrate.
  • Xcode iOS Simulators~/Library/Developer/CoreSimulator can be 30+ GB of small files
  • Node modulesnode_modules folders have huge file counts; rsync slows to a crawl
  • VM disk images — typically large but single-file, so usually fast unless they’re huge
  • Music and Movies — usually fast (large files, sequential copy)

If your migration is slow specifically because you have a giant Photos library or a directory full of node_modules, there’s not much to do mid-migration. Plan ahead next time.

What to do mid-migration if it’s stuck

If progress hasn’t moved in 30+ minutes:

  1. Don’t panic and don’t cancel immediately. Look at Activity Monitor first.
  2. Check if mds_stores is busy. If yes, Spotlight is indexing. Wait.
  3. Check disk activity in Activity Monitor’s Disk tab. If there’s heavy disk write, the copy is happening even if the bar doesn’t move.
  4. Check the source Mac. If it’s gone to sleep, that pauses the migration. Wake it up.
  5. Check both Macs are still on power. A MacBook on battery can throttle CPU and slow migration significantly.

If everything’s idle and there’s no disk or network activity for 30+ minutes, it’s stuck. Your options:

  • Wait another hour. Sometimes Migration Assistant recovers from a stall.
  • Cancel and restart. Open Applications → Utilities → Migration Assistant on the destination, cancel, and start over with a different method (Time Machine backup vs. direct, for example).

Don’t force-quit the migration process from Activity Monitor mid-stream. That can leave the destination user in a weird half-migrated state. Use the in-app cancel.

Tip: If you cancel a migration, the partial user account on the destination usually needs to be deleted before you can start over. Boot to a different admin user, then `System Settings → Users & Groups`, click the (i) next to the failed user, and delete.

Why migrations from Time Machine are different

Migrating from a Time Machine backup is often faster than Mac-to-Mac:

  • The data is already on a fast local drive
  • No network involved
  • Migration Assistant reads sequentially rather than walking a live file system

For 500 GB:

  • Time Machine on USB-C SSD → new Mac: ~2-3 hours
  • Time Machine on USB 3 HDD → new Mac: ~5-6 hours
  • Time Machine on Wi-Fi NAS → new Mac: 8+ hours

Wired SSD-to-Mac migration is the fastest reliable method. If you have a Time Machine backup on a USB-C SSD, plug it directly into the new Mac and use that as the migration source.

Sleep settings during migration

A common cause of stalled migrations: a MacBook lid closes mid-migration. By default, closing the lid puts the Mac to sleep, which pauses Migration Assistant.

To prevent this, on both Macs:

  1. Plug into power (closed-lid display only works with power)
  2. System Settings → Lock Screen
  3. Set “Turn display off when inactive” to Never (during migration only)
  4. Or use Terminal: caffeinate -d keeps the display awake until you Ctrl+C

For Mac mini or iMac, this isn’t an issue. For MacBooks, it’s the most common reason a “30 minutes remaining” migration mysteriously becomes 5 hours.

When the source Mac is the bottleneck

Sometimes the source — your old Mac — is what’s slow. Migration Assistant has to read every file from the source. If the source has:

  • A failing SSD with read errors
  • Spotlight indexing in the background
  • iCloud Drive download-on-demand files

…it’ll be slow regardless of the destination’s speed.

To check:

  1. On the source, open Disk Utility and run First Aid on the boot drive. Errors mean replace the SSD before doing anything else.
  2. Check Activity Monitor on the source for mds, mdworker, or bird (iCloud) processes consuming CPU.
  3. In iCloud Drive settings on the source, check whether files are downloaded locally. “Optimize Mac Storage” means some files have to download during migration, which adds time.

Disable iCloud Optimize Mac Storage temporarily before migrating, let everything download, then start the migration. This trades disk space for migration speed.

Skip the manual huntSweep clears the system caches, logs, and old installers a backup can’t reach. Download Sweep free →

A leaner source migrates faster

This is the best speedup most people skip. Migration Assistant copies whatever’s on the source. If your old Mac has 600 GB of stuff, it copies 600 GB. If it has 350 GB, it copies 350 GB.

Most Macs after 3+ years have 30-60 GB of cruft that has zero value:

  • Caches that get rebuilt anyway
  • Old installer disk images in Downloads
  • App leftovers from uninstalled software
  • Localizations for languages you don’t read
  • iOS device backups for phones you don’t own
  • Local APFS snapshots from disconnected backups

Cleaning the source before migration cuts time proportionally. Sweep handles those categories specifically — it’s the broom for the corners Time Machine and Migration Assistant don’t sweep.

It doesn’t replace your backup tools. Time Machine is your version-history safety net. Sweep just makes sure you’re not migrating 60 GB of files that have no business on the new Mac.

After the migration: speed checks

Once the migration finishes, the new Mac usually goes through a Spotlight reindex that takes 1-3 hours. During that window, the Mac feels slow. That’s normal. Wait it out.

To confirm Spotlight is the cause:

mdutil -s /

If indexing is in progress, you’ll see “Indexing enabled. Indexing in progress.”

You can also force a reindex if Spotlight seems stuck:

sudo mdutil -E /

This erases the Spotlight database and rebuilds it. Ironically, this is sometimes faster than letting a slow indexing job finish on its own.

When to give up and start fresh

If you’ve cancelled a migration twice and the third attempt is also stalling, accept that something’s broken and start clean:

  1. On the new Mac, sign out of any iCloud sync that started during the failed migration
  2. Erase the boot drive and reinstall macOS from Recovery
  3. Don’t run Migration Assistant during Setup Assistant
  4. Manually copy critical folders from the source via USB drive or AirDrop
  5. Reinstall apps cleanly

This is the nuclear option but takes less time than three failed migrations. You also get a genuinely clean new Mac instead of a half-migrated one.

A working migration is faster than fighting a broken one. Sometimes the right move is starting over with a different approach.

Realistic time expectations

For planning purposes:

  • 256 GB Mac to 256 GB Mac, Thunderbolt cable: 1.5-2 hours
  • 512 GB Mac to 1 TB Mac, Thunderbolt cable: 3-4 hours
  • 1 TB heavy-use Mac to new Mac, USB-C SSD Time Machine source: 4-6 hours
  • Anything over Wi-Fi: 8+ hours, possibly with drops

Add 30-60 minutes for post-migration Spotlight indexing on the destination. Add another 30-60 minutes for “I’m signed out of everything” cleanup.

A complete Mac migration is a half-day project, not a 30-minute one. Plan for it, do it on a weekend, and don’t try to use either Mac for anything else while it’s running. The migration that goes well is the one you didn’t try to interrupt.

← Back to all guides