gif how-to

How to animate a photo into a GIF, without an app

Turn one still photo into a looping GIF in your browser: which effect suits which photo, what speed and boomerang actually change, why some GIFs come out huge, and how to get a clean loop.

Aman Jha·September 23, 2026·9 min read

One still photo, one small motion, a loop that doesn't jump. That's all an animated photo GIF is, and you don't need an app or an editor timeline to make one. We build a free GIF maker, so we measured what its settings really do to the file. Some of it surprised us.

The short answer

To animate a photo into a GIF, open a browser GIF maker such as Gifsy's, add the photo, pick a motion (zoom, bounce, shake, pulse, spin or glitch), set the speed and download. With Gifsy the result is a 480 × 480 looping GIF made in your browser, with no upload, no account and no watermark.

Three steps

  1. Add one photo. Open the GIF maker and drop in a JPG, PNG or WebP. Keep the subject near the middle: the GIF is a 480 × 480 square cut from the centre.
  2. Pick an effect and a speed. Choose Zoom, Bounce, Shake, Pulse, Spin or Glitch, set 8–30 fps, and leave boomerang off unless you want the loop to reverse.
  3. Make the GIF and download it. Click Make GIF. The frames are drawn and encoded in your browser in a few seconds, then saved as animation.gif.

What goes wrong at each step: a subject near the edge of the photo gets cut off by the square crop, a photo smaller than 480 px on its short side comes out soft, and a busy, detailed photo makes a much bigger file than you expect. Each of those has its own section below.

Which effect suits which photo

The effect matters more than any setting. A glitch on a pastel flower barely registers; the same glitch on a saturated poster looks deliberate. Here is what each one does, taken from the code rather than from marketing copy:

EffectWhat it does to the photoGood for
ZoomPushes in from 1.08× to 1.30× and back once per loopPortraits, product shots, food
PulseA smaller swell, 1.02× to 1.14×, like breathingLogos, hearts, “tap here” images
BounceTwo hops per loop, up to 7% of the frame, drawn at 1.16× so no edge showsMascots, pets, happy reactions
ShakeA ±2% jitter on two rhythms at once, so it looks handheldShocked or angry reaction GIFs
SpinOne flat 360° turn, drawn at 1.5× so the corners stay filledRound things shot from above
GlitchA 3–9 px colour split plus up to four torn slices per frameHigh-contrast, saturated images

Two of those numbers explain most complaints. Spin at 1.5× means you only see roughly the middle two-thirds of the photo, so a face at the edge disappears. And Zoom at 1.30× magnifies whatever softness the photo already has. Six effects is a short list, by the way: 3dgifmaker lists more than 70. If variety is the point, our comparison of free GIF makers says which tool to use for what.

Speed and loop length

The speed slider runs from 8 to 30 fps, but the tool always renders 30 frames. So the slider doesn't add frames, it changes how long each one stays on screen. That has a consequence people rarely expect: speed doesn't change file size. We made the same zoom GIF at 8 fps and at 30 fps. Both files were 1,089,282 bytes, to the byte.

There's a second quirk. The GIF format stores frame delays in hundredths of a second, so the delay gets rounded. At 30 fps the ideal 33 ms becomes 30 ms (the GIF plays a touch faster, about 33 fps); at 8 fps 125 ms becomes 130 ms. Real loop lengths:

Speed settingStored delay per frameLoop, boomerang off (30 frames)Loop, boomerang on (58 frames)
8 fps0.13 s3.9 s7.5 s
20 fps (default)0.05 s1.5 s2.9 s
30 fps0.03 s0.9 s1.7 s

For a reaction GIF, 20 to 30 fps reads as lively. For a logo that should breathe, 8 to 12 fps feels calm. Neither choice costs you bytes.

What boomerang actually changes

Boomerang plays the 30 frames forward and then backward, skipping the two end frames so nothing stutters. That's 58 frames instead of 30, and in our measurements the file grew by a factor of 1.92 to 1.95 every single time.

Here's the part we didn't see coming until we watched the outputs side by side. Zoom, Pulse, Bounce and Shake already move out and back inside one loop, so boomerang replays a motion that looks almost identical. You pay double for very little. Spin is different: with boomerang it turns one way and rewinds, without it it keeps turning. Glitch replays its torn slices in reverse. That's why it's off by default in Gifsy: leave it off for the first four, and turn it on for Spin or Glitch if you like the rewind.

The classic boomerang look (a burst of real movement played back and forth) needs several frames, not one photo. That's what the boomerang GIF maker does with three or more burst photos, no video needed.

Why some GIFs come out huge (measured)

We rendered the same six effects on two 720 × 524 photos from our gallery: a flat, cleanly coloured cartoon and a close-up of a golden retriever with a lot of fur.

EffectCartoon, boomerang offCartoon, onFur photo, offFur photo, on
Zoom1.0 MB2.0 MB3.5 MB6.7 MB
Bounce1.0 MB2.0 MB3.6 MB7.0 MB
Shake1.0 MB1.9 MB3.4 MB6.6 MB
Pulse1.0 MB1.9 MB3.4 MB6.6 MB
Spin1.4 MB2.6 MB3.3 MB6.5 MB
Glitch1.0 MB2.0 MB2.9 MB5.6 MB

The photo decides the size far more than the effect does. Same frame count, same 480 px, and the fur photo came out about 3.4 times bigger. A GIF can only hold 256 colours, and Gifsy builds one palette for the whole animation so colours don't flicker between frames. The compression inside a GIF loves long runs of the same colour. A cartoon is full of them. Fur, grass, foliage and gravel are the opposite: every pixel differs from its neighbour, so almost nothing compresses.

So if a GIF has to fit a size limit, the order of what to try is: check boomerang is off, then pick a simpler photo or crop tighter to a plainer area. Changing the effect or the speed barely moves the number. For where your GIF has to fit, see GIF size limits for Slack, Discord, GitHub and email.

Several photos into one GIF

A different job: you have several photos and want them to play in turn. Switch to “Combine several”, or open the photo slideshow GIF maker. Add two or more photos, set 0.2 to 1.5 seconds per photo, and they play in the order you added them with hard cuts between them.

Slideshows behave differently on size. Each photo is one frame, not 30, and each gets its own palette so unrelated photos keep their colours. Four flower photos at 0.6 seconds each came out around 300 KB. Photos can't be reordered once added, and there's no crossfade; ezgif has both (see our ezgif alternatives page for the trade-offs).

Getting a clean loop

  • Let the effect close the loop. Zoom, Pulse, Bounce, Shake and Spin all end exactly where they started, so the last frame flows into the first (Glitch is meant to jump). Don't trim frames afterwards in another tool; that's how a jump creeps in.
  • Centre the subject before you start. The square crop, and the extra zoom on Spin and Bounce, both work from the middle outwards.
  • Match the photo to the motion. A horizon that spins or a whole landscape that bounces looks wrong however smooth the loop is.
  • Turn boomerang on only for motion that should reverse. Spin and Glitch, or a burst of photos. Elsewhere it only adds weight.

Common problems

The GIF looks soft or blurry

The photo is probably under 480 px on its short side, so the square crop had to stretch it. Zoom and Spin stretch it further (1.3× and 1.5×). Start from a larger photo.

The subject is cut off

The GIF is a square from the centre of the photo. A wide photo loses its ends, and a subject near the edge can slip out, especially on Spin. Crop the photo so the subject sits in the middle before you add it.

Skies and gradients show bands

That's the 256-colour limit. Smooth gradients need more shades than a GIF can hold, so they step. Photos with flatter colour, or with the gradient cropped out, hold up best.

It needs text

Gifsy doesn't add captions. Put the text on the photo first, or use a caption-first tool such as Imgflip.

FAQ

Can I animate a photo into a GIF without an app?

Yes. Gifsy's GIF maker runs in the browser tab: add a photo, pick one of six effects, and download a 480 × 480 GIF. There's nothing to install, no account, no watermark, and the photo isn't uploaded.

Does a higher frame rate make the GIF bigger?

Not in Gifsy. The tool always renders 30 frames; the speed slider only changes the delay stored with each frame. We made the same GIF at 8 fps and at 30 fps and both files were exactly 1,089,282 bytes.

Why is my GIF so large?

Detail. A GIF has 256 colours and compresses flat areas well and texture badly. The same effect on a flat cartoon came out around 1 MB; on a photo of a dog's fur it was about 3.5 MB. Boomerang nearly doubles either number.

Should I turn boomerang on?

It's off by default. For Spin and Glitch it changes how the loop looks: Spin turns and rewinds instead of turning one way. For Zoom, Pulse, Bounce and Shake the motion already goes out and back, so boomerang looks almost the same and roughly doubles the file. Leave it off for those.

Can I make the GIF bigger than 480 pixels, or not square?

Not with Gifsy: the output is always a 480 × 480 square. If you need 1,920 px or a wide GIF, ezgif goes up to 1920 × 1920 (it uploads your file to its server to do it).

Can I add text to the GIF?

Gifsy has no text tool. Add the text to the photo first in any editor, or use a GIF maker built around captions such as Imgflip, whose free GIFs carry a small watermark.

Will a transparent PNG stay transparent?

No. Transparency isn't written into the GIF, so see-through areas come out as a solid background. For a cut-out with a transparent background, the sticker maker exports PNG or WebP instead.

When a flat GIF isn't enough

Every effect above moves the whole picture as one flat sheet. If you want the subject to stand off the background and move in depth as someone drags it on a web page, that's a 3D photo rather than a GIF. Our 3D photo maker does that from the same single photo, with an embed code for your site.

How we measured

On 23 September 2026 we drove the live GIF maker in headless Chromium: each of the six effect pages, the same photo, the default 20 fps, boomerang on and then off, and read the byte size of the GIF the page produced. The photos were two 720 × 524 images from our gallery (a flat cartoon character and a golden retriever close-up). For the speed test we made the same zoom GIF at 8 and 30 fps and read the frame delays stored in the file (13 and 3 hundredths of a second). Sizes are in MB of 1,048,576 bytes, rounded to one decimal. Your numbers will differ with your photo; the ratios shouldn't.