AirPlay screen mirroring receiver for macOS. Mirror your iPhone or iPad screen to your Mac — no Apple TV required.
- Screen Mirroring — Receive AirPlay mirroring from any iPhone or iPad
- Audio — Full audio passthrough with adjustable volume control
- Rotation — Seamlessly handles device rotation and lock/unlock
- Low Latency — Hardware-accelerated H.264 decoding via VideoToolbox
- Menu Bar — Runs quietly in the menu bar with live connection status
- Auto-Update — Built-in update checking via Sparkle
- Secure — Cryptographic identity stored in macOS Keychain; full AirPlay pairing and FairPlay DRM support
Download the latest .dmg from GitHub Releases.
- Open the
.dmgand drag VirtualMirror to your Applications folder - Launch VirtualMirror — it will check for updates automatically
VirtualMirror is signed and notarized by Apple. If macOS asks to confirm, right-click the app and select Open.
- Launch VirtualMirror — it appears in the menu bar and Dock
- On your iPhone or iPad, open Control Center
- Tap Screen Mirroring
- Select VirtualMirror
- Your device screen appears in the VirtualMirror window
Hover over the mirroring window to reveal the volume slider. Click the speaker icon to mute/unmute.
The menu bar icon lists your live receivers and their status. Click it for:
- New Receiver (⌘N) — Open another receiver window (mirror multiple devices at once)
- Command Palette… (⌘K) — Searchable, keyboard-driven access to every action
- Check for Updates… — Manually check for a new version
- VirtualMirror Help — Built-in guide: mirroring, audio, command palette, troubleshooting, privacy
- Send Feedback… — Report a bug or request a feature (opens a pre-filled GitHub issue)
- About VirtualMirror… — Version info, credits, and support links
Each window is its own AirPlay receiver with its own name. Open more with New Receiver (⌘N) to mirror several iPhones or iPads side by side — each shows up separately in the device's Screen Mirroring list. Rename a receiver from the Command Palette (⌘K → Rename This Receiver…).
The in-app VirtualMirror Help (menu bar → VirtualMirror Help) covers all of this with step-by-step guidance.
If the macOS built-in AirPlay Receiver is enabled, your iPhone may connect to it instead of VirtualMirror. To avoid confusion, you can disable it:
System Settings > General > AirDrop & Handoff > AirPlay Receiver — turn it off.
- Make sure your iPhone/iPad and Mac are on the same Wi-Fi network
- Restart VirtualMirror from the menu bar (Quit, then relaunch)
- Check that no firewall is blocking port 47000
The first time you run it, macOS may ask VirtualMirror for permission to find devices on your local network. Allow it — AirPlay discovery needs it. Each receiver generates a fresh pairing identity in memory; nothing is persisted.
Requires macOS 14.0+ and Xcode 15+.
git clone https://github.com/souriscloud/VirtualMirror.git
cd VirtualMirror
open VirtualMirror.xcodeprojBuild and run from Xcode (Cmd+R), or from the command line:
xcodebuild build -project VirtualMirror.xcodeproj -scheme VirtualMirror -configuration DebugVirtualMirror is free and open source, built by one person.
- 🐛 Found a bug or have an idea? Use Send Feedback… in the menu bar (it opens a pre-filled GitHub issue), or file one directly at GitHub Issues.
- ☕ Like the app? Support it on Ko-fi — it keeps the project going.
VirtualMirror builds on the work of several open-source projects:
- playfair by EstebanKubata — FairPlay DRM reverse-engineering (GPL)
- UxPlay by antimof — AirPlay mirror server for Unix (GPL-3.0)
- shairplay by Juho Vaha-Herttua — AirPlay audio server (LGPL-2.1)
- RPiPlay by FD- — AirPlay mirror server for Raspberry Pi (GPL-3.0)
See ACKNOWLEDGMENTS.md for full details.
VirtualMirror is licensed under the GNU General Public License v3.0.
Copyright 2026 Souris.CLOUD — Made by Souris