Self-hosted · Embeddable · No upload

Play any video in your browser.
Embed it anywhere.

Drop an <iframe> on any page, point it at /embed?url=…, and play MKV, HEVC, AV1, HDR, HLS, DASH, multi-audio, embedded subtitles — directly in the browser. No transcoding. No server processing. 100% local.

MKV MP4 WebM HEVC AV1 VP9 HDR10 HLG HLS DASH SRT ASS WebVTT
Try a sample:

Everything the upstream player has

This is the full movi-player v0.4.0 web component — 67 attributes, every control, every subtitle format, multi-audio, HDR, VR, ambient mode, encrypted playback. Nothing stripped.

Every container & codec

MP4, MKV, WebM, MOV, AVI, FLV, TS, HEVC, AV1, VP9, VVC — demuxed by FFmpeg-WASM, decoded by WebCodecs hardware acceleration with software fallback.

HLS & DASH adaptive streaming

Manifests play via bundled hls.js, dashjs, and Shaka. Auto-quality switching, alternate audio-language tracks, WebVTT and TTML captions all work out of the box.

HDR via canvas

HDR10, HLG, Dolby Vision — rendered through WebGL2 with display-p3 colour space on Chromium, PQ tone-mapping fallback on browsers without it.

Subtitle every format

SRT, ASS/SSA (with karaoke + pluggable libass renderer), WebVTT, PGS image subtitles. Per-line styling, delay, edge type, background opacity all adjustable.

Multi-audio track switching

Language-aware menu, persistent selection across loads. Stable-volume loudness normalisation. Audio output routing to specific devices via AudioContext.setSinkId.

Power features

Ambient mode, chapter markers, resume playback, VR projections (360/180/fisheye/SBS-3D/little-planet), thumbnail scrubber previews, custom controls API.

Three steps to embed

From zero to a working embedded video in under a minute.

1

Deploy this site

Push the repo to GitHub, connect Cloudflare Pages, get <project>.pages.dev. No build step — it's pure static HTML.

2

Point at a video URL

Open /embed?url=… with any direct video link. MP4, MKV, HLS manifest, DASH manifest — anything the player can open.

3

Drop the iframe

Copy the iframe snippet from the demo above. Paste it on your blog, docs, Notion page — anywhere that accepts HTML.

Ready to embed?

One URL, one iframe. The player engine, WASM, and every feature ships from your own Cloudflare Pages origin — no third-party CDN dependency.

<iframe src="https://<your-project>.pages.dev/embed?url=<video-link>" style="width:100%;max-width:800px;aspect-ratio:16/9;border:0" allowfullscreen ></iframe>
Build your embed