Guides / Recording streams, music and video sound
How to record internet radio on a Mac
Tested on macOS 26.4.1 (Tahoe), Apple M3 Max, 3 Sept 2026. Updated 2026-09-03.
You can record internet radio on a Mac in two ways: capture whatever the Mac plays (any station page, TuneIn, a station app) or, if you know the stream URL, save the stream directly with ffmpeg -c copy without re-encoding. Radio streams carry no DRM, so both work. The real problems are length and sleep: a 3-hour show is 0.42 GB as MP3 320 kbps or 2.9 GB as 24-bit WAV, and the Mac must not go to sleep.
How do I record internet radio on a Mac?
Most stations play through a web page or a small app, and both go through the ordinary Core Audio output. A system-audio capture through ScreenCaptureKit picks them up without a virtual driver.
- Open the station in Safari, Chrome, TuneIn or the station's own app and confirm it plays.
- In AirCheck, choose System Audio. Grant Screen & System Audio Recording permission the first time.
- Set the export format now, not later: MP3 320 for a show you will listen to, WAV 16-bit if you plan to edit clips out of it.
- Turn on a Focus so mail and message sounds stay out of the file.
- Press record. Come back after the show and press stop. The file lands in ~/Music/AirCheck, named with the start time.
If you need the station isolated from other apps, a per-app tool like Piezo ($29) or the one-app-only guide is the answer.
Can I save the radio stream directly without playing it?
Yes, if you can find the stream URL (many station pages expose it in their player, and directories list it). ffmpeg then writes the stream to disk exactly as sent, no decoding, no re-encoding, and your Mac can stay muted or do other things. With ffmpeg installed (brew install ffmpeg):
ffmpeg -i "https://example.org/live.aac" -t 3600 -c copy show.aac
-c copy is documented by ffmpeg as the special codec value "to indicate that the stream is not to be re-encoded". -t 3600 stops after one hour; drop it to run until you press Control-C. Match the extension to the stream codec (.aac, .mp3, .ogg); ffprobe on the URL tells you which.
Advantages over capture: the file is the station's own bitstream, no generation loss, and you can start it from a launchd job or a cron entry at 20:00 every Saturday. Disadvantages: you need the URL, some streams sit behind session tokens and change hourly. Capture is the fallback when the URL route fails, and it is the only route for a station that only plays inside its own app.
What is an aircheck, and how is it different from a stream rip?
In radio, an aircheck is a recording of what actually went out. Wikipedia's definition: "Aircheck is the radio industry term for a recording that has dual meanings: a demonstration to show off the talent of an announcer or programmer to a prospective employer, and an archival record of content broadcast over-the-air made for legal archiving purposes."
That is why the app is called AirCheck: it records what is playing, when it is playing, as one continuous take, and does nothing else. A stream rip is the ffmpeg route above, a copy of the bitstream. An aircheck of your own show is the capture route: your voice, the songs, the jingles, the exact levels the listener heard.
If you are the presenter, record the studio feed with an audio interface instead of the web stream; the stream adds encoding loss and a delay. The interface recording guide covers the hardware side.
How do you keep a 3-hour radio recording from stopping?
There is no length limit in AirCheck; the longest take in the author's library is 7,550 seconds (2 h 5 min), 2.07 GB at 24-bit 48 kHz. Disk space and sleep are the two ceilings.
Disk. Measured on 45 real recordings: 24-bit 48 kHz uses 0.97 GB per hour, 16-bit 48 kHz 0.64 GB, MP3 320 kbps 0.14 GB. A 3-hour show is 2.9 GB, 1.9 GB or 0.42 GB.
Sleep. Display sleep is fine; the system-audio capture keeps running with the screen dark. Full system sleep stops everything. On a MacBook, plug in and keep the lid open, or run caffeinate -i in Terminal for the duration. The sleep fix page has the settings.
Stream stalls. Radio streams drop for a few seconds now and then. AirCheck's watchdog checks every 2 seconds; if no audio has arrived for 5 seconds it restarts capture into the same file and shows "Audio input stalled, reconnecting". You get a gap where the stream was down, not a second file and not a stopped recording.
Is it legal to record radio for personal use?
Not legal advice. Recording a broadcast for your own later listening (time-shifting) is treated differently from redistributing it, and the rules differ by country; some European countries have a private-copy allowance funded by levies, others are stricter. Every broadcaster also has terms of use that usually restrict copying to personal use. Read the station's terms before archiving a whole season, and never republish a recording or the music in it. If you are the presenter, ask the station for the aircheck or the studio feed; most give it to their own staff. In practice that means: keep the file for yourself, do not upload it, and do not cut songs out of it for a DJ set. Stations that offer podcasts or a catch-up player usually prefer you use those, and they are the copies the broadcaster has cleared.
Recording a 3-hour internet radio show on a Mac
| Method | Unattended / scheduled? | Re-encodes the stream? | Works with the Mac muted? | Needs a stream URL? | Size for 3 hours | Cost |
|---|---|---|---|---|---|---|
| ffmpeg -c copy on the stream URL | Yes (launchd or cron) | No | Yes | Yes | About the stream bitrate, e.g. 0.17 GB at 128 kbps | Free |
| System audio capture (AirCheck) | No, manual start and stop | Yes, once at export | Yes (own playback excluded, output level irrelevant) | No | 0.42 GB MP3 320, 1.9 GB WAV 16-bit, 2.9 GB WAV 24-bit | $39 |
| Audio Hijack | Yes (built-in scheduling) | Yes | Yes | No | Depends on chosen format | $69 |
| QuickTime Player | No | n/a | No: it records the microphone only | No | n/a | Free |
3-hour sizes computed from AirCheck's measured GB per hour; the ffmpeg size is arithmetic on a 128 kbps stream, not a measurement.
Where AirCheck fits
AirCheck ($39 one-off, macOS 14 or newer) is built for exactly this shape of job: press record, walk away for three hours, come back to one file. It captures system audio without a virtual driver, has no length limit, restarts into the same file after a stream stall, and keeps the take when a USB interface is unplugged and replugged. Export to MP3 320 keeps a 3-hour show at 0.42 GB. It fits archiving your own show or a station you follow.
When you do not need it: If you have the stream URL and want a weekly recording with nobody at the Mac, ffmpeg with -c copy in a launchd job is free, lossless and scheduled. If you need scheduling in a graphical app, Audio Hijack has it and AirCheck does not.
AirCheck records what your Mac plays, or any input, to one file. $39 once.
macOS 14 or newer. One-off payment. Fourteen-day refund, no questions asked.
Questions people ask
How do I record radio on a MacBook overnight?
Plug it in, run caffeinate -i in Terminal or set the Mac never to sleep on power, start a system-audio capture, and let the display sleep. A 24-bit 48 kHz capture uses 0.97 GB per hour, so an 8-hour night needs about 7.8 GB free; MP3 320 needs 1.1 GB.
Can QuickTime record internet radio?
No. QuickTime Player's audio recording takes a microphone or another input device, not what the Mac plays. Its screen recording produces a video file and also lacks the system audio. You need a ScreenCaptureKit recorder or a virtual driver plus a recorder.
Can I record BBC Sounds or a station app instead of the website?
A system-audio capture does not care where the sound comes from; a station app, TuneIn or a browser tab all reach the same output. Check the broadcaster's terms first, since most restrict copies to personal use.
Will the recording have a gap if the stream drops?
Yes, a gap the length of the outage. AirCheck's watchdog restarts capture into the same file after 5 seconds without audio, so the recording continues rather than ending. If the browser player needs a manual click to resume, the gap lasts until you click.
Sources
- Wikipedia: Aircheck
- FFmpeg documentation: -c copy, -t
- Apple: ScreenCaptureKit documentation
- AirCheck: measured file sizes and longest take
Related guides
- How to record a Twitch or live stream's audio on a Mac
- How to record SoundCloud or Mixcloud audio on a Mac
- How long can you record audio on a Mac?
- How to record Mac system audio from the Terminal
- How to record YouTube audio on a Mac
- How to record Spotify on a Mac
- Recording streams, music and video sound: all guides
- Every guide, by topic