Kálmán „KAMI” SzalaiandClaude Sonnet 5 0907483c63 Fix dead NTV Kenya, Kibris TV, TV 2020, and Telefe links
Kenya:
- NTV Kenya: nation.africa/kenya/tv/live 404s. Their live simulcast is on
  the station's own official YouTube channel (linked from ntvkenya.co.ke
  itself); confirmed actually live at verification time (canonical URL
  resolved to a /watch?v= page, not the channel page).

Cyprus:
- Kibris TV: the shared sc-kuzeykibrissmarttv.ercdn.net CDN is gone
  (DNS NXDOMAIN) for all 6 TRNC channels in this section. Found Kibris
  TV's current feed via a Northern Cyprus web-TV aggregator
  (old.kuzeykibris.tv), a real rolling HLS media playlist. Verified
  alive via check_channels.py (3/3 ok).
- TV 2020: same dead CDN. Its official YouTube channel is confirmed
  live now. BRT 1, BRT 2, and Kibris Genc TV/Kanal T were also
  researched, but their YouTube channels were NOT live at verification
  time (canonical stayed on the channel page) - left unchanged rather
  than adding an unreliable "channel not live" link.

Argentina:
- Telefe: the old telefe.com API endpoint is deprecated (redirects to
  mitelefe.com, whose live-stream URL is now fetched client-side by JS
  and not extractable via curl). Replaced with a verified-alive
  third-party restream, the same pattern already used for other
  channels in this file (e.g. El Nueve's raw-IP entry). Flagged here
  as a fallback, not an official source.
- Aunar, Cine.AR, Tec TV, DeporTV: researched, all confirmed genuinely
  dead at their own official infrastructure (squatted/parked domains,
  VOD-only platforms, abandoned servers) with no live YouTube
  simulcast either - left unchanged, no fix available.

Regenerated playlist.m3u8 and the per-country playlists via
make_playlist.py.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01Enus8N247jHM5r5Som5JuU
2026-09-06 14:19:21 +02:00
2023-12-03 14:47:43 +01:00
2026-08-18 11:49:20 +02:00

Free TV

This is an M3U playlist for free TV channels around the World.

Either free locally (over the air):

Or free on the Internet:

  • Plex TV
  • Pluto TV (English, Spanish, French, Italian)
  • Redbox Live TV
  • Roku TV
  • Samsung TV Plus
  • Youtube live channels

To use it point your IPTV player to https://raw.githubusercontent.com/Free-TV/IPTV/master/playlist.m3u8.

Philosophy

The main goals for this playlist are listed below.

Quality over quantity

The less channels we support the better.

  • All channels should work well.
  • As much as possible channels should be in HD, not SD.
  • Only one URL per channel (no +1, no alternate feeds, no regional declinations)

Only free channels

If a channel is normally only available via commercial subscriptions it has nothing to do in this playlist. If on the other hand it is provided for free to everybody in a particular country, then it should be in this playlist.

  • No paid channels
  • Only channels which are officially provided for free (via DVB-S, DVB-T, analog, etc..)

Only mainstream channels

This is a playlist for everybody.

  • No adult channels
  • No channels dedicated to any particular religion
  • No channels dedicated to any particular political party
  • No channels made for a country and funded by a different country

Feed sources

It can be quite hard to find up to date URLs, here's a list of sources:

Format

The m3u8 playlist is generated by make_playlist.py, using the .md files located in lists.

Each .md file represents a group. The <h1> line is used as the group title.

Only channels which URL column starts with [>] are included in the playlist.

Channels which are not in HD are marked with an Ⓢ.

Channels which use GeoIP blocking are marked with a Ⓖ.

Channels which are live Youtube channels are marked with a Ⓨ.

Issues

Only create issues for bugs and feature requests.

Do not create issues to add/edit or to remove channels. If you want to add/edit/remove channels, create a pull request directly.

Pull Requests

Only modify .md files

If your Pull Request modifies channels, only modify .md files. Do not modify m3u8 files in your pull request.

Adding a new Channel

To add a new channel, make a Pull Request.

  • In your Pull Request you need to provide information to show that the channel is free.
  • Use imgur.com to host the channel logo and point to it.
  • If you have a valid stream, add it and put [>] in front of it.
  • If you don't have an stream for the channel, add [x]() in the url column and place your channel in the Invalid category.
  • If you have a stream but it doesn't work well, put the channel in the Invalid category and put [x] in front of the url.
  • If you're adding geoblocked URLs specify it in your PR and specify which country they're working in. The PR will only be merged if these URLs can be tested.

Removing a Channel

To remove a channel, make a Pull Request.

In your Pull Request you need to provide information to show that the channel is only available via a private paid subscription.

Note: Public taxes (whether national or regional, whether called TV License or not) do not constitute a private paid subscription.

If a stream is broken, simply move the channel to the invalid category and replace [>] with [x] in the url column.

S
Description
M3U playlist for free TV channels around the World.
Readme
125 MiB
Languages
Python 97.7%
Shell 2.3%