Simple iframe embed
The easiest way to add the player is to insert an <iframe> with a video or playlist URL. You can copy the code from the Kinescope dashboard or create it manually.
Basic code
<iframe
src="https://kinescope.io/embed/VIDEO_ID"
width="640"
height="360"
allow="autoplay; fullscreen; picture-in-picture; encrypted-media; gyroscope; accelerometer; clipboard-write; screen-wake-lock;"
style="border: none;"
></iframe>
Replace VIDEO_ID with the ID of your video or playlist.
allow attribute is required. Without it, autoplay, fullscreen, Picture-in-Picture, and DRM may not work.Avoid using the sandbox attribute. If you need it, specify:
allow-same-origin allow-scripts allow-popups allow-popups-to-escape-sandbox allow-presentation
URL parameters
Add parameters to the end of the URL to configure player behavior. Start them with ? and separate multiple values with &:
https://kinescope.io/embed/VIDEO_ID?autoplay=1&loop=1
<iframe
src="https://kinescope.io/embed/VIDEO_ID?parameter=value"
width="640"
height="360"
allow="autoplay; fullscreen; picture-in-picture; encrypted-media; gyroscope; accelerometer; clipboard-write; screen-wake-lock;"
style="border: none;"
></iframe>
Supported parameters
| Parameter | Values | Description |
|---|---|---|
autofocus | true / false / 1 / 0 | Move focus to the player. |
autoplay | true / false / 1 / 0 | Start the video automatically after the player loads. If playback with sound fails, the player tries to start with sound muted. |
autopause | true / false / 1 / 0 | Pause when another player on the page starts playing. |
muted | true / false / 1 / 0 | Mute the player. |
loop | true / false / 1 / 0 | Loop the video. |
playsinline | true / false / 1 / 0 | Play video on mobile devices without automatically entering fullscreen mode. |
preload | true / false / 1 / 0 | Preload the video. false loads only the poster. true loads the required data in advance. |
background | true / false / 1 / 0 | Hide all controls and set autoplay, muted, and loop to true. |
t | number | Time in seconds where video playback starts. |
seek | number | Time in seconds where playback starts. This trims the beginning of the manifest. |
duration | number | Clip duration in seconds. Use it with seek to show only part of a video. |
quality | VideoQuality | Video quality: auto or height in pixels, such as 720 or 1080. See Optimization. |
audiotrack | string | Enable the audio track for the specified language. @experimental |
texttrack | true / false / 1 / 0 / string | Enable subtitles. true selects the browser language, then the player language, then the first track. string selects the track for the specified language. |
transparent | true / false / 1 / 0 | Use a transparent player background. |
title | true / false / 1 / 0 | Show the title and subtitle. |
controls | true / false / 1 / 0 | Show player controls. |
no_poster | 1 / 0 | Hide the poster. |
keyboard | true / false / 1 / 0 | Control the player with the keyboard. |
speedbtn | true / false / 1 / 0 | Show the playback speed button. |
notifications | true / false / 1 / 0 | Show notifications in the player for network problems, errors, Chromecast, and other events. @experimental |
watermark | string | Watermark text. Enable this feature in the dashboard. Otherwise, the player ignores the parameter. |
dnt | true / false / 1 / 0 | Disable user activity tracking and metrics. |
drmauthtoken | string | Custom authorization token for license requests. See DRM encryption. |
adtagurl | string | Advertising tag URL. See Advertising. |
externalid | string | Custom identifier sent with metrics. |
1 and 0 instead of true and false. For example, ?autoplay=true and ?autoplay=1 are equivalent. A parameter without a value, such as ?autoplay, is treated as true.seek and duration parameters do not work with DRM-protected videos. You can use them with video URLs and HLS manifests.This example plays a 30-second clip starting at 60 seconds:
<iframe
src="https://kinescope.io/embed/VIDEO_ID?seek=60&duration=30"
width="640"
height="360"
allow="autoplay; fullscreen; picture-in-picture; encrypted-media; gyroscope; accelerometer; clipboard-write; screen-wake-lock;"
style="border: none;"
></iframe>
Lazy loading
When the <iframe> is outside the viewport, such as near the bottom of the page, you can delay loading it. This helps the page open faster:
<iframe loading="lazy" ...></iframe>
See Optimization for details.
Embed examples
Responsive player size
The player adapts to the container width. Place the code in your container and adjust the styles if needed.
<style>
.kin-player-embed-container {
position: relative;
padding-bottom: 56.25%;
height: 0;
max-width: 100%;
overflow: hidden;
}
.kin-player-embed-container iframe {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
border: none;
}
</style>
<div class="kin-player-embed-container">
<iframe
src="https://kinescope.io/embed/VIDEO_ID"
allow="autoplay; fullscreen; picture-in-picture; encrypted-media; gyroscope; accelerometer; clipboard-write; screen-wake-lock;"
></iframe>
</div>
Fixed video size
<iframe
src="https://kinescope.io/embed/VIDEO_ID"
width="640"
height="360"
allow="autoplay; fullscreen; picture-in-picture; encrypted-media; gyroscope; accelerometer; clipboard-write; screen-wake-lock;"
style="border: none;"
></iframe>
Next steps
- Optimization — viewport autoplay and quality limits
- IFrame API — control the player from JavaScript
- Embedding from the dashboard
— UI-generated code, LLM-friendly embeds, and templates (
player_id)