Docs
Embed Player
Introduction
This embedded player consists of a TikTok post hosted inside of an inline frame (iframe) element. This player allows you to do the following:
- Customize the player by appending query parameters in the iframe URL. For example, you can display the music information of this video using the "description" parameter, or you can hide the video controls using the "controls" parameter.
- Control the player by messaging the HTML host to enable functionality like playing, pausing, muting, and more.
See more on the custom options and messaging communication below.
Get started
First locate the TikTok post you want to embed in the player. The post URL follows this structure: www.tiktok.com/player/v1/{tiktok_post_id}.
View the following example: https://www.tiktok.com/player/v1/6718335390845095173
You can find the TikTok post ID on from the post URL. For example, 6718335390845095173 is the post ID from the URL https://www.tiktok.com/@scout2015/video/6718335390845095173
Customize the player
You can customize the player by choosing which playback interface elements should be hidden or displayed.
For example, this URL displays the TikTok post's music info and the description: https://www.tiktok.com/player/v1/6718335390845095173?music_info=1&description=1
Name | Description | Post type |
controls | 1: Display the progress bar and all the control buttons, such as the playvolume control and fullscreen buttons 0: Hide the progress bar and all control buttons Default to 1 | video, image |
progress_bar | 1: Display the progress bar 0: Hide the progress bar Default to 1 | video |
play_button | 1: Display the play button 0: Hide the play button Default to 1 | video |
volume_control | 1: Display the volume control button 0: Hide the volume control button Default to 1 | video, image |
fullscreen_button | 1: Display the fullscreen button 0: Hide the fullscreen button Default to 1 | video, image |
timestamp | 1: Display the video's current playback time and duration 0: Hide the time info Default to 1 | video |
loop | 1: Play the current video repeatedly 0: Stop the video while it ends Default to 0 | video |
autoplay | 1: Automatically play the video when the player loads 0: Do not start playing automatically Default to 0 | video |
music_info | 1: Display the music info 0: Do not display the music info Default to 0 | video, image |
description | 1: Display the video description 0: Do not display the video description Default to 0 | video, image |
rel | 1: Show recommended videos as related videos 0: Show the current video author's videos as related video Default to 1 | video |
native_context_menu | 1: Display the browser's native context menu 0: Hide the browser's native context menu Default to 1 | video, image |
closed_caption | 1: Display the closed caption icon 0: Hide the closed caption icon Default to 1 | video |
Message the HTML host
The HTML host communicates with the iframe embedded video page through the Window::postMessage
method, where the message body is defined as follows:
interface EmbeddedPlayerMessage<T> {
'x-tiktok-player': boolean; // Lets you know that this is an embed message.
value: T;
type: string; // Defines the message types below.
}
Host to player messages
Method name (type in EmbeddedPlayerMessage) | Parameter type (value in EmbeddedPlayerMessage) | Value | Post type | Remarks |
| void | void | video, image | Use this method to play videos in video posts and to play music in image posts |
| void | void | video, image | Use this method to pause videos in video posts and to pause music in image posts |
| number | 0–(video length) | video, image | For video posts, use this method to seek the video's time, measured in seconds. For image posts, use this method to seek the music's time, also measured in seconds. |
| void | void | video, image | |
| void | void | video, image | |
| number | 0–100 | video, image | Use this method to adjust the volume to a desired percentage of the maximum volume, measured on a scale of 0 to 100 |
| number | 0–(number of images -1) | image | Use this method to navigate to the index of the desired image |
Player to host messages
Method name (type in EmbedMessage) | Parameter type (value in EmbedMessage) | Value | Post type | Remarks |
| void | void | video, image | |
| number | -1: init 0: ended 1: playing 2: paused 3: buffering | video, image | |
| currentTime: number duration: number | 0–(video length) | video, image | The current playback time measured in seconds |
| boolean | True/False | video, image | |
| number | 0–100 | video, image | The percentage of the volume relative to the maximum volume measured on a 0–100 scale |
| number | video, image | ||
| number | 0–(number of images -1) | image | The index of the image currently in display |
Code example
<html>
<body>
<h1>The iframe element</h1>
<form action="javascript:seekTo(to)">
<label for="fname">Jump to (seconds)</label><br>
<input type="text" id="to" name="to" value="20"><br>
</form>
<iframe height="300" width= "400" src="https://www.tiktok.com/player/v1/6718335390845095173?&music_info=1&description=1" allow="fullscreen" title="test"></iframe>
<br />
<script>
// Receive messages
window.addEventListener('message', (event) => {
// do something
});
// Send messages
function seekTo(to) {
const iframe = document.querySelector("iframe");
iframe.contentWindow.postMessage({type: "seekTo", value: Number(to.value), "x-tiktok-player": true}, '*');
}
</script>
</body>
</html>