Skip to content

Compress GIFs on Mac

Make GIF files smaller on Mac: shorten the loop, use MP4 when possible, or convert with FFmpeg or GetCompress.

By Petr Samokhin

A 15-second UI demo as GIF can hit 20 MB. The same clip as MP4 is often 1 to 2 MB. Design critiques, bug tickets, and Notion pages still ask for GIF sometimes, but many tools now accept video. When GIF is mandatory, the levers are duration, width, frame rate, and palette quality. Compressing locally keeps unreleased product UI off random upload sites. Teams that file motion bugs weekly benefit from one saved preset rather than rediscovering palette flags every sprint.

Why GIF files are huge

GIF stores a full raster for every frame and caps at 256 colors per frame. Screen recordings with gradients and anti-aliased text punish GIF especially hard.

FactorEffect on size
DurationLinear growth (double seconds ≈ double size)
WidthQuadratic feel (960 px vs 480 px hurts)
Frame rateMore frames = more data
Color complexityBanding unless palette is tuned
Clip typeFirst move
UI screen recordingTrim to 3 to 5 seconds
Logo spinLower fps, smaller width
Photo slideshowUse JPEG or MP4, not GIF

Before you fight GIF size, confirm the destination accepts MP4. For creating GIF from video, see video to GIF on Mac . For general still image compression, see how to compress images on Mac .

Upload capTypical fix order
5 MBTrim to 3 s, 640 px, 8 fps
10 MB800 px, 10 fps, under 8 s
No capStill prefer MP4 when allowed

Try MP4 in QuickTime first

When Slack, Notion, GitHub, or your doc tool accepts video, export MP4 instead.

  1. Open the recording in QuickTime.
  2. Edit → Trim (⌘T) to the action only.
  3. File → Export As → 720p.

Upload MP4. File size drops dramatically with full color and smooth motion. Keep GIF for the few tools that still block video uploads.

ToolAccepts MP4?Notes
Slack / Notion (recent)Often yesAsk in thread first
GitHub issuesOften yesGIF still common in old templates
Legacy ticket formSometimes GIF onlyPalette pipeline below

Make a smaller GIF with FFmpeg

When GIF is required, use a palette pipeline instead of a naive convert.

Open Terminal (Applications → Utilities → Terminal). Install FFmpeg through Homebrew (install Homebrew first if brew is not found):

brew install ffmpeg

From MP4 source:

ffmpeg -i clip.mp4 -vf "fps=10,scale=640:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" -loop 0 clip.gif

Re-compress an existing GIF (decode then re-palette):

ffmpeg -i big.gif -vf "fps=10,scale=640:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" -loop 0 clip-small.gif
ParameterSmaller fileBetter quality
fps812 to 15
scale width480 to 640800 to 960
Source trimShortest usable clipFull interaction

Lower fps or width if the file still exceeds the upload cap. Trim in QuickTime before FFmpeg so you are not encoding idle frames.

Re-compress an existing GIF when the source video is gone: decode to frames, regenerate palette, write a new file. Expect generation loss if you repeat this many times; keep the MP4 master when possible.

Re-compress passRisk
OnceUsually fine
Three+ timesBanding and muddy text increase

Design specs exported as GIF from After Effects or Principle arrive oversized. Re-palette in FFmpeg or GetCompress instead of re-exporting from source when you only need a smaller attachment.

VLC can export GIF, but palette control is easier to get wrong than one FFmpeg line.

Using GetCompress

GetCompress fits compress GIF on Mac when you want preview, trim, and palette export without maintaining FFmpeg recipes per ticket system.

Drop an existing GIF to optimize it, or drop MOV/MP4 to create a new GIF from source video.

Workflow features that help:

  • Preview and trim: cut to the repro steps before palette limits colors.
  • Frame-by-frame GIF preview: catch muddy text before you attach to Jira or Linear.
  • Width presets: 640 or 800 px covers most bug-report forms.
  • Switch to MP4: export video instead when the thread allows it.
  • Batch queue: shrink several motion specs after a design review.
  • Local processing: keep staging UI and NDA flows off online converters.

Save a preset like “bug GIF 640w 10fps” if your team files the same kind of clip weekly. When quality is still poor at small size, prefer MP4 or a static PNG sequence for documentation instead of a giant GIF. Frame-by-frame preview catches unreadable labels before the ticket leaves your Mac.

GetCompress also helps when design sends an existing GIF from Principle or After Effects that already exceeds Slack limits. Drop the file, trim two seconds of idle loop, export at 640 px, and compare against the MP4 export in the same window before you attach either format to the thread.

Buy GetCompress now for local media compression with reusable presets and no media upload.