PIXRA
Work against Roblox, not with them.

Video inside
Roblox.

Drop a video. Get a Luau renderer and frame data back. Works in any ScreenGui, SurfaceGui, or BillboardGui.

Drop video or GIF here
MP4, WebM, MOV, or GIF up to 2MB. Larger files auto-compress. GIFs keep transparency.

Studio setup

1

Process your video or GIF

Drop a video or GIF above, choose your resolution and FPS, then hit Process video. Lower resolution = faster renderer. 64×36 at 12fps is a good starting point. GIFs play back at their own frame timing by default and keep transparent areas see-through.

2

Download all three files

From the Output tabs above, download PixraRenderer.lua, PixraData.lua, and LocalScript.lua. You need all three.

3

Set up in Roblox Studio

In the Explorer, go to StarterPlayerScripts. Insert a LocalScript and paste in the contents of LocalScript.lua. Then add two ModuleScript children inside it: name them PixraRenderer and PixraData - and paste the matching file contents into each.

📁 StarterPlayerScripts
📜 LocalScript paste LocalScript.lua
📦 PixraRenderer paste PixraRenderer.lua
📦 PixraData paste PixraData.lua
4

Hit Play

The video renders centered on screen automatically. To resize it, edit the Size line in your LocalScript. Multiply data.w and data.h by a scale factor like * 4 for 4× size.

Upload the spritesheet

Download the spritesheet PNG from the Spritesheet tab. Go to Roblox Creations and upload it there. Once uploaded, switch to the Image tab to find it and copy the numeric asset ID. Paste it into the ID field that appears on the site after processing. One per sheet.

Luau
local Pixra = require(script.PixraRenderer)
local data  = require(script.PixraData)

Pixra.play(container, data)  -- start playback on any Frame
Pixra.pause()                -- freeze current frame
Pixra.resume()               -- continue
Pixra.stop()                 -- stop and clean up
Pixra.seek(frameIndex)       -- jump to frame (1-indexed)
Pixra.setSpeed(2)            -- playback speed multiplier