Skip to content

Convert Video to GIF on Mac

Convert video to GIF on Mac with FFmpeg, or export MP4 from QuickTime when the tool allows video instead of GIF.

By Petr Samokhin

Your bug repro is a screen MP4. The ticket form, old doc tool, or design critique thread only accepts GIF. You need a short loop, not a full-screen animation that blows the attachment cap. Before you spend twenty minutes on palette flags, ask whether MP4 works: trimmed MP4 is often ten times smaller and clearer for UI demos. QA teams file the same three-second interaction weekly; trimming and width caps matter as much as palette tuning.

MP4 or GIF

What the tool acceptsWhat to send
VideoTrimmed MP4 from QuickTime
GIF onlyShort GIF, about 800 px wide, under 10 seconds
FormatTypical 5 s UI clip sizeColor quality
MP4 (H.264)1 to 3 MBFull
GIF5 to 20 MB256 colors

In QuickTime: open the file, Edit → Trim (⌘T), File → Export As → 720p. Upload that MP4 if the tool allows it. Many issue trackers and Slack threads accept video now.

If you must ship GIF, trim first. For shrinking an existing GIF, see compress GIFs on Mac . For MOV sources that need MP4 first, see MOV to MP4 on Mac .

Ticket systemPractical target
Under 5 MB cap640 px wide, 8 fps, under 5 s
Under 10 MB cap800 px wide, 10 fps
No cap but slow uploadStill trim; MP4 if allowed

Trim in QuickTime

Cut the clip to the exact seconds you need.

  1. Open MOV or MP4 in QuickTime.
  2. Edit → Trim (⌘T), drag handles to the action.
  3. Remove cursor idle time at the start.

A 3-second loop beats a 30-second GIF every time. Note the trimmed duration before FFmpeg so you do not re-encode dead frames.

Crop mentally to the affected UI region when you can. A full 4K desktop GIF is unnecessary when the bug is a single dialog. If QuickTime cannot crop tightly, trim duration first and reduce width in FFmpeg rather than shipping full-screen pixels.

Convert to GIF with FFmpeg

QuickTime cannot save GIF. FFmpeg can with a palette pipeline.

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

brew install ffmpeg

Standard palette command:

ffmpeg -i input.mp4 -vf "fps=10,scale=800:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" -loop 0 output.gif
PartMeaning
fps=10Ten frames per second (lower = smaller)
scale=800:-1800 px wide, height keeps proportion
palettegen / paletteuseBetter colors than naive GIF

Shorter clip with lower fps:

ffmpeg -ss 00:00:02 -t 4 -i input.mp4 -vf "fps=8,scale=640:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" -loop 0 bug.gif
FlagMeaning
-ss 00:00:02Start at 2 seconds
-t 4Duration 4 seconds
fps=8Eight fps for smaller files

If the GIF still exceeds the upload cap, trim more or drop width to 640 px.

SymptomTry
Muddy text in GIFLower fps, shorter clip, or use MP4
Banding in gradientsShorter clip; palette cannot fix long gradients
Still too largescale=480:-1 and fps=8

Dark-mode UI and purple gradients are the hardest GIF cases. A three-second clip with the dialog centered often looks better than a ten-second full-screen capture at the same width.

Using GetCompress

GetCompress fits convert video to GIF on Mac when you want trim, frame preview, and export without memorizing palette syntax.

Drop MOV or MP4 into the app. Trim in the preview, pick GIF output, set width (800 px is a common bug-report size), check the loop, and export.

Workflow features that help:

  • Preview and trim: see the loop before saving palette-limited GIF.
  • Batch queue: convert several repro clips after a test pass.
  • Switch to MP4: same window if Slack or the tracker accepts video instead.
  • Presets: save “bug GIF 800w 10fps” for QA workflows.
  • Local processing: keep unreleased product UI off online converters.
  • Optimize existing GIF: drop an oversized GIF to compress without re-recording.
  • Frame-by-frame GIF preview: catch unreadable text before Jira or Linear attachment.

Ask about MP4 first. When GIF is mandatory, GetCompress shows frames before you attach a 15 MB animation to a ticket. Save a team preset (“Linear GIF 800w 10fps”) so every QA engineer exports the same profile after a test pass.

Mac screen recordings saved as MOV can enter the same GetCompress queue as MP4 bug repros. Trim, pick GIF output, and preview the loop without a separate container conversion step when the source already plays in QuickTime and palette export accepts the file.

When Linear or Jira shows a hard megabyte cap in the attachment UI, export at 640 px and 8 fps first, check size in Finder, then re-run at 480 px only if needed. Two quick passes beat one oversized upload that bounces back from the ticket.

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