Support Articles

Add Custom Channels with M3U Playlists

With Channels DVR Server, you can add your own channels to your TV lineup and guide from any kind of streaming source.

Create channels for your IP Cameras, online webcams, or any other streaming sources that provide MPEG-TS or HLS streams. Import channels from your SAT>IP equipment, TVHeadend, or other software that publish M3U playlists and provide streams.

Utilizing M3U playlists for streams and XMLTV for EPG guide data, both industry standards, you can feed Channels your own special streaming channels. You can do this with a URL to an M3U playlist, or by pasting the raw playlist text directly into Channels DVR Server.

Protip: Join our Community to learn, share, and discuss custom channels.

Full Customization for Channels

We’ve added support for custom tags that let your channels look even better inside the app. By using these tags, you can give your channel the right title and guide art to really shine inside Channels.

custom channel metadata


M3U playlists are limited to 750 channels. While they can probably work, we do not provide technical support for large IPTV sources. Custom Channels are for streams you have legal access to.

Protip: You can use free services like M3U4U to filter your playlist to an appropriate size..

Supported Streaming Formats

Channels supports these video formats and streaming protocols.

  • MPEG-TS: http, https, rtsp, and satip
  • HLS: http and https

M3U Format

Channels accepts the normal M3U format, but there are a few extra tags you can use to ensure things look great in the app.

Supported Metadata Tags

Standard Tags

This is the list of standard tags that are supported.

  • channel-id: REQUIRED unique ID for the channel
  • channel-number: display number for the channel
  • tvg-logo: channel logo url (4x3 aspect ratio)
  • tvg-name: channel callsign

Note: Be sure not to use a channel number that exists in another source’s lineup. Channels will merge them together and use the prioritized channel.

Channels Extensions

We’ve created these new tags that allow you to provide more information to create a better experience in Channels. These are all optional.

Guide Data

Use this tag to set the station identifier and it will automatically get guide data.

  • tvc-guide-stationid: Gracenote station id
Guide Data Fallback Tags

If your custom channel has no guide data, you can use these tags to create default guide data to look better in Channels.

  • tvc-guide-title: guide item title
  • tvc-guide-description: guide item description
  • tvc-guide-art: guide item art url (4x3 aspect ratio)

  • tvc-guide-tags: guide item tags. comma delimited. example: "HDTV, Live"
  • tvc-guide-genres: guide item genres. comma delimited. example: "Action, Children"
  • tvc-guide-categories: guide item categories. comma delimited. strict options: Movie, Sports event, Series
Automatic Placeholders

When your custom channel has no guide data, Channels will create airings for your channel. This way you can record them. It will even create special titles, series IDs, and program IDs based on the time slot so that you can make a Series Pass for them. By default it creates them with 1 hour durations. But you can control this yourself by providing their duration in seconds.

  • tvc-guide-placeholders: Duration of the placeholder. comma delimited. example (2 hours): "7200"

You can set the value to "false" to tell Channels to not make any placeholder airings at all. Setting the value to 24 hours or longer ("86400") will create 24 hour airings, but will drop the extra titles it creates for these airings.

Codec Information Tags

These tags help speed up transcoding.

  • tvc-stream-vcodec: stream video codec (h264, mpeg2)
  • tvc-stream-acodec: stream audio codec (ac3, aac)

Example M3U Playlist


#EXTINF:-1 channel-id="JPCAM" channel-number="750" tvc-guide-genres="cams" tvc-guide-tags="Live" tvc-guide-placeholders="1800" tvg-logo="" tvg-name="JPCAM" tvc-guide-title="Jennette's Pier" tvc-guide-description="Live beach cam at Jennette's Pier" tvc-guide-art="",JPCAM

#EXTINF:-1 channel-id="PCAM" tvc-guide-genres="cams" tvc-guide-tags="HDTV, Live" tvc-guide-placeholders="86400" channel-number="751" tvg-logo="" tvg-name="PCAM" tvc-guide-title="Platypus Cam" tvc-guide-description="Live platypus cam from the San Diego Zoo." tvc-guide-art="",PCAM

#EXTINF:-1 channel-id="TCAM" tvc-guide-placeholders="false" channel-number="752" tvg-logo="" tvg-name="TCAM" tvc-guide-title="Live shot of traffic on the Bay Bridge." tvc-guide-description="Live shot of Times Square in New York City." tvc-guide-art="",TCAM

Protip: View more examples on our custom channels examples GitHub repo.

Adding Your Custom Channels

Add your custom channels like you would any other Source.

choose source channels dvr server

You need to give the playlist a unique name and specify the stream format. HLS or MPEG-TS. You have two options for adding the M3U playlist content.

Add via Text

You can add an M3U playlist by directly copying its text into the field. You can edit the content at any time.

Add via URL

You can add an M3U playlist by its URL. Enter the URL and Channels will import it. This lets you import an M3U playlist from another source or something hosted elsewhere.


Many SAT>IP devices expose an M3U url using the satip:X_SATIPM3U tag in their XML device description. These URLs vary, but generally look like one of the following:

  • http://<SATIP>/desc.xml
  • http://<SATIP>:8000/description.xml
  • http://<SATIP>/channellist.m3u

If your device does not export M3U, you can generate your own M3U using HTTP or RTSP urls. For example, the ASTRA satellite M3Us can be found on

VBox TV Gateway

The VBox TV Gateway offers an M3U at the following URL:

  • http://<VBox IP>:55555/vboxSimpleIptv.m3u8

For details, see their documentation.


TVHeadend offers an M3U at the following URL:

  • http://<TVH IP>:9981/playlist/channels.m3u

NextPVR offers an M3U at the following URL:

  • http://<NPVR IP>:8866/service?method=channel.m3u

The AVM FRITZ!Box offers an M3U at the following URLs:



Here’s some tips and tricks for making guide data for your custom channels work better with Channels.


Channels needs to know that a guide item is a movie or not. This isn’t just important for guide presentation. Channels won’t categorize your recording as a movie unless it knows that it is a movie.

In your XMLTV, make sure your movie airing has a category set to Movie

<category lang="en">Movie</category>

Guide Filters

The On Now and Guide sections in Channels allow you to filter your channels based on the currently playing content. This is based on specific genre names. Apply the correct genre names to your guide items to support filtering in Channels.

<category lang="en">Children</category>

The following maps what genre names you should use for each filter category.

  • Kids: Children
  • News: News
  • Sports: Sports
  • Drama: Drama

Guide Item Art

Channels uses placard style art (4:3 aspect) for TV shows and poster style art (2:3 aspect) for movies. Channels expects these sizes and your guide item art may look wrong unless you provide images with the correct aspect.

TV Show

tv show art


movie art

Group TV Shows

Channels requires a unique identifier in order to group your guide items together as a single TV show. This is most important when it comes to recording these airings. Without a unique ID to identify recordings of airings, Channels can not group them together as a single TV show in your library.

Add a series-id tag to your guide airing to uniquely identify the show.

<series-id system="your-source">5beca802adcd16cf34ee6af4</series-id>

Uniquely Identify Airings

Channels requires guide airings to have unique identifiers in order to be recorded. Without an identifier, each airing looks the same according to Channels. Without being able to uniquely identify individual airings of a show, Channels will think each airing is the same and will only record it once.

Channels needs a combination of a unique series identifier and a unique episode identifier.

<series-id system="your-source">5beca802adcd16cf34ee6af4</series-id>
<episode-num system="your-source">4ea4682101915b834a6afec5</episode-num>

Additionally, you can use this format, S02E10, for episode-num to set the season and episode number of a guide airing. This will both serve as a unique identifier and also seed Season and Episode number data to Channels.

<episode-num system="onscreen">S02E10</episode-num>