Loopr
Stills to GIF · 100% On-Device

Turn stills into a
looping GIF.

A folder of screenshots, photos, exported frames or design comps. Loopr lines them up, lets you drag to reorder and tune the timing frame by frame, and plays a live preview that shows exactly what you'll export — transparency and all. One click writes a clean, optimized looping GIF — no upload, no account, no watermark, entirely on your Mac. Available in 13 languages.

v1.2.0 · macOS 14+, including 27 Golden Gate · Apple Silicon & Intel · Signed & notarized by Apple · No account

A Windows build is on the way


How it works

Drop. Reorder. Time. Export.

Drop in your stills
Drag in a set of images — PNG, JPG, WebP, BMP, TIFF, even an existing GIF. They land as frames, ready to arrange.
Reorder & time them
Drag frames into the order you want. Set a per-frame delay, or a global delay with Apply to all frames — the fps readout updates live.
Preview it playing
Hit play and watch the loop at its real timing, or scrub the filmstrip frame by frame. Pick a background — Clear, White or Black — and the preview shows exactly what you'll export.
Export the GIF
Choose a loop count and a resolution scale, then export a clean, optimized looping GIF. It never leaves your Mac.

Timing & preview

A loop you can feel before you export.

A GIF lives and dies by its timing. Loopr puts the delay of every frame in your hands and plays the result back exactly as it'll export — so you tune the loop, not guess at it.

Reverse and ping-pong
Play it backwards, or forward-then-back for the boomerang effect. Ping-pong doesn't repeat the frames at each end on the way back, so the turn doesn't stutter — and because a GIF loops, neither does the seam. The stage plays whichever direction you pick, so you watch the turn before you export it rather than after.
Seen, not guessed
Make the file smaller, on purpose
GIFs are big mostly because of how many colors they carry. Cap the palette at 128, 64, 32 or 16 and watch the size fall — on screenshots and flat artwork it's a fraction of the size for no visible difference. Dithering is a separate switch, because it cuts both ways.
Under a quarter the size
Drop in a GIF, get its frames
Bring in an animation you already have and it opens as its individual frames, each keeping the timing it had. Retime it, reverse it, drop the frames you don't want, export it again.
Round trip
Per-frame delay, or all at once
Give each frame its own delay for a hold-then-snap feel, or set a global delay and hit Apply to all frames for a steady cadence. A live fps readout tells you how fast the loop is actually playing.
Live fps
Play/pause preview, true timing
Press play and watch the loop at its real per-frame speed — not an approximation. A scrubber and filmstrip let you jump anywhere and step one frame at a time to check the order and the beats.
Scrubber & filmstrip
Loop count your way
Seamless forever, or a set number of plays — choose infinite, , or . The GIF carries the loop setting with it wherever it's posted.
∞ · 1× · 3× · 5×
Transparency, WYSIWYG
For frames with transparency, pick a background — Clear keeps PNG transparency, or flatten onto White or Black. The preview shows the exact pixels you'll export, so there are no surprises after.
Clear · White · Black

Features

Everything a good loop needs.

Drop in stills, arrange them, tune the timing, and export — with a preview that never lies and nothing ever leaving your Mac.

Drop in any stills
PNG, JPG, WebP, BMP, TIFF — even an existing GIF to re-time. Screenshots, photo bursts, exported frames, design comps: if it's an image, it becomes a frame.
Many formats
Drag to reorder
The frame order is the animation. Drag frames around until the sequence reads right — the filmstrip and preview update as you go, so the story of the loop is always in front of you. Or sort the whole strip at once, by name, date or size, either direction — and back to the order you added them in whenever you want. Names sort naturally, so frame2 comes before frame10 and a dropped folder arrives in the order a person would count it.
Drag or sort
Per-frame timing
Edit the delay on any single frame — hold on a title, snap through a transition — or set one global delay and Apply to all frames. The live fps readout tells you how fast it really plays.
Global or per-frame
Play/pause preview
Watch the loop at its true per-frame timing, with a scrubber and a filmstrip for jumping around and stepping one frame at a time. What plays here is what exports.
True timing
Duplicate a frame, clear the lot
Holding a pose a beat longer means repeating a frame. Every tile has a duplicate button beside its , and ⌘D copies whichever frame is on the stage — the copy lands right after the original. Remove all clears the strip in one go instead of forty clicks, and asks first, because it throws away the order you arranged and any delays you set by hand.
⌘D
A frame that won't open says so
An image that fails to load is marked on the strip, named, and reported when it happens — rather than sitting there as a blank tile that looks like a frame you just haven't looked at yet, and then turning up inside the export.
No silent blanks
Loop count
Infinite for a seamless loop, or a fixed , or when you want it to play a set number of times and stop.
∞ · 1× · 3× · 5×
Transparency your way
Behind transparent frames, choose Clear to keep PNG transparency, or flatten onto White or Black. The preview renders exactly what you'll get — fully WYSIWYG.
Clear · White · Black
Resolution scale
Scale the output down for a smaller, faster-loading file — handy for chat, email, or a README — while the source frames stay full quality.
Smaller files
Optimized GIF export
One click writes a clean, optimized looping GIF. Encoding is pure Python/Pillow, built in — no ffmpeg, no command line, nothing else to install.
One click
No upload, no watermark
No web uploader, no account, no sign-in, and nothing stamped on your GIF. Loopr isn't a service dressed up as an app — it's just an app.
Just an app
100% on your Mac
Loopr only ever sees the images you add, and everything happens locally — no cloud, no telemetry, nothing uploaded. The only network calls are the optional license check and update check.
Privacy
13 languages
Loopr speaks 13 languages — German, English, Spanish, French, Italian, Japanese, Korean, Dutch, Polish, Brazilian Portuguese, Russian, Turkish and Simplified Chinese — with an in-app picker that auto-detects your Mac's language on first launch and lets you switch any time. Numbers follow it too, so the fps readout says 8,3 in German rather than 8.3.
13 languages
Light and dark, properly
The whole window follows your Mac's appearance — frames, filmstrip, controls and all — with contrast that stays readable in both.
Signed & notarized
Opens with a normal double-click — no "unidentified developer" warning, no Open Anyway, no Terminal. Signed with an Apple Developer ID and notarized by Apple. One universal build for Apple Silicon and Intel.
No warnings
Built for everyone
Keyboard-driven end to end — add frames, reorder, play/pause, step frame by frame and export from the keyboard — with VoiceOver labels and WCAG 2.1 AA contrast in both light and dark.
WCAG 2.1 AA
A first-launch welcome
One screen: what Loopr does, and how to start. It appears once, on a Mac that has never run Loopr before, and leaves the empty state behind it.
New in 1.2.0
Undo removing a frame
Removing a frame was the one destructive act with no confirmation and no way back. The toast that reports it offers Undo, and the frame returns to the position it held, with the delay you had set on it.
New in 1.2.0
In the box
Drag to reorder Per-frame delay Global delay · Apply to all Live fps readout Play / pause preview Loop ∞ · 1× · 3× · 5× Resolution scale Clear · White · Black

Set a frame's delay and watch the preview and fps update instantly — and the background you pick is the background you'll export. Nothing leaves your Mac.


Pricing

Free for you. Fair for work.

Personal use is free forever — the whole app, unlimited GIFs, no key, no account, no watermark, no nag screens. If Loopr earns its keep at your job, a one-time business license keeps it supported.

Personal
Free forever
For individuals and personal projects
  • The whole app — every control, unlimited GIFs
  • Per-frame timing, loop count, resolution scale
  • WYSIWYG transparency and play/pause preview
  • 100% on-device — no upload, no watermark
  • No account, no nag screens
  • Free updates forever
Download — Free
Business
$5 / computer
One-time payment — no subscription
  • Everything in Personal
  • Use commercially at work
  • One-time payment — no subscription
  • Free updates forever
  • Supports solo indie development

The personal tier is the full app — buy a business license only if you use Loopr commercially. One seat per computer, paid once, yours for life. Secure checkout via Stripe; your license key is emailed instantly.


Download & install

Get set up in seconds.

Download the app and drag it into Applications — that's it. No Terminal, no Homebrew, no sign-up.

Download Loopr for Mac — Free

Version 1.2.0 · Released September 8, 2026 · Free updates forever

macOS 14 Sonoma or later, including macOS 27 Golden Gate · Apple Silicon or Intel
Everything Loopr needs is built right into the app — no ffmpeg, no Python to install, no Homebrew, nothing else to set up. One universal build runs natively on Apple Silicon and Intel.
Opens with a double-click
Loopr is signed with an Apple Developer ID and notarized by Apple, so it opens cleanly the first time — no Open Anyway trip through System Settings, no Terminal. Open the DMG, drag Loopr into Applications, and launch it.
Your images stay yours
Loopr works entirely on your Mac — nothing is uploaded, there's no account, and your GIF is never watermarked. Your source stills are only ever read, never changed.
Check the file you downloaded
Loopr is signed with an Apple Developer ID and notarized by Apple, and macOS checks that every time you open it — that is the check that catches a file altered on its way to you. To confirm it yourself, compare the SHA-256 of your copy with the one published for the Loopr.dmg this page serves.
SHA-256 checksum
Published checksum
Run this on your download and compare
shasum -a 256 ~/Downloads/Loopr.dmg

Or have your Mac compare them for you: save Loopr.dmg.sha256 beside the download and run shasum -a 256 -c Loopr.dmg.sha256.


FAQ

Common questions.

Is Loopr really free?
Personal use is free forever — the whole app, unlimited GIFs, no account, no trial timer, no watermark, no nag screens. If you use Loopr at work, a one-time $5 business license per computer keeps it supported.
What can I drop into Loopr?
Any set of still images — PNG, JPG, WebP, BMP, TIFF — or an existing animated GIF, which comes apart into its individual frames with the timing each one already had, so you can retime it, reverse it or drop a few frames and export it again. Drag to reorder, or sort the strip by name, date or size and back to the order you added them in.
How do I control the speed?
Every frame has its own delay you can edit, and there's a global delay with an Apply to all frames button and a live fps readout. The play/pause preview uses your true per-frame timing, so what you see is exactly how the exported GIF will play.
Can I keep transparency?
Yes. For frames with transparency, choose a background of Clear (keeps PNG transparency), White, or Black. The preview shows exactly what you'll get — it's fully WYSIWYG — so there are no surprises after export.
Can I make it loop forever?
Pick the loop count you want: infinite, , or . Infinite is the default, so most GIFs just loop seamlessly.
How do I make the file smaller?
A GIF is big mostly because of how many colors it carries, so start there: cap the palette at 128, 64, 32 or 16 colors. On screenshots and flat artwork that is a fraction of the size for no visible difference — 16 colors came out under a quarter the size in testing. Dithering, which smooths gradients at the cost of a little noise and a bigger file, is a separate switch. Then use the resolution scale, and fewer frames, for whatever is left.
Does Loopr upload my images anywhere?
No. Everything happens entirely on your Mac — your images are never uploaded, and there is no account and no telemetry. The only times Loopr contacts our server are to validate a business license key or to check for updates, which sends only the app version.
Does Loopr use ffmpeg?
No. GIF encoding is pure Python/Pillow, built right into the app — there's nothing else to install, no ffmpeg, no command line.
Can I play it backwards, or as a boomerang?
Yes. Forward, Reverse or Ping-pong — ping-pong plays forward then back without repeating the frames at each end, so the turn doesn't stutter, and because a GIF loops neither does the seam. The preview plays whichever one you pick, so you see the turn on the stage rather than after you export.
Can I preview frame by frame?
Yes — alongside play/pause there's a real scrubber and a filmstrip, and you can step one frame at a time to check the timing and order before you export.
What languages does Loopr support?
Loopr is available in 13 languages, with an in-app picker that auto-detects your Mac's language.
Will macOS warn me about an unidentified developer?
No. Loopr is signed with an Apple Developer ID and notarized by Apple, so it opens with a normal double-click the first time — no Open Anyway trip through System Settings, no Terminal.
How do I update Loopr?
Loopr updates itself. It checks about once a week and, when a new version is out, shows you what changed and offers to install it in place — the download is signature-checked, and one that doesn't verify is refused. You can also check on demand, turn the automatic check off in the update panel, or download the DMG from this page and drag it into Applications yourself. Your settings carry over.
Also by the same solo developer GifMint Loopr turns still frames into a loop. GifMint captures the loop live — record any region of your screen straight to a clean GIF, no upload, no watermark. Free for personal use.
Also by the same solo developer Trimr Got a video instead of stills? Trimr cuts the start and end off a clip without re-encoding — lossless, instant, and no quality lost. Free for personal use.

Like what I make?

All my apps are free for personal use. If they save you time or make your day a little easier, a tip keeps me going — it goes straight to development, no middleman.

Hear about new apps first

One short email when twoplus11 ships a new Mac app. No spam — and unsubscribing is one click that works instantly.

One confirmation email first — you're only in if you click it.

More Mac apps from twoplus11

Free for personal use, running entirely on your Mac — no account, no subscription, and nothing uploaded.

Loopr compared with other ways to make a GIF from stills

Loopr turns a set of images into a looping GIF with per-frame timing, reordering, reverse and ping-pong, and a preview that plays exactly what gets exported.

Prices and capabilities checked August 2026. Each maker’s own site is the authority on its side of this table.

Loopr compared with Shortcuts, Web GIF makers and Photoshop
Capability Loopr Shortcuts Web GIF makers Photoshop
Price Free for personal use · $5 one-time commercial Built into macOS Free, usually ad-supported Subscription
Where the images are processed Your Mac Your Mac Their servers — you upload Your Mac
Per-frame timing Yes No — one delay for all Sometimes Yes
Reverse and ping-pong Yes No Sometimes Manually
Preview matches the export Yes No preview After upload Yes

When to use something else

macOS has a "Make GIF" action built into Shortcuts, and for a handful of images at one delay it is free and instant — use it. Photoshop's timeline does everything Loopr does and far more, if you already pay for it. Loopr is for the middle: you care which frame holds a beat longer, you want to see the loop before you commit, and you would rather not upload family photos to a website with a banner ad on it.

If this is what you came here to solve

I want to turn a burst of photos into a GIF
Drop them in, drag to reorder, and set the timing per frame rather than one delay for all.
My GIF looks jerky at the loop point
Ping-pong plays it forward then back, so the seam disappears.
The colors look wrong after export
Palette control is exposed, and the preview plays the palette you'll actually get.