Skip to content

Kick clips and VODs: what the link tells the downloader

Kick answers three different questions depending on the link you paste: a clip, a past broadcast, or a channel that happens to be live right now. The downloader reads the URL first and picks the right one.

Kick's own address structure is the clearest map of what you are holding. A clip is a short, edited moment. A VOD is a full past broadcast. A channel page is neither, and if the streamer is live at that moment, there is nothing to download — a live stream has no end, so there is no file.

The three links, and what each one becomes

Link shapeWhat the resolver does
kick.com/<channel>/clips/clip_…Reads the clip API and returns the clip's original quality.
kick.com/<channel>/videos/<id> and /video/<id>Reads the video API and lists every rendition the VOD's master playlist carries.
kick.com/<channel>Lists the channel's recent VODs; a live channel answers live instead.
A bare clip idAsks for the channel first (need_channel), because Kick's clip API needs both.

A clip id has a fixed shape — clip_ followed by a ULID-style code — so the resolver can recognise one without any network call. A bare id is not enough on its own; Kick's API wants the channel in the path, which is why a pasted id alone comes back asking for more.

Where the qualities come from

For a VOD, Kick publishes an HLS master playlist: one small file listing every rendition, each with its own resolution, bandwidth and frame rate. The resolver reads that master and nothing else — it does not download fragments, and it does not ask Kick for a merged file, because Kick does not offer one.

Clips are simpler: they usually carry one file at the quality the clip was cut at, which is why a clip download rarely asks you to choose anything.

Why live streams are refused

A live stream is a rolling window, not a file. Kick reports a live channel as live in three different places — the VOD object, the channel's video list and the channel page itself — and the resolver turns all three into the same answer: live. Try a clip or a VOD instead.

Two other states look like errors but are not: processing means the broadcast ended minutes ago and Kick has not finished cutting the VOD, and no_source means the VOD was removed or expired. Both are Kick's state, not a failure of the download.

Nothing is stored

Kick's CDNs send access-control-allow-origin: *, so the browser can read the file directly. The download runs in the page, straight from Kick's edge to your disk; the resolver only ever handled metadata. Nothing is re-encoded, watermarked or kept.

One practical note: long VODs are best saved on a desktop browser, where the file streams straight to disk. On a phone, a multi-hour broadcast is held in memory while it downloads, and the browser may give up before the file finishes.

The short version

Questions

Can I download a Kick livestream while it is running?

No. A live stream has no end and no file; Kick reports it as live and the resolver refuses it. Once the broadcast ends and Kick finishes processing it, the VOD link works.

Why do VODs list several qualities but clips only one?

A VOD ships an HLS master playlist with every rendition Kick encoded, so the resolver can list each one. A clip is cut from a single file, so there is normally only that one quality to offer.

What does the `source` quality mean?

It is the master playlist itself, offered when the individual renditions could not be parsed. It is the same video, just without the per-resolution breakdown.

Tools in this article

All articles