Order comes from the filenames
The images are sorted by their original filenames and assembled in that order. Anything a camera, a renderer, or a timelapse app produces — IMG_0001.jpg, render_0420.png — already sorts correctly, so in practice you drop the folder in and the order is right.
The one case that breaks is unpadded numbering: shot1, shot2 … shot10 sorts as 1, 10, 11, 2 in every alphabetical sort there is. If your files look like that, rename them with leading zeros first. It's the single most common reason an assembled sequence comes out scrambled, and no tool can reliably guess around it.
Frame rate is a creative decision, not a default
The input frame rate sets how many of your images become one second of video, and it's the control that decides what the result feels like. Twenty-four images per second from a 240-image sequence gives ten seconds of smooth motion. Two per second from the same sequence gives two minutes of deliberate, stepped animation. Same files, completely different piece.
For timelapses the number follows from how long you want the result to be: divide your image count by the seconds you're aiming for. A thousand frames at 25fps is forty seconds; at 10fps it's a minute and forty, and noticeably more staccato.
MP4, WebM or GIF
GIF output also takes a loop count, including infinite. And there's an option to hold the last frame for a few extra seconds, which is the usual fix for a loop that ends too abruptly to read.
- MP4 (H.264) — plays everywhere, the right default for anything that needs to be shared or embedded.
- WebM (VP9) — smaller at the same quality and supports real alpha transparency, which MP4 doesn't. Worth it for web use where you control the player.
- GIF — for short loops that have to autoplay inside contexts that won't run video. Far larger than either video format for the same content, and limited to 256 colours per frame, so keep it to a couple of seconds.
Colour: why assembled sequences come out washed out
This is the classic failure of image-sequence assembly, and it catches almost everyone once. Your PNGs are sRGB. Video is YUV with its own primaries and transfer curve. Encode the images without saying which is which, and the player applies the wrong curve — the result looks pale, low-contrast and slightly lifted, exactly as if someone had dragged a brightness slider the wrong way.
The converter handles the sRGB to bt709 conversion and then tags the output file explicitly — primaries, transfer, matrix and range all written onto the video. That tagging is what stops the next player from guessing. A file without it is a coin flip across devices.
Quality and size
Quality presets cover most cases, and there's a direct CRF control underneath for when you want to be specific. Lower CRF means higher quality and a bigger file; the scale is logarithmic, so small numeric changes matter more than they look.
Rendered content — screen recordings, synthetic graphics, flat-colour animation — compresses far better than camera footage, so a sequence of renders at a high quality setting is often much smaller than you'd expect. Camera stills with sensor noise go the other way: the noise is detail as far as the encoder knows, and it costs bitrate.
There's also a chroma subsampling override. The 4:2:0 default is right for almost everything and is what maximises compatibility, but sharp-edged graphics and text can hold up better at 4:4:4 if the players you care about support it.
What people use this for
- Timelapses from an intervalometer or a trail camera.
- Renders out of Blender, After Effects or a 3D tool that wrote a PNG sequence.
- Stop-motion and frame-by-frame animation shot as individual photographs.
- Scientific and microscopy capture, where the instrument writes numbered TIFFs or PNGs and never video.
- Rebuilding a clip after editing frames individually — pairs with extracting them in the first place.
Why the browser is the right place for this
An image sequence is the worst possible thing to upload. A thousand PNGs can be several gigabytes, and a server-based tool needs all of it before it can start. Assembling locally means the files are read straight off your disk, the encode starts immediately, and nothing is transmitted anywhere. There's no upload wait, no size cap, and no copy of your sequence sitting on someone else's machine.