You can embed videos in Roblox using the VideoFrame object, which plays video files hosted on Roblox's servers or external platforms

To add a video to your Roblox game, you create a VideoFrame object inside a ScreenGui or SurfaceGui, then point it to a video asset. The video must be uploaded to Roblox first — you cannot link directly to YouTube or other external sites. Once uploaded, you reference the video by its asset ID in your script, and the VideoFrame handles playback. This works in both games and experiences built with Roblox Studio.

The process takes about five minutes if you already have a video file ready. You will need Roblox Studio installed, a video file in MP4 format (H.264 codec recommended), and basic familiarity with the Explorer window and Properties panel.

Key Takeaways

  • Videos must be uploaded to Roblox as assets before you can use them — you cannot embed YouTube links or external video URLs directly.
  • VideoFrame is the object you add to your GUI to display the video, and it must sit inside a ScreenGui or SurfaceGui.
  • You reference the video using its asset ID, which Roblox assigns when you upload the file.
  • Video playback is controlled through scripts using methods like Play(), Pause(), and Stop(), or by setting the Playing property to true or false.

Upload Your Video File to Roblox

Open Roblox Studio and load the game where you want to add the video. In the menu bar, go to File and select Save As to ensure you are working in a saved project. Then click on the Toolbox button in the right panel (or press Ctrl+Shift+T). At the top of the Toolbox, click the Marketplace tab, then search for "Video" to see example VideoFrames — but do not use these yet.

To upload your own video, go to the Create page on the Roblox website while logged in. Click Creations in the left menu, then Audio Library. You will see an option to upload audio, but videos go through a different route. Instead, open Roblox Studio, go to File > Game Settings, and look for the Assets section. Click Upload Asset and choose your MP4 video file. Roblox will process it and assign an asset ID. Note this ID — you will need it in your script.

Create a VideoFrame in Your GUI

In Roblox Studio, open the Explorer window (View > Explorer if it is not visible). Right-click on StarterGui and select Insert Object > ScreenGui. This creates a container for your video. Right-click the ScreenGui and select Insert Object > VideoFrame.

The VideoFrame will appear in your Explorer tree. Click on it to select it, then in the Properties panel on the right, set its size and position. For a full-screen video, set Size to {1, 0}, {1, 0} (which means 100% of the screen width and height). Set Position to {0, 0}, {0, 0} to place it at the top-left corner. You can also resize it by dragging in the viewport if you prefer a smaller window.

Set the Video Asset ID in Properties

With the VideoFrame still selected, look at the Properties panel. Find the Video property — this is where you paste your asset ID. The ID looks like a long number, such as rbxassetid://1234567890. Paste the full ID (including the rbxassetid:// prefix) into the Video field and press Enter.

You can also set other properties here: Looped (true or false, depending on whether the video should restart when it ends), PlaybackSpeed (1 for normal speed, 0.5 for half speed, 2 for double speed), and Volume (0 to 1, where 1 is full volume). These can all be changed later in a script if you want player controls.

Control Playback with a Script

To make the video play automatically when the game starts, you can add a simple script. Right-click the VideoFrame in the Explorer, select Insert Object > LocalScript. In the script editor, type:

local videoFrame = script.Parent videoFrame:Play()

This tells the VideoFrame to start playing as soon as the game loads. If you want the video to play only when a player clicks a button, create a TextButton instead, and use a script that listens for the MouseButton1Click event. For example:

local button = script.Parent local videoFrame = button.Parent:WaitForChild("VideoFrame") button.MouseButton1Click:Connect(function()   videoFrame:Play() end)

You can also pause, stop, or resume the video using videoFrame:Pause(), videoFrame:Stop(), or by setting videoFrame.Playing = true or false in your script. These methods let you build custom controls like play, pause, and volume buttons.

Troubleshoot Common Issues

If the video does not appear, check that the asset ID is correct and includes the rbxassetid:// prefix. If the video plays but has no sound, make sure the Volume property is set above 0 and that your device volume is not muted. If the video is very slow to load, the file may be too large — Roblox recommends keeping videos under 100 MB and using H.264 codec in MP4 format.

If you see a black screen instead of the video, the VideoFrame may be behind other GUI elements. In the Explorer, drag the VideoFrame to the bottom of the ScreenGui's children list, or set its ZIndex property to a higher number (like 10) to bring it to the front. If the video plays but looks stretched or squashed, adjust the VideoFrame's Size and AspectRatio properties to match your video's dimensions.

Frequently Asked Questions

Can I use a YouTube video directly in Roblox?

No. Roblox does not support direct YouTube links or external video URLs. You must download the video as an MP4 file, upload it to Roblox as an asset, and then reference the asset ID in your VideoFrame. This also protects your game if the external video is removed or the link breaks.

What video formats does Roblox accept?

Roblox accepts MP4 files with H.264 video codec and AAC audio codec. Other formats like MOV, AVI, or WebM may not work. If your video is in a different format, use free tools like HandBrake or FFmpeg to convert it to MP4 before uploading.

How do I make the video loop continuously?

In the Properties panel, set the Looped property to true. The video will restart automatically when it reaches the end. You can also change this in a script by writing videoFrame.Looped = true or videoFrame.Looped = false depending on when you want looping to turn on or off.

Can players hear the video audio in a multiplayer game?

Yes, but only if they are in the same game server. The audio plays locally on each player's device, so all players hear it at the same time. If you want synchronized audio across all players, you may need to use a different approach, such as playing sound through a Sound object instead.

Is there a size limit for video files?

Roblox recommends keeping videos under 100 MB. Larger files take longer to upload and may cause performance issues in-game. If your video is longer than a few minutes, consider splitting it into smaller clips or compressing it further using video editing software.