What [>] and [x] Markers Mean in Free-TV IPTV Channel URLs
In the Free-TV/IPTV repository, [>] marks active stream URLs that get included in the generated playlist, while [x] marks broken or missing streams that are ignored during the build process.
The Free-TV/IPTV project maintains curated television channel lists as plain Markdown files in the lists/ directory. Contributors use simple text markers to signal whether a channel's stream URL is valid and should appear in the final M3U playlist. These markers allow the automated build system to distinguish working streams from placeholder or broken entries without requiring separate metadata files.
How Markers Control Playlist Generation
Valid Streams with [>]
The [>] marker indicates an active, working stream URL. When make_playlist.py processes the Markdown tables, it specifically searches for lines containing the substring "[>]" (as implemented on line 153 of the script). Only rows with this marker are converted into #EXTINF entries in the output playlist.m3u8 file.
Invalid or Placeholder Streams with [x]
The [x] marker designates channels with no available free stream, broken URLs, or entries kept for reference only. The generator ignores any line containing "[x]", meaning these channels do not appear in the final playlist. According to the README documentation, [x]() is the standard notation for "no stream" entries.
Reading the Markers in the Generator Script
The playlist generator implements a simple filter. The script iterates through each Markdown file in lists/ and skips any row that lacks the active marker.
for line in markup_file:
# Only keep rows whose URL column starts with "[>]"
if "[>]" not in line:
continue # skip "[x]" rows
channel = Channel(group, line, country_code)
m3u_line = channel.to_m3u_line()
print(m3u_line, file=playlist)
This logic ensures that only verified, working streams reach the final playlist output.
Marking Channels in Markdown Lists
Channel definitions reside in Markdown tables within the lists/ folder. The marker appears in the URL column, determining whether the entry is built or bypassed.
| 1 | BBC One | [>](https://example.com/bbc1/playlist.m3u8) | <img src="logo.png"/> |
| 2 | Unknown | [x]() | <img src="logo.png"/> |
The first row becomes an #EXTINF entry in playlist.m3u8, while the second is excluded from the build. This lightweight approach lets contributors edit plain-text lists while maintaining automated quality control.
Summary
- [>] identifies active streams that pass validation and appear in the generated M3U playlist.
- [x] marks missing, broken, or reference-only channels that the build script ignores.
- The generator checks for these markers on line 153 of
make_playlist.py, filtering rows before converting them to M3U format. - Contributors edit Markdown tables in
lists/*.md, using markers to signal stream status without modifying the build logic.
Frequently Asked Questions
Why does the script use [>] instead of a boolean flag?
The [>] marker provides a visual cue in the Markdown source that the URL is functional, while [x] clearly indicates exclusion. This plain-text approach keeps the lists human-readable and editable in any text editor without requiring JSON or YAML configuration files.
Can I use [x] to temporarily disable a channel without deleting it?
Yes. Marking a channel with [x]() preserves the entry in the repository for reference while ensuring it does not appear in playlist.m3u8. This is the recommended way to handle broken streams that might return later.
What happens if I forget to include a marker?
Lines without [>] are treated as inactive by default. The script's if "[>]" not in line check on line 153 causes unmarked rows to be skipped, effectively treating them as [x] entries.
Where are the channel lists stored?
All channel definitions reside in the lists/ directory as Markdown files. The make_playlist.py script reads these files, processes the markers, and outputs the final playlist.m3u8 file containing only the active [>] channels.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →