loop.STILL IMAGES. MORE LIFE.

Duration

s

Natural movement,
bigger stories.

Make a little motion.

Your images. Your timing. One perfect loop.
Drop images or a video here to get started.

JPG, PNG, WebP, AVIF, MP4, WebM & more

Crisp motion.
Lighter files.

0:00 / 3.0 s
A little sequence starts here.

Refine

Canvas, background and GIF quality.

Canvas

Dimensionspx
Image fit

Background

Playback & quality

A careful balance of color detail and file size.

Advanced encoding
60%

Less grain saves space. More diffusion softens color steps.

Combine identical holds and crop unchanged areas. Timing stays intact.

Longest-edge limit. Does not resize the canvas.

A different perspective.

Drag to frame the selected image or video.

Crop

Drag to reposition100%Scroll or pinch to zoom

The frame matches your current canvas ratio. Video crop applies to the full clip.

Just the right moment.

Keep the part you love.

Image timing

Select an asset to edit

seconds

Your little loop.

Saved on this device, made by you.

Your images and videos stay on your device.

Loop Studio 3.0.27 · GIF engine 2.4.1

Choose your canvas.

A size for every idea. Your frames and timing stay intact.

Or set your own size

16 to 1,920 px per side

Image fit

Fill the canvas; edges may be cropped.

No export resizing. Original images are kept in your project.

Ready to make it move?

A few stills. A whole new story.

First frame
Untitled loop

Export size only. Your project canvas stays unchanged.

Optimized GIF encoding. Your frame timing is preserved.

File sizeNot calculated

No estimated size is shown.

Clear all assets?

Start again without changing your project settings.

All current images and video clips will be removed from this project. You can undo this action afterward.

Transition

Between these two frames.

0.4 s

The transition uses the end of the current frame. It does not add time to the sequence.

A small guide to looping.

From still to shareable, in a few clicks.

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.

Handy shortcuts

Play / pause
Space
Previous / next frame
← →
Undo / redo
⌘/Ctrl Z / Shift Z
Duplicate frame
⌘/Ctrl D
Save editable project
⌘/Ctrl S
Remove frame
Delete

Engine 2.4 checks every exported frame, reuses exact-repeat results, and safely adds missing colors when the shared palette has room. Existing palette colors never move. If validation still fails, the partial result is discarded and export restarts with per-frame palettes. High detail uses 256 colors and gentler dithering; custom dithering remains adjustable. Presets never resize your canvas; the export resolution control is optional. GIF timing: 0.02 to 60 seconds per image, in 0.01-second steps. Some GIF viewers may impose a slower minimum playback speed. GIF supports up to 256 colors per frame and one-bit transparency. Video import extracts lossless PNG frames from a browser-decodable clip (25 MB maximum, 100 project frames). Trim and FPS controls determine the extracted frames. GIF delays use 0.01-second increments. Video export records one pass in real time without sound; timing can vary slightly and this tab must stay visible. Autosave is local to this browser when storage is available. Save a project file to keep a portable backup.

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.

Video decoder

Repair unsupported videos without uploading them.

Native playback needs no download. For other codecs, the app loads the FFmpeg decoder once and caches it when storage is available.

When a network blocks that download, select the two official decoder files from your device. This bypasses the network for this session.

Use only the official single-thread @ffmpeg/core 0.12.10 files. JavaScript decoder files contain executable code.

After loading both files, close this window and select Retry video.

Start a new project?

Save a project file first to keep a portable copy. Undo can restore this project.