Skip to content

Compress GIFs on Mac: 3 Methods

Compress GIFs on Mac with GetCompress, QuickTime MP4 export, or FFmpeg. Trim, shrink width, or switch to MP4 when the tool allows video.

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 and bug tickets still ask for GIF sometimes, but many tools now accept video. When GIF is mandatory, shorten the loop, reduce width and fps, and use a proper palette encode. Keep unreleased product UI off random upload sites.

Three solid routes cover most Mac jobs: GetCompress for local GIF work with preview, QuickTime when MP4 is allowed, and FFmpeg when you need palette flags or a folder script.

Method 1: GetCompress

Best for: Shrinking an existing GIF, or making a GIF from MOV or MP4, with trim and frame preview before you attach it to a ticket.

GetCompress main window with a GIF queued and GIF settings open, including width, frame rate, and quality options
  1. Open GetCompress and drop a GIF, or drop video to create a GIF from source.
  2. Trim idle frames in the preview.
  3. Set width (640 or 800 px covers most forms) and frame rate, then export.
  4. If the thread allows video, export MP4 instead and skip GIF entirely.

Processing stays on your Mac. Save a preset such as “bug GIF 640w 10fps” so you can reuse it next time. Frame-by-frame preview catches muddy text before the ticket leaves your desk. When video is allowed, see convert GIF to MP4 on Mac .

Method 2: Export MP4 in QuickTime

Best for: One screen recording when Slack, Notion, GitHub, or your docs tool accepts video.

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

Upload MP4. File size drops with full color and smooth motion. Reserve GIF for tools that still block video.

Limitation: QuickTime does not re-palette an existing GIF with fine control. If GIF is mandatory, use Method 1 or 3.

Method 3: FFmpeg palette pipeline

Best for: Exact fps and width flags, and batch re-encode of oversized GIF files.

Install FFmpeg with Homebrew:

brew install ffmpeg

From MP4:

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:

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

Trim in QuickTime before FFmpeg so you are not encoding idle frames. Re-encoding the same GIF many times increases banding; keep an MP4 master when possible.

Limitation: You maintain the commands. VLC can export GIF, but palette control is easy to get wrong.

Which method should you use

SituationStart here
Recurring bug GIFs, preview, or video-to-GIFGetCompress
One clip and video is allowedQuickTime MP4
Scripts or exact palette flagsFFmpeg

Creating GIF from video: video to GIF on Mac . Still images: how to compress images on Mac .

Why GIF files get large

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

FactorEffect on size
DurationLonger loop ≈ larger file
WidthWider canvas hurts fast
Frame rateMore frames = more data
Color complexityBanding unless the palette is tuned
Upload capTypical fix order
5 MBTrim to 3 s, 640 px, 8 fps
10 MB800 px, 10 fps, under 8 s
No capPrefer MP4 when allowed

When QuickTime or FFmpeg is enough

QuickTime can work when one MP4 export is ready to send. FFmpeg is enough when you already keep a palette recipe in a team README.

GetCompress also helps when QA files the same kind of clip every week, when you need frame preview before attach, or when design drops an oversized GIF from Principle or After Effects and you only need a smaller attachment. Prefer MP4 or a static PNG sequence when quality stays poor at small GIF size. It does not replace a motion tool for authoring loops from scratch.