Live TV
What it is
A free live TV web app that streams public channels from around the world in the browser, with no sign-up. Built with Next.js 16, React 19 and hls.js, with a guarded HLS proxy and automatic stream fallback.
Live TV is a worldwide live-television catalogue and player that runs in the browser. It pulls publicly available live streams from open, community-maintained sources into one fast, searchable app covering 16,000+ channels from 182 countries. There is no account, no install and no cost: open the page, pick a channel, watch.
The problem
Public live streams are scattered across several large open playlists, each with its own format, duplicates and dead links. Many streams also refuse to play in a normal browser because of CORS or hotlink rules, so a plain playlist player fails on a lot of channels.
What it does
- Instant search across every channel, with category filters and a searchable country picker showing flags and channel counts
- Favorites stored locally in the browser, no account needed
- A full-window player built for TV: play/pause, volume, fullscreen, a seekable progress bar for DVR-style streams, and a stream switcher when a channel has more than one source
- Automatic fallback: if a stream fails, the player tries direct, then proxied, then the channel's next alternate stream
- A mobile-first layout with filters in a slide-in drawer and safe-area aware controls
How it's built
- Catalogue: assembled server-side from the iptv-org database (the backbone), Free-TV/IPTV, FAST platform lists and curated per-country lists. Entries are joined, cleaned and deduplicated by stream URL, entries carrying token parameters are dropped, and the result is memoized for an hour and served from
/api/channels. - Playback proxy:
/api/streamonly serves URLs that exist in the catalogue, so it is not an open proxy. It rewrites HLS playlists so segments and keys route back through it, and applies the per-stream User-Agent and Referer some broadcasters require. - Front end: Next.js 16 App Router, React 19, strict TypeScript and Tailwind CSS 4 with a custom design-token theme. All UI is bespoke, with no component library. hls.js handles playback.
- Deploy: packaged as a Docker image and deployed with Coolify. No database and no environment configuration.
