Ever wanted to walk away from your desk but keep listening to that podcast, meeting, or playlist playing on your Mac? Here's how to stream your MacBook's audio to your iPhone over WiFi — no paid apps, no iPhone app install. Just Safari.
What you'll get: Your Mac's audio playing on your iPhone through AirPods/earphones. Walk around the house, go to the kitchen, lie on your bed — keep listening.
Time to set up: ~10 minutes (one time). After that, it's a one-command start.
Mac Audio → BlackHole (virtual cable) → ffmpeg (streams over WiFi) → iPhone Safari
BlackHole is a free virtual audio driver that captures your Mac's sound. ffmpeg converts it to an MP3 stream on your local network. Your iPhone opens that stream in Safari like a radio station.
Open Terminal on your Mac (Cmd + Space → type "Terminal") and run these two commands:
brew install ffmpegbrew install --cask blackhole-2chThe second command will ask for your Mac password. Type it (you won't see characters — that's normal) and press Enter.
Don't have Homebrew? Install it first with:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
BlackHole installs a system audio driver. You need to restart for it to show up.
This step makes your Mac play audio through your speakers AND BlackHole at the same time (so you can hear it locally while also streaming).
- Open Audio MIDI Setup (Cmd + Space → type "Audio MIDI Setup")
- Click the + button at the bottom-left
- Select Create Multi-Output Device
- In the right panel, check both:
- ✅ Your main speakers (e.g., "MacBook Pro Speakers" or "External Headphones")
- ✅ BlackHole 2ch
- Right-click the new "Multi-Output Device" in the left sidebar → Use This Device For Sound Output
That's it for setup. You only do this once.
Tip: If you want to go back to normal audio later, just go to System Settings → Sound → Output and pick your regular speakers.
Save this script somewhere handy (like your Desktop). It does everything automatically — finds your IP, finds BlackHole, starts the stream, and tells you the URL.
Open Terminal and run:
cat << 'EOF' > ~/Desktop/stream-to-iphone.sh
#!/bin/bash
RED='\033[0;31m'; GREEN='\033[0;32m'
YELLOW='\033[1;33m'; CYAN='\033[0;36m'
BOLD='\033[1m'; NC='\033[0m'
echo ""
echo -e "${CYAN}${BOLD}🎧 Mac Audio → iPhone${NC}"
echo ""
# Check BlackHole
if ! ls /Library/Audio/Plug-Ins/HAL/ 2>/dev/null | grep -qi "blackhole"; then
echo -e "${RED}BlackHole not found. Install it:${NC}"
echo " brew install --cask blackhole-2ch"
echo " Then reboot."
exit 1
fi
# Check ffmpeg
if ! command -v ffmpeg &>/dev/null; then
echo -e "${RED}ffmpeg not found. Install it:${NC}"
echo " brew install ffmpeg"
exit 1
fi
# Get local IP
IP=$(ipconfig getifaddr en0 2>/dev/null || ipconfig getifaddr en1 2>/dev/null || echo "")
if [ -z "$IP" ]; then
echo -e "${RED}Not on WiFi. Connect to the same network as your iPhone.${NC}"
exit 1
fi
PORT=8888
# Find BlackHole device
DEVS=$(ffmpeg -f avfoundation -list_devices true -i "" 2>&1 || true)
BH=$(echo "$DEVS" | grep -i "blackhole" | head -1 | sed -n 's/.*\[\([0-9]*\)\].*/\1/p')
if [ -z "$BH" ]; then
echo -e "${RED}BlackHole audio device not found. Reboot after installing.${NC}"
exit 1
fi
# Kill old stream if any
pkill -f "ffmpeg.*listen 1" 2>/dev/null; sleep 1
echo -e "${GREEN}${BOLD}Stream ready!${NC}"
echo ""
echo -e " Open this URL on your ${BOLD}iPhone Safari${NC}:"
echo ""
echo -e " ${BOLD}${GREEN}http://${IP}:${PORT}/stream.mp3${NC}"
echo ""
echo -e " ${CYAN}• iPhone must be on the same WiFi as your Mac${NC}"
echo -e " ${CYAN}• Connect AirPods/earphones to your iPhone${NC}"
echo -e " ${CYAN}• ~1-2 second delay (fine for music/podcasts)${NC}"
echo ""
echo -e " ${YELLOW}Press Ctrl+C to stop.${NC}"
echo ""
ffmpeg -f avfoundation -i ":${BH}" \
-acodec libmp3lame -ab 192k -ar 44100 -ac 2 \
-content_type audio/mpeg \
-f mp3 -listen 1 \
"http://0.0.0.0:${PORT}/stream.mp3" 2>/dev/null
EOF
chmod +x ~/Desktop/stream-to-iphone.sh
echo "✅ Script saved to ~/Desktop/stream-to-iphone.sh"~/Desktop/stream-to-iphone.shIt will print something like:
🎧 Mac Audio → iPhone
Stream ready!
Open this URL on your iPhone Safari:
http://192.168.1.42:8888/stream.mp3
• iPhone must be on the same WiFi as your Mac
• Connect AirPods/earphones to your iPhone
• ~1-2 second delay (fine for music/podcasts)
Press Ctrl+C to stop.
Open that URL on your iPhone in Safari. Done. You're streaming.
After the one-time setup, your daily workflow is:
- Make sure "Multi-Output Device" is your sound output (check in menu bar or System Settings → Sound)
- Run
~/Desktop/stream-to-iphone.shin Terminal - Open the URL it gives you in iPhone Safari
- Listen with your AirPods/earphones on iPhone
- Ctrl+C in Terminal when done
Q: Can I use this for video calls / meetings? A: Yes, but there's a 1-2 second audio delay. Fine for listening in, not for actively participating.
Q: Does it work with AirPods connected to iPhone? A: Yes. Connect AirPods to your iPhone (not Mac), then open the stream URL.
Q: What about Bluetooth range? A: This uses WiFi, not Bluetooth. As long as your iPhone has WiFi signal, you can be anywhere in your house.
Q: Can multiple iPhones listen? A: The basic setup supports one listener. For multiple, you'd need a different streaming approach.
Q: How do I go back to normal audio? A: System Settings → Sound → Output → select your regular speakers instead of Multi-Output Device.
Q: Does this work on Intel Macs? A: Yes. BlackHole and ffmpeg both support Intel and Apple Silicon.
| Tool | What it does | Size | Install |
|---|---|---|---|
| BlackHole 2ch | Virtual audio cable (captures system sound) | Tiny (~1MB) | brew install --cask blackhole-2ch |
| ffmpeg | Converts & streams audio over HTTP | ~53MB | brew install ffmpeg |
Both are free, open-source, and widely trusted.
That's it. Your Mac is now a radio station and your iPhone is the receiver. Enjoy walking around while staying plugged in.