Video playback

You can use VideoFrame to play video assets in your game, either on a SurfaceGui in the 3D world or on a ScreenGui interface. Because every video asset must be downloaded to each player's device before it can play, the way your game preloads and plays video has a direct impact on data usage and performance. Monitoring how often video is downloaded versus actually viewed helps you reduce unnecessary data transfer and deliver a smoother experience, especially on lower-end devices.

Observability

The Video Service dashboard provides insights and analytics for monitoring and optimizing how your game downloads and plays video assets. You can find it in the Monitoring section of the Creator Dashboard. The dashboard features two primary charts: Playback breakdown, which shows the proportion of efficient versus inefficient video usage, and Playback hours, which tracks total video playback hours over the selected period so you can see how new videos, updates, and changes to your playback logic affect usage over time.

You can scope both charts using the following filters:

FilterDescription
Date rangeThe time window for the displayed data, such as the last 28 days.
PlaceThe specific place within your game to analyze.
Time intervalThe granularity of the data points, such as days.

Video usage categories

Both charts categorize video usage into the following dimensions. Efficient usage is video that is preloaded, played, and actually viewed by your players.

StatusDescription
Played, viewedVideo that was played and was actually viewed by your players. This represents efficient video usage.
Preloaded, never playedVideo that was downloaded (the Video or VideoContent property was set) but never played. This data was downloaded unnecessarily.
Played, never viewedVideo that was played but never actually viewed by players, for example because no player was nearby or the relevant UI was not visible. This playback still consumed data and memory without providing any benefit to players.

If you decode a video only to play its audio, it's not counted as viewed because the visual content is never displayed. If you only need the audio, extract it and play it as a separate audio asset instead of using a video asset. This is more efficient and reduces unnecessary data and memory usage.

Improving video efficiency

To improve video efficiency, only set the Video or VideoContent property and call VideoFrame:Play() when a player has a high chance of seeing or hearing the VideoFrame, and clear the property (for example, set it to "") once the video is no longer visible or playing and no players are nearby.

Preloading and setting the video content ahead of time is still recommended when you are confident the video will be seen or heard, such as a mandatory cutscene later in the game or a video displayed in a central area like a home hub. In these cases, preloading helps the video play back smoothly without a loading delay when the player reaches it.

©2026 Roblox Corporation. Roblox, the Roblox logo and Powering Imagination are among our registered and unregistered trademarks in the U.S. and other countries.