Converting Apple Live Photos to GIF, MP4, and WebP in 2026
How to pull the motion component out of an Apple Live Photo and export it as GIF, MP4, or animated WebP without losing quality.
Converting Apple Live Photos to GIF, MP4, and WebP in 2026
A Live Photo is not one file. It is a pair: a 12MP HEIC still and a 3-second H.265 QuickTime clip recorded at roughly 15 fps, bundled together by an asset identifier baked into the HEIC metadata and the MOV's com.apple.quicktime.content.identifier atom. When you AirDrop or export a Live Photo, both files ride along. When you email it or drop it into most web forms, only the still image survives.
If you want the motion part shareable anywhere, you need to convert the MOV half into something the rest of the internet understands.
First: get the motion component out
On iOS 18 and later, open the photo in the Photos app, tap the share icon, and choose "Save as Video." That gives you an .MOV file directly. On macOS, open the Live Photo in Photos, right-click, "Show Package Contents" is gone in recent versions, so use File > Export > Export Unmodified Original. You get both halves in a folder.
If you already have the exported pair and just need the video, it is the IMG_XXXX.MOV next to the HEIC.
Picking an output format
The three reasonable targets each make different tradeoffs.
| Format | Typical size (3s clip) | Where it works | Quality |
|---|---|---|---|
| GIF | 2–6 MB | Everywhere, including SMS and old forums | 256 colors, visible banding |
| MP4 (H.264) | 400–900 KB | Every browser, Slack, Discord, Twitter | Excellent |
| Animated WebP | 300–700 KB | All modern browsers, Chrome 32+, Safari 16+ | Excellent, alpha supported |
GIF is the compatibility pick. It is also roughly 10x larger than MP4 for the same clip and tops out at an 8-bit palette. If the Live Photo has smooth gradients (sky, skin tones), GIF will dither visibly.
MP4 is the best default. Encode with H.264 high profile, CRF 20–23, yuv420p pixel format for compatibility, and a +faststart flag so the web player can begin playback before the whole file downloads. For a 3-second 1920x1440 clip at CRF 22, expect about 600 KB.
WebP is the newcomer worth considering. Animated WebP at quality 80 is typically 15–30% smaller than equivalent H.264 MP4 for short clips, and it loads inline as an <img> without needing a <video> element. The downside: you cannot paste it into iMessage on iOS and expect it to animate.
Preserving quality through the conversion
Two things kill Live Photo quality more than anything else.
First, double compression. The source MOV is already H.265 at around 8 Mbps. Transcoding to H.264 at a low bitrate (under 2 Mbps for 1080p) will look noticeably worse than the original. Use CRF-based encoding, not a fixed bitrate target.
Second, frame rate mismatch. Live Photos record at roughly 15 fps (variable, actually 12–15 depending on lighting). If you export to a 30 fps timeline without telling the encoder, it will duplicate frames and the motion will look stuttery. Keep the source frame rate unless you have a specific reason to change it.
For GIFs specifically, a two-pass palette generation makes a dramatic difference. The standard trick is to generate an optimized 256-color palette from the whole clip first, then encode using that palette. Single-pass GIF encoding picks a palette from the first frame and reuses it, which looks terrible when the scene changes.
Doing it in the browser
Konvrt handles the HEIC+MOV pair locally via WebAssembly. Drop the whole Live Photo export folder (or just the MOV) onto /convert and pick your target format. The MOV never leaves your device, which matters if the clip contains anything you would rather not upload to a stranger's server. Batch mode at /batch handles a full camera roll export in one pass.
A quick FFmpeg equivalent if you prefer the command line:
# MP4 with sensible defaults
ffmpeg -i IMG_1234.MOV -c:v libx264 -crf 22 -pix_fmt yuv420p \
-movflags +faststart -an output.mp4
# Animated WebP
ffmpeg -i IMG_1234.MOV -vcodec libwebp -lossless 0 -q:v 80 \
-loop 0 -an output.webp
# GIF with palette pass
ffmpeg -i IMG_1234.MOV -vf "fps=15,scale=640:-1:flags=lanczos,palettegen" palette.png
ffmpeg -i IMG_1234.MOV -i palette.png -filter_complex \
"fps=15,scale=640:-1:flags=lanczos[x];[x][1:v]paletteuse" output.gif
Audio, or no audio
Live Photos record audio. Most of the time you want -an to strip it; the 1.5 seconds of ambient noise on either side of the shutter rarely adds anything. If you are capturing a specific moment where the audio matters, export as MP4 and keep the track. GIF cannot carry audio at all.
If you are making a GIF and the source is taller than 720px, scale down. Anything above that is wasted bytes for almost every platform a GIF will end up on.