Embeddable HLS player

One iframe, one channel id. The playlist and every segment are proxied through this origin, so the player never talks to the upstream host and nothing has to be signed, whitelisted or CORS-enabled on your side.

Embed a stream

Point an iframe at /embed/<id>, where <id> is the channel id:

<iframe src="/embed/CHANNEL_ID"
        style="width:100%;aspect-ratio:16/9;border:0"
        allow="autoplay; fullscreen; picture-in-picture"
        allowfullscreen></iframe>

The id accepts letters, digits, ., _ and -, up to 64 characters. Anything else answers 400.

What the player does

When a stream is down

Playback errors are retried three times before the player gives up, and the page then asks the tunnel what actually went wrong rather than showing one generic failure. A channel that is simply off air says so; a channel that is on air but failed on this device says that instead.

Ads

Ads run on this page only. They are switched off inside the embed, because an ad inside somebody else's frame reports that host as the traffic source. If you are monetising a player, put the tags on your own page around the iframe.