External drives save the world!
An application migration and linking tool designed specifically for macOS. Easily migrate large applications to external storage while maintaining seamless system functionality.
Mac's built-in storage space is extremely precious. AppPorts allows you to move applications from your /Applications directory to an external drive (SSD, SD Card, or NAS) with a single click, while keeping a tiny launcher stub in the original location.
To macOS, the app still "exists" locally, allowing you to launch it as usual, but the actual storage is on the external drive. The local stub is so small it's negligible — and Finder shows no shortcut arrow.
If you encounter this error (and macOS suggests moving it to the Trash) when opening the app, it is because the application is not signed with an Apple Developer ID. (Note: The command below assumes you have moved AppPorts to the /Applications folder) To fix this, please run the following command in Terminal to remove the quarantine attribute:
xattr -rd com.apple.quarantine /Applications/AppPorts.app| Welcome Screen | Main Interface |
|---|---|
![]() |
![]() |
| Dark Mode | Language Switching |
|---|---|
![]() |
![]() |
- 📦 Arrow-Free Migration: One-click migration of multi-gigabyte applications to external storage. A tiny launcher stub stays locally — Finder shows no shortcut arrow, Launchpad and macOS App Menu work perfectly.
- 🛡️ Auto-Update Protection: Automatically detects self-updating apps (Sparkle, Electron, Chrome, etc.) and offers a locked migration option. Locked apps on the external drive are protected from being deleted or overwritten by auto-updaters.
- ✍️ Code Signature Management: Re-sign migrated apps that show "damaged" warnings, or restore their original signatures. Supports automatic re-signing after data directory migration.
- 🔴 Orphaned Link Detection: If the external drive is disconnected or an app is deleted, the app list shows a red "Orphaned Link" badge so you can clean up the broken link.
- 🍎 macOS 15.1+ App Store Support: On macOS 15.1+, App Store apps can be installed directly to the external drive, and App Store can update them in-place without migrating back.
- ↩️ Restore Anytime: One-click restore moves the app back to local storage and removes the link automatically. Interrupted migrations are automatically recovered.
- 📊 Data Directory Management: Migrate app data folders (
~/Library/subfolders, dot-folders like~/.npm) to external storage. Tree view with grouped cards, search, and sorting. - 🎨 Modern UI: Native SwiftUI, full Dark Mode support, 20+ languages.
- ♿️ Accessibility: VoiceOver-friendly with clear semantic labels and a Braille language option.
- 🌍 Global Ready: 20+ languages including English, Chinese, Japanese, Korean, German, French, Spanish, Italian, Portuguese, Russian, Arabic, Hindi, Vietnamese, Thai, Turkish, Dutch, Polish, Indonesian, Esperanto, Braille, and 👽 Martian.
AppPorts uses a unique Stub Portal technology — a tiny launcher shell that opens the real app on the external drive. This gives you the best of both worlds: the app looks and behaves as if it's still installed locally, but the storage is on the external drive.
| Feature | AppPorts (Stub Portal) | Traditional Symlink |
|---|---|---|
| Finder Icon | ✅ Native (No Arrow) | ❌ Arrow Overlay |
| Launchpad | ✅ Perfect | |
| App Menu (macOS 26) | ✅ Perfect | ❌ Unsupported |
| Auto-Update Protection | ✅ Lock Mode | ❌ None |
| Signature Management | ✅ Built-in | ❌ None |
| Orphaned Link Detection | ✅ Automatic | ❌ None |
AppPorts picks the best migration strategy based on the app's type and behavior:
| App Type | Strategy | Default | Notes |
|---|---|---|---|
| Native Mac apps | Stub Portal | ✅ Enabled | Tiny launcher shell locally, no arrow icon |
| Self-updating apps (Sparkle, Electron, etc.) | Stub Portal + Lock | ✅ Enabled | External app is locked (uchg) to prevent auto-updater damage |
| iPhone/iPad apps | iOS Stub Portal | ✅ Enabled | Icon extracted from iOS app bundle |
| Mac App Store apps | Native on macOS 15.1+ | ✅ Auto on 15.1+ | App Store can update directly on external drive |
| App suites (Office, Adobe, etc.) | Folder symlink | ✅ Enabled | Entire folder migrated as a unit |
| System apps | Blocked | ❌ | Protected from migration |
| Running apps | Blocked | ❌ | Quit the app first |
| Already linked apps | Blocked | ❌ | Prevents double-linking |
- macOS 12.0 (Monterey) or newer.
Please visit the official website or the Releases page to download the latest AppPorts.dmg.
AppPorts requires Full Disk Access to read and modify /Applications.
- Open System Settings → Privacy & Security.
- Select Full Disk Access.
- Click the
+button, add AppPorts, and turn on the toggle. - Relaunch AppPorts.
(The app includes an in-app guide that can open Settings directly)
git clone https://github.com/wzh4869/AppPorts.gitOpen the project with Xcode and build.
We welcome Issues and Pull Requests! If you find translation errors or have suggestions for new features, please let us know.
-
LazyMount-Mac: Easily expand Mac storage space — Automatically mount SMB shares and cloud storage at startup, no manual operation required.
The perfect companion for AppPorts. LazyMount connects the storage, AppPorts handles the applications.
- 🎮 Game Libraries — Store Steam/Epic games on a NAS, play them like local installs
- 💾 Time Machine Backups — Back up to a remote server automatically
- 🎬 Media Libraries — Access your movie/music collection stored on a home server
- 📁 Project Archives — Keep large files on cheaper storage, access them on-demand
- ☁️ Cloud Storage — Mount Google Drive, Dropbox, or any rclone-supported service as a local folder
This project is open-source under the Apache License 2.0.



