Continue watching
Picks up where you left off
Positions live in the viewer's browser (riftplayer.watch.v1) and are re-applied on open — plain routes, no ?t= needed.
Playground
Build a player URL live
Start
Docs
Wired for embedding
The player reports progress, episodes and state to your page. The essentials:
<div style="position:relative;padding-bottom:56.25%;height:0">
<iframe src="https://your-host/movie/1440098"
style="position:absolute;inset:0;width:100%;height:100%;border:0"
allowfullscreen allow="autoplay; fullscreen"></iframe>
</div>
addEventListener("message", (e) => {
if (e.data?.type !== "vidrift:episode") return;
history.replaceState(null, "",
`/tv/${e.data.tmdbId}/${e.data.season}/${e.data.episode}`);
});
iframe.addEventListener("load", () =>
iframe.contentWindow.postMessage(
{ type: "vidrift:get-state" }, "https://embed.vidrift.net"));
// pause behind your own menu, restore after
send({ type: "vidrift:pause" });
send({ type: "vidrift:set", quality: "720p" });
send({ type: "vidrift:resume", currentTime: 812.4 });
Routes & params
/movie/{tmdb_id} | Movies by TMDB id |
/tv/{tmdb_id}/{s}/{e} | TV by TMDB id |
/anime/{anilist_id}/{e} | Anime by AniList id (?dub=1) |
brand · brandColor · brandLogo | Your name, accent and logo on the loading card |
poster · watermark · font · uiScale | Backdrop, corner bug, typeface, control scale |
title · t · server · quality | Title override, start time, pinned server / rendition |
muted · autoplay · hide · mobileSheets | Start state and hidden controls |
resume · exit | resume=0 skips stored positions, exit=0 removes back arrows |
Events (forwarded verbatim)
vidrift:progress | Position every 5s while playing |
vidrift:paused / unpaused | Playback state changed |
vidrift:ui-visible / ui-hidden | Player chrome shown / hidden |
vidrift:episode | Episode switched (URL follows automatically) |
vidrift:nextup / nextup-play | Credits card shown / play-next clicked |
vidrift:ended · vidrift:exit | Reached the end · back pressed |
vidrift:state | Full state: servers, qualities, subtitles… |
riftplayer:fullscreenchange | CSS-fullscreen fallback (embedded pages) |