Most video-to-sheet converters grab frames at a fixed interval and stop there. That works for a one-shot effect. For a walk cycle it leaves you a sheet that stutters where it loops, a green halo on every outline, and a character that jitters because each frame was cropped on its own. This tool handles those three problems for you: it finds the motion's period, keys out the backdrop with edge despill, and crops every frame with one shared box.
How to use the Video to Sprite Sheet
- Drop an MP4, WebM or MOV. A character filmed or rendered on a flat green, magenta, blue or white backdrop gives the cleanest result. WebM with an alpha channel keeps its transparency in Chrome and Edge.
- Set the start and end of the part you want (up to 30 seconds) and the capture size, then press Extract frames. The clip plays once while every decoded frame is captured.
- If the motion repeats, the tool finds one full cycle and selects it. Choose how many frames the sheet should have; they are spread evenly through the cycle, and the closing frame is left out so the loop has no hitch.
- Check the background key. Auto reads the backdrop colour from the frame border. If it gets it wrong, click the backdrop in the source frame. Adjust tolerance, edge softness, despill and the 1px shrink while the result updates live.
- Set the max frame size, and turn on Pixelate if you want hard edges and one shared palette for every frame.
- Export the PNG sheet with Aseprite, Phaser/TexturePacker, Godot or CSS data, an animated GIF, or a ZIP with all of it plus single frames.
What you get
- PNG sprite sheet with a transparent background, laid out in a grid (auto or fixed columns, optional padding).
- Frame data as Aseprite JSON, Phaser/TexturePacker JSON (hash or array), a Godot 4 SpriteFrames
.tres, CSS sprite classes with a stepped keyframe animation, or Unity slicing settings. - Animated GIF at any integer scale, transparent or on black/white.
- ZIP with the sheet, GIF, every data format and each frame as its own PNG.
Which engines it fits
- Godot 4: drop the PNG and the
.tresinto the same folder, then assign the SpriteFrames to an AnimatedSprite2D. If the PNG lives elsewhere, edit theres://path on the first line. - Unity: import the PNG as Sprite (Multiple), set Filter Mode to Point, and slice with Grid By Cell Size using the numbers in the Unity settings file.
- Phaser 3 and PixiJS: load the PNG with the TexturePacker JSON (hash) as an atlas. The JSON also lists the animation's frame names in order.
- GameMaker, Defold, Construct, RPG Maker: import the PNG as a strip or grid with the frame size shown under the export settings.
Tips from making games with it
- Film or render against a colour that does not appear on the character. Magenta is safest for green-clad heroes; green for anything red or pink.
- Leave a margin around the character. If a limb leaves the frame, the shared crop cannot bring it back.
- For walk and run cycles, 8 frames at 10–12 fps reads well at 32–64 px. Idles can use 4–6 frames with Ping-pong in the Animation Previewer.
- If outlines keep a tint after keying, raise Edge softness slightly and keep Despill on. Turn on Shrink 1px only when a coloured ring remains.
- Pixelate at the final in-game size. Downscaling a 512 px frame to 48 px with one shared palette looks far better than scaling an already-pixelated sheet.
Use cases
- Turning rotoscoped reference footage into placeholder animation for a prototype.
- Extracting a looping cycle from an AI video model's output of your character on a green screen.
- Converting a Blender or Spine render to a sprite sheet without setting up a render pipeline.
- Getting effects (smoke, magic, water) rendered as video into a game as a sprite sheet.
FAQ
Is my video uploaded anywhere?
No. The file is read by your browser and the frames are processed on your device. Nothing is sent to a server, and the tool keeps working if you go offline after the page has loaded.
Which video formats work?
Anything your browser can play: MP4 (H.264), WebM (VP8/VP9/AV1) and MOV in most cases. HEVC/H.265 .mov files from iPhones only decode in Safari and some Chrome builds. If a file will not open, convert it to H.264 MP4 first.
How does loop detection work?
Every captured frame is reduced to a tiny silhouette of the subject. The tool then measures how similar each frame is to the frame N steps later for every possible N, finds the period where the motion repeats, and picks the cycle whose first and last frames match best. If no lag is clearly better than the rest, it treats the clip as a one-shot action and uses the whole range.
Can it keep a transparent background from the video?
Yes, in Chrome and Edge, which decode the alpha channel of VP8/VP9 WebM files. Choose Keep under Background so nothing else is removed. Other browsers show such videos on black, so key them instead.
How many frames can it handle?
Up to 30 seconds per capture. Frames are stored in memory at the capture size you choose, and the tool caps the total at about 350 MB, so long clips at large capture sizes stop early. For sprites, 256–512 px capture is plenty.
Why do my frames look blurry when I set a small size?
Shrinking a video frame averages pixels, which softens edges. Turn on Pixelate to snap the result to hard alpha and a shared palette, which gives crisp pixel-art edges at the final size.
Can I get a sprite sheet without filming anything?
Yes. The AI generator on this site draws your character and animates it from a library of motions, then exports the same formats as this tool.