Bitrail

Public test streams for players and CDNs

Deterministic synthetic video in progressive MP4 and HLS, served over plain HTTPS with range support. Point your player, packager, cache or CI job at it and get the same bytes every time.

Frame counter, H.264 + AAC, 30 fps. Switching rendition keeps the current position, so the same frame can be compared across the ladder. Details and direct URLs.

No account, no rate limit HTTP range requests SHA-256 for every file CC0 content

Streams

Timecode and colour bars

Frame counter over SMPTE-style bars. The number on screen is the frame index, so a dropped frame or an audio offset is visible without tooling.

A/V syncdropped framesseek accuracy

30 fps · 60s · 3 renditions

Smooth gradients

Slow four-colour gradients with almost no high-frequency detail. Banding introduced by an over-aggressive transcode shows up as visible steps.

bandingbit depthchroma subsampling

30 fps · 60s · 3 renditions

High motion, 60 fps

Continuous movement at 60 fps with a constrained bitrate. Encoders that cannot keep up produce blocking here long before they do on ordinary footage.

encoder stressframe pacingABR switching

60 fps · 60s · 3 renditions

Sustained download

Five minutes at 1080p in a single progressive file. Short clips finish inside the initial congestion window and tell you nothing about steady-state throughput; this one does not.

throughputcache fillrange requests

30 fps · 300s · 1 rendition

Full catalogue with filters →

Why synthetic

Test material taken from real footage is a licensing problem and a reproducibility problem: it gets replaced, re-encoded, or pulled. Everything here is generated from deterministic sources, so a stream you validated against last year is byte-identical today, and there is nothing to license.

The patterns are chosen to make failure visible rather than to look pleasant. A frame counter exposes dropped frames and A/V drift. Smooth gradients expose banding introduced by an over-aggressive transcode. A 60 fps high-motion clip exposes an encoder that cannot keep up. None of that is obvious in a nature documentary.

What it is useful for

Player integration

A stable URL that behaves the same on every run, so a failing test means your player changed rather than the content.

Cache and CDN checks

Range requests, conditional requests and a five-minute asset that does not finish inside the initial congestion window.

Packager validation

An HLS ladder with fMP4 segments and honest CODECS strings derived from the encoded files, not guessed.

Throughput measurement

The speed test pulls a real asset through the same path a player would use.

Start here

Quickstart — one command per tool. HLS notes — what the ladder contains and why. Machine-readable catalogue — for CI jobs.