We Tested 13,968 Free TV Streams. Here Is What Actually Works

Free live TV streams have a reputation for being unreliable. That reputation is deserved, but the reasons are more specific and more interesting than "the link is broken". In September 2026 we probed every stream in our index, 13,968 unique addresses, and recorded exactly how each one responded. This is what we found.

The headline numbers

Each address was requested the way a browser would request it, following redirects, with a real Origin header, and a ten second patience limit. Anything that did not answer cleanly was asked again.

ResultStreamsShareWhat it means
Working9,44667.6%Answers and allows browser playback
Never answered2,51018.0%Silent on every attempt
Geo blocked9847.0%Refused with 401, 403 or 451
Permanently gone4623.3%404 or 410, confirmed twice
No cross-origin access3702.6%Real stream, browsers cannot load it
Server errors1961.4%5xx and other transient failures

Roughly two thirds of free streams work at any given moment. That is better than the folklore suggests, and considerably worse than a paid service. The remaining third fails for four genuinely different reasons, and confusing them is why troubleshooting usually goes nowhere.

Four different failures that look identical

1. Geo blocking, 7.0% of streams

A broadcaster sells rights country by country, so it serves viewers inside its territory and refuses everyone else. The refusal arrives as HTTP 403, or occasionally 451, which is literally named "Unavailable For Legal Reasons". This failure is invisible in the data itself: the stream is perfectly healthy, it simply will not talk to you. The same address that fails in Delhi may play instantly in Dublin.

2. Cross-origin restrictions, 2.6% of streams

This one confuses people most, because the stream demonstrably works and still will not play in a browser. Browsers refuse to load video from another website unless that website explicitly grants permission through a CORS header. Desktop players such as VLC ignore this rule entirely, because it is a browser security policy rather than a property of the stream. That is the whole explanation for the most common complaint we receive: it plays in VLC but not on your site. Nothing is broken. The browser is following its own rules.

3. Silence, 18.0% of streams

The largest failure category is simply no answer. The host has gone away, the domain no longer resolves, or the server accepts the connection and never sends anything. We keep these listed rather than deleting them, for a reason covered below.

4. Genuinely gone, 3.3% of streams

A 404 or 410 is the server explicitly stating the resource does not exist. This is the only failure we treat as final, and even then only after confirming it twice.

Sports is the worst category, by a wide margin

If free TV has felt unreliable to you specifically for sport, that is not imagination. Sports rights are the most aggressively enforced in broadcasting, and the data shows it clearly at two separate stages.

CategoryChannelsWith a browser-compatible source
News89985%
Music67785%
General2,39381%
Kids31572%
Movies57870%
Sports40456%

Sport sits last, and the gap is not small. Only 56% of sports channels have any source a browser can load at all, against 85% for news. That is the first stage.

The second stage is what happens when you actually request those sources. Testing ninety sports streams and ninety news streams under identical conditions, 67% of the sports sources played against 78% of the news sources, and sports were refused with a 403 on 13% of requests compared with 1% for news. Sports streams are turned away outright roughly thirteen times more often.

Multiply the two stages together and a randomly chosen sports channel plays about 37% of the time, against roughly 66% for news. Sport is not broken on any particular site. It is defended, and the enforcement is visible in the response codes.

What never reaches the index at all

Measurement is only half of what determines whether a directory is useful. The other half is what gets excluded before anyone sees it. The public dataset we build from contains just over 41,000 channel entries. Fewer than a quarter survive to publication, and the reasons are worth being explicit about.

The largest cut is simply channels with no working source attached, which accounts for around 28,500 entries. A directory listing channels that cannot be watched is not a directory, it is a phone book for disconnected numbers.

Next comes the blocklist maintained by the upstream project, which we apply in full: 1,211 channels removed following copyright complaints and 367 removed as adult content. We also drop anything separately flagged adult, and channels that have closed or been replaced by a successor. None of these appear here at any point, and the exclusion is applied on every rebuild rather than once.

What remains is roughly 9,600 channels across 176 countries. The gap between 41,000 and 9,600 is not modesty about the size of the catalogue. It is the difference between a list and a filtered list.

The measurement trap, and why we nearly deleted 1,400 working channels

This part is a caution about testing rather than about streams, and it is the most useful thing we learned.

Our first measurement run used sixty simultaneous requests and a ten second limit. It reported that 34.7% of all streams were dead, 4,846 of them. Acting on that would have removed almost a third of the directory.

Before doing so we re-tested three hundred of those supposedly dead addresses. Forty six percent of them answered normally. The failure was ours: sixty parallel requests saturated the connection, and we were recording our own timeouts as other people's outages.

Two changes fixed it. We stopped treating silence as proof of death, since a stream that does not answer might be busy, rate limiting us, or briefly down. And we began confirming every 404 with a second, separate request, because some servers return 404 intermittently under load. That confirmation step alone rescued 33 streams from deletion. After both changes the false-positive rate fell from 46% to 0.33%, and the number of streams we remove dropped from 4,846 to 462.

The lesson generalises well beyond television: a single failed request is evidence of very little. If you are building anything that decides whether a remote resource is alive, measure your own error rate before you trust your verdicts.

What this means when you are watching

Questions we are actually asked

Why does a channel work for my friend but not for me?

Almost always geographic licensing. Roughly 7% of streams refuse requests outright, and that refusal depends on where the request comes from. The channel is not down, and there is no setting on your end that changes the answer.

It plays in VLC but not in my browser. Is your site broken?

No, and this is the single most common report we get. Browsers refuse to load video from another site unless that site sends a permission header. VLC is not a browser and does not apply that rule. About 2.6% of streams are in exactly this state: completely functional, permanently unplayable in a browser tab.

Are these streams legal to watch?

The streams indexed here are ones broadcasters and third parties have published openly on the public internet, and we exclude everything on the upstream copyright blocklist. That said, broadcasting rights differ by country, and a stream being technically reachable does not automatically mean you are licensed to watch it where you live. We index addresses; we do not host, restream or control any of them.

How often does the list change?

Constantly, and more than we expected before measuring. Between two rebuilds days apart, the published channel count moved by several hundred in both directions as sources appeared, vanished and returned. This is why we re-verify on a schedule instead of trusting a fixed list.

Why do some channels list many sources?

Popular channels are often carried by several independent providers. That redundancy is the single biggest practical advantage in free streaming: when one source is geo blocked or overloaded, another frequently is not. It is also why moving automatically to the next source matters more than picking the best one first.

How we measured this

Every unique stream address in the index was requested once with redirects followed and an Origin header set, then any address that did not return a clean answer was requested again. Responses were classified by status code and by whether cross-origin headers were present. Addresses returning 404 or 410 were confirmed with a third, independent request before being counted as gone. The full run takes about thirty three minutes and now repeats automatically so the index reflects current reality rather than a snapshot from months ago.

One limitation is worth stating plainly, because it affects how much you should trust these figures. All measurements were taken from a single location at a single moment. Geographic blocking means a stream recorded as refused here may work perfectly where you are, and the reverse is equally true. That is precisely why we never remove a channel for being refused or for staying silent. Only an explicitly confirmed 404 does that.