Turn your collection into your own TV network.
Turn your personal media library into live TV channels. Works with Plex, Emby, Channels DVR, and Jellyfin.
Create 24/7 channels from your movies, TV shows, music, and more.
Native macOS app with hardware acceleration for smooth performance.
Everything stays on your network. Your media, your rules.
Plex, Emby, Channels DVR, Jellyfin, and HDHomeRun compatible.
The app
Five places, each with one job. Open it to see what's on — artwork, current programme, who's watching. Tuner counts and transcode state live in a status line, where healthy plumbing belongs.
A full-size now playing card, then every channel with what's airing and how much is left.
A real EPG grid with channel logos and artwork. Select a slot to watch or edit the channel.
Poster-style cards: logo, what's on now, schedule state, source count. New channel is one click.
Plex, Jellyfin, Emby and local folders in one place — content sources, not infrastructure.
Scans, guide refreshes, transcodes, tuner sessions and errors — off the home screen.
From folders to airtime
Virtual Channels builds the schedule and exposes a tuner your media server already knows how to read. Nothing leaves your network.
Connect Plex, Emby, Jellyfin, or plain folders on your Mac or NAS. Metadata and artwork come along.
Pick what belongs on it and how it should run — shuffled, in order, or on a schedule you set. It airs continuously from then on.
Your Mac answers as an HDHomeRun tuner. Plex, Channels DVR, Emby and Jellyfin find it on the network and show your lineup as live TV.
Setup
The working theory: content flows one way, from a source you point at to a screen someone's watching. Everything below is one of five steps.
A folder on any drive, an HDHomeRun, or an M3U playlist. Library → Add Source.
Folders scan in minutes; with Watch Folders on, new files join on their own.
Pick media, pick how it runs — shuffled, in order, scheduled. It broadcasts from then on.
Up to 8 streams at once on port 5004, with guide and playlist published beside it.
Plex, Emby, Jellyfin and Channels DVR see live TV. Recipes below.
Drop files into a watched folder and they index themselves, joining every channel that draws from it. Not watching folders? Hit Rescan on the source. A whole new collection is a new source (step 1); a new show on an existing channel is Edit Channel → add it to the playlist.
One rule to know: editing a playlist restarts that station's timeline from now.
Delete a file and the schedule skips it at the next roll — nothing breaks. Remove a source and the channels it fed lose those items; a channel with nothing left stops broadcasting but keeps its number. Delete a channel and the rest of the lineup keeps its numbers — nothing renumbers itself.
After lineup changes, Plex and Channels DVR need a lineup rescan and a guide refresh to notice.
Your Mac answers as an HDHomeRun on port 5004 and publishes a seven-day XMLTV guide. Two recipes cover every server.
Why not the tuner address? Channels DVR reads a tuner's lineup from port 80, which macOS reserves for root — on port 5004 it would show a device with no channels. The M3U route avoids that trap.
Turn your collection into your own TV network.
Curate kid-friendly channels for everyone.
Build branded channels with your own content.
Digital signage, training videos, and internal broadcasts.
Ditch cable. Keep your content. Your way.
Pricing
v2.0 — the broadcast studio on this page — is out now. v1 stays up for download, and everyone who ran it keeps their seat.
One download, no App Store, no account. It runs on your Mac and stays there.
Version 2.0.0 · 60 MB · macOS 13 Ventura or later · Apple Silicon · v1 still available
FAQ
No. VirtualChannels runs entirely on your Mac: your media never leaves your network and the app collects no data. Streams are served on your local network like a hardware tuner.
macOS 13 Ventura or later on Apple Silicon. One Mac serves the whole house — it can live in the Dock or run quietly from the menu bar.
Plex, Emby, Channels DVR and Jellyfin — anything that can tune an HDHomeRun. Real HDHomeRun tuners and M3U playlists can join your stations in one lineup.
No. MP4, M4V, MOV, MKV and WebM stream out of the box on Apple's engine. Adding ffmpeg is optional and only unlocks unusual formats — AVI, WMV, DTS and TrueHD audio.
A tuner server needs things sandboxed apps can't do, so it ships from this site. Every build is signed with a Developer ID and notarized by Apple — Gatekeeper checks it on first launch, no workarounds.
Up to 8 tuners serve simultaneously. Direct play when the format allows; GPU-accelerated transcode on Apple Silicon when it doesn't.
Tuner channels keep their broadcast numbers, your stations follow from 100, and imported sources from 1,000. Numbers you set by hand are never moved.
Seven days, published as standard XMLTV that Plex, Emby, Jellyfin and Channels DVR all read. Sources re-sync themselves hourly.
Check for Updates in the app asks this site — virtualchannels.app/updates.json — whether a newer build exists. The request carries nothing but the version you're on. Automatic checking is off by default; turn it on in Settings → General.
The blog. Every post takes comments, they're all read, and feature votes for 2.1 happen there.