To create a GIF with AI, design one cyclic motion, generate a short looping clip, verify the first and last frames, then convert the MP4 to GIF with deliberate dimensions and frame rate. The current Voor tool generates a clean MP4 loop—not a literal .gif file—so the conversion step is part of the honest workflow.
Define the loop before you generate
Choose a subject with a repeatable action:
- a badge that shimmers once;
- a character that blinks and returns to neutral;
- a product that makes one slow quarter-turn and reverses;
- a paper plane that rises, settles, and returns to its starting pose.
Avoid a story with a permanent state change. A glass that fills cannot seamlessly return to empty without a visible reset.
Generate the motion plate
Open the AI GIF Generator workspace. Today it selected Bytedance / Seedance 1.5 Pro, offered text plus optional image and last-frame image inputs, and included loop presets. The current selection was 5 seconds, 16:9, Public, with a displayed estimate of 63 credits.
For a chat reaction, use a square or portrait ratio instead. If you change settings, re-read the estimate; do not carry the 63-credit figure over to a different selection.
Prompt:
A folded teal paper plane rises gently, pauses, then settles back
into the exact starting position. Locked camera, constant lighting,
no new objects, no text, no cut. First and last frame match.
One slow cyclic motion designed for a seamless loop.
If you have a source image, use it to anchor the design. A last-frame image can make the return condition more explicit, but it does not guarantee a mathematically perfect seam.
Convert the MP4 to GIF
First inspect the MP4. Trim a few frames if the seam is cleaner before the generated tail ends.
With ffmpeg:
ffmpeg -i loop.mp4 \
-vf "fps=15,scale=720:-1:flags=lanczos,split[s0][s1];[s0]palettegen=max_colors=128[p];[s1][p]paletteuse=dither=bayer" \
-loop 0 loop.gif
Why these choices:
-
15 fpsreduces size while keeping simple motion readable. -
720pxwidth is enough for many docs and chat surfaces. - a generated palette avoids the worst banding.
-
-loop 0requests indefinite looping.
Keep the MP4 too. It will usually be smaller and cleaner on websites that support video.
Loop QA
Review at least five cycles:
[ ] first and last poses match
[ ] camera does not drift
[ ] background does not breathe or flicker
[ ] no one-frame flash at the seam
[ ] subject remains inside mobile-safe crop
[ ] GIF size is appropriate for the destination
[ ] alt text describes the motion and purpose
Fixes mapped to symptoms
The seam pops. Shorten the action, use a locked camera, and make the return pose explicit. Trim to the closest matching frame pair.
The background flickers. Simplify it or start from a source image with a flat background.
The GIF is huge. Reduce dimensions, frame rate, duration, or palette colors. Do not compress until the subject becomes unreadable.
Text melts during motion. Remove embedded text. Add real HTML text beside the animation or composite stable typography afterward.
The loop pauses unexpectedly. Some viewers honor frame delays differently. Re-export and inspect the GIF in the actual target application.
Limits
AI video models can approximate a loop, but they do not guarantee identical boundary frames, stable typography, or a small file. GIF is limited to a 256-color palette and has no efficient modern video compression. For product UI, prefer MP4/WebM with an accessible reduced-motion alternative; use GIF where platform compatibility requires it.
If the motion spec is cyclic, generate the short loop in the exact workspace, verify the current cost and visibility, then convert the approved MP4
instead of pretending the generator directly exported a GIF.

Top comments (0)