IPTV Player
M3U Playlists · 4 min read · Updated 2026-07-22

How to create an M3U playlist for IPTV streaming

An M3U playlist is a UTF-8 text file, so you can build one with any text editor. The important part is pairing each metadata line with the correct stream URL and validating the result before importing it into a player.

What you need before you start

Collect the stream URLs you are permitted to use and a short display name for each channel. Optional details such as a logo URL, category and EPG identifier make a large playlist easier to browse, but they do not repair a stream that is offline or inaccessible.

Use a plain-text editor rather than a word processor. Rich-text applications can insert smart quotes, formatting characters or an unexpected encoding that makes an otherwise correct playlist fail to parse.

  • A legal HTTPS stream URL for every entry
  • A channel name that is clear and consistent
  • Optional tvg-id, tvg-logo and group-title metadata
  • UTF-8 encoding and the .m3u or .m3u8 file extension

Start with a working extended M3U example

The first line must be #EXTM3U. Each entry then uses an #EXTINF metadata line followed immediately by its media URL. Repeat that two-line pair for every channel.

#EXTM3U
#EXTINF:-1 tvg-id="news.example" tvg-name="Example News" tvg-logo="https://cdn.example.com/news.png" group-title="News",Example News
https://stream.example.com/news/master.m3u8
#EXTINF:-1 tvg-id="radio.example" group-title="Radio",Example Radio
https://stream.example.com/radio/live.m3u8

Understand the metadata instead of copying it blindly

The -1 value is commonly used for a live item with no fixed duration. The comma separates attributes from the display name. Keep attribute values inside straight double quotes, especially when they contain spaces.

tvg-id is normally used to match an entry with an external programme guide. tvg-logo points to an image, while group-title controls the category shown by many players. These attributes are widely used conventions rather than a guarantee that every application interprets them identically.

Validate the playlist in layers

First, open the file again as text and confirm that every #EXTINF line has exactly one URL beneath it. Next, test the media URLs individually. Finally, import the complete file into a second player. This separates formatting errors from server, codec and network problems.

  • Confirm the file begins with #EXTM3U and is saved as UTF-8
  • Remove blank metadata entries and URLs with accidental spaces
  • Check that HTTPS pages do not depend on insecure HTTP manifests
  • Test a small sample before building a playlist with hundreds of entries
  • Keep a clean source copy before running bulk edits or de-duplication

Create the same file without hand-editing

For a short list, hand-editing is transparent and quick. For a larger collection, use the playlist creator to add structured fields and export valid M3U text. The editor is better when you already have a file and need to rename, group or remove entries.

Whichever method you choose, the tool should process credentials and playlist content locally unless you deliberately choose a sync service. Treat playlist URLs containing usernames, passwords or access tokens as secrets.

Common mistakes that break an M3U file

  • Saving formatted text instead of plain UTF-8 text
  • Putting the URL before its #EXTINF line
  • Using curly quotes around metadata attributes
  • Leaving an #EXTINF entry without a URL
  • Assuming a valid playlist means every remote stream is online
  • Publishing a playlist URL that exposes private credentials

Related guides

Back to all guides