FastChannels
I wanted to share something I've been building called FastChannels — a self-hosted FAST channel aggregator that scrapes free ad-supported streaming services and delivers unified M3U playlists and XMLTV EPG guides for Channels DVR (and any other IPTV client).
Why FastChannels?
The problem it solves: Pluto TV, Tubi, The Roku Channel, Samsung TV Plus, Xumo, Plex, DistroTV, and dozens of other free streaming services each offer hundreds of live channels, but they're all siloed.
Getting them all into Channels DVR traditionally meant:
- Maintaining multiple M3U sources
- Dealing with stale stream URLs
- Managing duplicate channels across providers
- Fighting inconsistent guide data
FastChannels solves all of that in one place. It was designed with ease of use and low maintenance as the primary goals.
What It Does
Multi-Source Aggregation
20+ sources and growing.
Currently supports:
- Pluto TV
- Tubi
- The Roku Channel
- Samsung TV Plus
- Xumo Play
- Plex
- DistroTV
- STIRR
- LG Channels
- Vizio WatchFree+
- TCL TV+
- Vidaa Free TV
- Whale TV+
- Adult Swim
- FreeCast
- Local Now
- Frndly TV
- Fubo TV
- Bally Sports
- Hallmark
- FreeLiveSports
- Sling Freestream
- Amazon Prime Free Channels
- HDHomeRun TuneIn Channel Catalog
New sources are added regularly.
All channels and EPG data are unified into a single M3U playlist and XMLTV guide.
Always-Fresh Stream URLs
Streams are resolved at playback time rather than scrape time.
Tokens, JWTs, and session cookies are refreshed automatically, helping avoid broken or expired URLs.
Named Feeds
Create persistent filtered feeds (Sports, News, Kids, Spanish, etc.) with their own M3U and XMLTV URLs.
Each feed can:
- Use its own channel number range
- Filter by source
- Filter by category
- Filter by language
Guide Tab
A built-in grid view of your lineup showing:
- What's on now
- What's on next
- Channel state
- Filtering options
Perfect for spotting guide gaps without leaving FastChannels.
Image Proxy
Channel logos and program artwork are served through FastChannels.
Benefits:
- Eliminates CDN 403 errors
- Improves logo reliability in Channels DVR
- Fixes common issues with providers like Roku
Stream Audit
Health-checks every channel and automatically identifies:
- Dead streams
- DRM-only streams
- VOD masquerading as live channels
Channels that fail can be automatically disabled so they disappear from your feeds.
Duplicate Resolution Helper
Many channels appear on multiple providers (CBS News 24/7 is a great example).
The duplicate resolver:
- Finds duplicate channels
- Lets you prioritize sources
- Automatically keeps the preferred copy
- Disables the rest
Admin UI
A full web dashboard to:
- Manage sources
- Browse channels
- Enable/disable channels
- Create feeds
- Monitor scrape status
No config files required.
Docker Deployment
Runs as a single Docker container and fits neatly into an existing home server stack.
Channels DVR Integration
Add FastChannels M3U and XMLTV URLs directly as a Custom Source in Channels DVR.
FastChannels also supports Gracenote-matched output as a separate M3U variant, allowing you to mix XMLTV and Gracenote guide sources cleanly.
Installation
Docker
If you're new to Docker, don't worry—it's easier than it looks. There are plenty of guides online, and your favorite chatbot can walk you through it.
No environment variables are required.
docker run -d \
--name fastchannels \
--restart unless-stopped \
-p 5523:5523 \
-v fastchannels_data:/data \
ghcr.io/kineticman/fastchannels:latest
Portainer
Instructions available on GitHub.
Project One Click
Installation instructions coming soon from @bnhf.
First-Time Setup
Once installed:
-
Open a browser and navigate to:
-
Grab a cup of coffee and let the scrapers do their thing.
-
Go to Settings:
- Set the local IP address of your FastChannels server.
- Set your Channels DVR address.
-
Go to Sources:
- Enable or disable sources.
- Configure Pluto credentials if desired.
- Set passwords where applicable.
Stream Audit — Find DRM and Dead Channels
Once your sources finish scraping, I highly recommend running a Stream Audit on each source.
The audit checks every channel and identifies:
- Dead streams
- DRM-protected streams
- VOD-only channels
Problem channels are automatically disabled.
Running a Stream Audit
- Open Sources
- Find a source card
- Click the Stream Audit button
You'll see:
- Live progress
- Channels checked
- DRM count
- Dead channel count
Audits can take several minutes depending on source size.
Which Sources Have the Most DRM?
Generally:
- The Roku Channel: Most DRM issues
- Tubi: Usually cleaner
- Samsung TV Plus: Usually cleaner
- Plex: Usually cleaner
Results vary by region, so auditing is the best way to know for sure.
After the audit finishes, disabled channels are automatically removed from your feeds.
No further action is required.
The Channels Page
The Channels page is your command center.
After scraping (and ideally after running Stream Audits), this is where you'll spend most of your time refining your lineup.
What You'll See
Every channel from every enabled source, including:
- Name
- Logo
- Source
- Category
- Language
- Channel Number
- Gracenote ID
- Stream Health
Channels disabled by audits are clearly marked and can be re-enabled at any time.
Filtering & Searching
Filter channels by:
- Name
- Source
- Category
- Language
- Enabled/Disabled status
- Stream health
- Gracenote coverage
- Duplicate status
Duplicate Management
The Duplicates Only filter is especially useful.
If you've scraped Pluto, Roku, Plex, and others, you'll likely have many duplicate channels.
Click Resolve Duplicates to:
- Reorder source priority with drag-and-drop
- Prefer channels with better Gracenote coverage
- Disable lower-priority duplicates in bulk
You can always override the results manually later.
Per-Channel Actions
Enable / Disable
- Removes channels from feeds without deleting them.
Edit Gracenote IDs
- Click a Gracenote field to edit it inline.
- Changes save automatically.
Preview (Eye Icon)
- Shows current and upcoming programs.
- Includes an in-browser stream preview.
Inspector (Magnifying Glass)
-
Performs a live stream test.
-
Identifies:
- Live
- DRM
- Dead
- VOD
- No data
Great for spot-checking a single channel.
Bulk Actions
Select channels and:
- Enable in bulk
- Disable in bulk
Perfect for quickly removing unwanted categories or languages.
Sorting
Every column can be sorted.
The channel number column is especially useful for visualizing your final lineup order.
Setting Up Feeds
Feeds control what channels are exposed through each M3U/XMLTV endpoint.
A Default feed is always available, but custom feeds let you create specialized channel groups.
Think of feeds as custom channel bundles rather than separate streaming services.
Creating a Feed
Go to:
Admin → Feeds → New Feed
Configure:
- Name
- Sources
- Categories
- Languages
- Gracenote status
- Manual channel selections
Supported filters include:
Sources
Include channels only from selected providers.
Examples:
- Pluto TV
- Roku
- Plex
Categories
Examples:
- Sports
- News
- Movies
Languages
Examples:
- English (en)
- Spanish (es)
Gracenote Coverage
Create a "Guide Ready" feed containing only channels with matched guide data.
Manual Selection
Hand-pick exactly which channels belong in a feed.
As filters are applied, FastChannels shows how many channels will be included.
Channels DVR Recommendation
Try to keep feeds under roughly 750 channels.
Channels DVR performance can degrade with very large lineups.
One-Click DVR Registration
If you've configured your Channels DVR address in Settings, an Add to Channels DVR button appears on each feed card.
No copy/paste required.
Example Feeds
- Sports Only
- English Channels
- Guide Ready
- Pluto Everything
- Anime
- Movies
Caveats
Roku
Roku is extremely Cloudflare-sensitive.
Sometimes:
- Scrapes receive 403 errors
- Initial setup may require re-running a scrape
- Streams may occasionally fail
If this happens:
- Don't hammer the service
- Wait a bit
- Try again later
Caching minimizes the issue, but it's ultimately outside FastChannels' control.
DRM Sources
Amazon Prime Free Channels and Sling Freestream are DRM-only.
They generally require DRM-capable clients and are disabled by Stream Audit by default.
They're still included because:
- Some users have compatible playback devices
- Their guide data can be useful for EPG enrichment
EPG Data Quality
Guide information is only as good as the source providing it.
FastChannels makes a best effort with:
- Categories
- Languages
- Metadata
But occasional inaccuracies should be expected.
Big thanks to @bnhf, @babsonnexus , @matthuisman, and this whole community.
