01. Bring your images. Drop images or videos onto the canvas or choose files. A video stays one editable clip with its original file. Only a thumbnail is generated at import. Animated GIF inputs still use their first frame. Images over 4,096 pixels on the longest edge are resized.
02. Find your rhythm. Drag assets to reorder them. Set image durations beneath each thumbnail. Select a video to trim its in/out points. Add a transition between timeline assets for crossfades, fades, slides or zooms. GIF frame rate affects export sampling only, not editing playback.
03. Make it yours. Click Templates in Canvas to choose an exact pixel size, or enter custom dimensions. Choose your image fit and background. Preview your sequence, then export a real animated GIF or a browser-supported video.
Video compatibility decoder
If native playback fails, Loop downloads the pinned single-thread FFmpeg decoder (about 31 MB) from jsDelivr or unpkg. Media files are not uploaded. The decoder is cached locally when browser storage is available. Cancel stops the worker.
A playable copy may be re-encoded to 8-bit video with a maximum 1,920 px edge. It is not a promise of color, HDR or alpha preservation. The original bytes remain in your project. Damaged or encrypted media may still fail.
Decoder: @ffmpeg/core 0.12.10, GPL-2.0-or-later. The core is loaded unmodified. Source and build scripts: ffmpeg.wasm v12.15. FFmpeg and codec-library source references are recorded in its Dockerfile. GPL license.