How to convert MP4 to JPG on Mac at full resolution
By Lance Coleman · October 7, 2026
Convert MP4 to JPG on Mac with screenshots, FFmpeg, or batch export. Keep source resolution, choose sharp frames, and avoid unnecessary quality loss.
MP4 to JPG: the best method depends on the job
For a full-resolution JPG from an MP4 on your Mac, extract the frame directly from the video rather than screenshotting the player. FFmpeg is a free option for one frame, a timed sequence, or a batch of files. A screenshot is fine for a quick reference, but it captures the displayed image, not necessarily the source pixels.
One important correction to “without losing quality”: JPG is lossy. You can preserve the video's frame dimensions and minimize additional compression, but you cannot make a mathematically lossless JPG conversion. Use PNG if you need to avoid another lossy compression step.
| Method | Best use | Main limitation |
|---|---|---|
| Mac screenshot | Quick reference or approval note | Limited by displayed size, with possible interface elements |
| FFmpeg, single frame | A full-resolution image at a known moment | Requires Terminal and a timestamp |
| FFmpeg, batch export | Timed samples or complete image sequences | Can produce far more files than you need |
| Editing application | Precise frame selection and managed color | Export settings vary by application |
| Online converter | An occasional, non-sensitive clip | Requires uploading; check size, privacy, and output settings |
What “source resolution” actually means
An MP4 is a container. The video inside has its own dimensions, compression, frame rate, and color characteristics. Renaming video.mp4 to video.jpg does not convert anything.
For an ordinary square-pixel master, a full-resolution extraction keeps the decoded frame dimensions:
- A 1920 × 1080 master produces a 1920 × 1080 still.
- A 3840 × 2160 master produces a 3840 × 2160 still.
- A 1080 × 1920 vertical master produces a 1080 × 1920 still.
Rotation metadata and non-square pixels can complicate this, so check the final image's orientation and proportions as well as its dimensions.
Making a 1080p frame into a 4K JPG adds pixels, not captured detail. Likewise, extracting from a heavily compressed social download cannot restore detail discarded before you received it. Start with the highest-quality finished master available.
Resolution also does not guarantee a sharp photograph. Motion blur, missed focus, noise reduction, and compression artifacts are already part of the frame. A neighboring frame with a settled expression and less movement can be more useful than a higher-resolution frame with blurred eyes.
Inspect the file before exporting
In QuickTime Player, open the movie and choose Window > Show Movie Inspector. Check the resolution and frame rate.
If FFmpeg is installed, its companion tool, ffprobe, gives a more detailed readout:
ffprobe -v error -select_streams v:0 \
-show_entries stream=width,height,sample_aspect_ratio,avg_frame_rate,pix_fmt,color_space,color_transfer,color_primaries \
-of default=noprint_wrappers=1 "master.mp4"
This is particularly useful when a phone recording or HDR export looks different from your normal SDR work.
Method 1: take a screenshot on Mac
For a fast reference image:
- Open the MP4 in QuickTime Player.
- Pause near the moment you want.
- Use the left and right arrow keys while paused to move through nearby frames.
- Let playback controls disappear and keep the pointer away from the image.
- Press Shift + Command + 4 and drag around the video picture.
- If the screenshot is PNG, open it in Preview, choose File > Export, select JPEG, and use a high quality setting.
The weakness is step 5. You are selecting screen pixels. A 4K video fitted into a small window is being resized before capture. Full screen still does not guarantee a one-to-one match between video pixels and screenshot pixels. Retina scaling makes that relationship less obvious, not automatically correct.
Screenshots can also bake in display rendering, borders, subtitles, or player overlays. Cropping those away may reduce the usable image further.
Use screenshots for communication, not as your default client still export. They are useful for “this expression” or “this lighting setup,” but direct extraction is more repeatable for delivery.
Method 2: extract a full-resolution JPG with FFmpeg
FFmpeg runs locally, so this workflow does not require uploading your master. If you already use Homebrew, install it with:
brew install ffmpeg
The commands below assume Terminal is open in the folder containing master.mp4. Keep filenames in quotes when they contain spaces.
Export one frame at a timestamp
To extract a frame around 12.5 seconds:
ffmpeg -ss 00:00:12.500 -i "master.mp4" \
-map 0:v:0 -frames:v 1 -q:v 2 "master-00m12s500.jpg"
The key options are:
-ss: seeks to the requested time.-map 0:v:0: selects the first video stream.-frames:v 1: exports one image.-q:v 2: requests high JPEG quality. Lower values mean higher quality on this scale.
There is no resize filter here, so an ordinary square-pixel video retains its source dimensions. FFmpeg normally applies rotation metadata automatically, which can swap the output width and height for a portrait recording.
With normal transcoding and accurate seeking enabled, this is not restricted to exporting keyframes. However, a timestamp can fall between frames, so visually check the result rather than assuming the typed time identifies an exact expression.
The timestamp in this filename is your requested position, not a machine-verified record of the selected frame's presentation timestamp.
Export PNG when another lossy step is unacceptable
ffmpeg -ss 00:00:12.500 -i "master.mp4" \
-map 0:v:0 -frames:v 1 "master-00m12s500.png"
PNG avoids JPEG's additional lossy compression. It does not undo video compression, and the extraction can still involve color conversion. For routine SDR stills, it is a useful intermediate if you plan to retouch or make several delivery versions.
Keep that intermediate, then generate the final JPG once. Repeatedly opening and saving a JPG can introduce cumulative artifacts, particularly around titles, fine hair, and high-contrast edges.
For other local workflows, see how to extract stills from a video on Mac.
Method 3: export a JPG sequence or batch
Online image-sequence tools commonly ask for a time range, output size, and frame rate, then provide an archive. FFmpeg gives you equivalent control locally. Decide whether you need samples or every frame before starting.
Export one JPG per second
mkdir -p jpg-samples
ffmpeg -i "master.mp4" -map 0:v:0 \
-vf "fps=1" -q:v 2 "jpg-samples/frame-%06d.jpg"
This produces sequential filenames such as frame-000001.jpg. These are sample numbers, not source frame numbers or embedded timestamps.
One image per second is useful for finding scenes. It is not enough to reliably catch a kiss, a drum hit, a confetti burst, or the best expression in a performance.
Sample a short section more densely
This exports five images per second from a ten-second section starting at one minute:
mkdir -p selects
ffmpeg -ss 00:01:00 -i "master.mp4" -t 10 \
-map 0:v:0 -vf "fps=5" -q:v 2 "selects/frame-%06d.jpg"
A practical workflow is to sample the whole film sparsely, identify useful sections, then inspect those sections frame by frame. It saves time compared with reviewing thousands of nearly identical images.
Export every decoded frame
mkdir -p all-frames
ffmpeg -i "master.mp4" -map 0:v:0 \
-fps_mode passthrough -q:v 2 "all-frames/frame-%06d.jpg"
Use this when you genuinely need a complete image sequence. A three-minute constant-frame-rate video at 30 fps contains 5,400 frames. Storage requirements depend on image dimensions, complexity, and JPEG quality.
The video frame calculator helps estimate counts. For variable-frame-rate footage, do not assume that frame number divided by a nominal frame rate gives an exact source timestamp.
Batch multiple MP4 files
For a folder containing files with lowercase .mp4 extensions, this samples each video into its own output folder:
for input in ./*.mp4; do
base="${input##*/}"
base="${base%.*}"
mkdir -p "jpg/$base"
ffmpeg -i "$input" -map 0:v:0 \
-vf "fps=1" -q:v 2 "jpg/$base/frame-%06d.jpg"
done
Separate folders prevent different videos from competing for the same numbered filenames. Change fps=1 only after deciding how many images you actually want to review.
When an online MP4 to JPG converter makes sense
For a short, non-sensitive clip, an online converter can be convenient:
- Upload the MP4.
- Choose a frame or a start and end time.
- Select original dimensions if available.
- Set the sampling rate for a sequence.
- Convert and download the image or archive.
- Inspect the downloaded files, not just the browser preview.
Before uploading, check file-size limits, retention and deletion terms, output dimensions, and JPEG quality controls. A large upload allowance does not establish that a service preserves resolution or handles HDR correctly.
For unreleased music videos, private weddings, or embargoed brand work, confirm that uploading is permitted. Local FFmpeg extraction is free and avoids that transfer entirely.
Quality checks that matter more than the converter
Check the actual exported dimensions
Open the JPG in Preview and use Tools > Show Inspector. Confirm pixel dimensions, then inspect at actual size for softness, blockiness, and halos. Changing DPI metadata does not add pixels or improve detail.
Handle HDR deliberately
An HDR MP4 can produce a JPG that looks washed out, dark, or otherwise wrong if its transfer function and color space are not handled correctly. Increasing JPEG quality will not fix this.
For an HDR source, use a color-managed editing workflow with an explicit HDR-to-SDR conversion for ordinary web delivery. Export an SDR still with an appropriate profile, commonly sRGB, and verify it outside the editing application. Do not merely relabel HDR values as SDR.
Pick frames away from transitions
Dissolves combine images. Fast movement can blur faces. A strong film moment is not necessarily a strong still.
Review nearby frames for open eyes, readable expressions, clean silhouettes, and hands that are not caught in awkward positions. For product work, check labels and reflective surfaces. For events, watch for partial flash exposures and distracting background faces.
Keep the full-resolution master before cropping
Make vertical and square versions from the selected full-resolution image, not from a screenshot or an already reduced social export. Allow room for faces, hands, titles, and platform interface overlays. Use the social media size cheat sheet when planning delivery versions.
Where ShotBatch fits
FFmpeg is enough when you know the timestamp and need a JPG. The bigger editorial job is choosing useful frames and assembling a consistent delivery pack.
ShotBatch is a native Mac app for videographers working from a finished MOV or MP4 master already on the Mac. Its review pass reads scene cuts, sharpness, faces, motion, lyrics, and audio energy to surface candidate frames the editor approves.
Export writes a white-label pack that can include named source-resolution stills, social crops, contact sheets, H.264 clips, GIF loops, captioned verticals, and JSON and CSV manifests with source timestamps. A self-hosted share folder with a passcode option is part of the export. You pick the host; ShotBatch never uploads footage.
It fits the selection-and-delivery workflow rather than replacing the need to understand source quality. Pricing is one-time: Lite is $39 for delivery, and Pro is $129 for studio work and studio-grade export options. There is no subscription. For occasional single-frame extraction, free FFmpeg remains a sensible choice.
FAQ
Can I convert MP4 to JPG without losing quality?
You can preserve source resolution and minimize additional compression, but JPG is lossy. Export PNG if you need to avoid another lossy compression step. Neither format restores detail missing from the video.
Is a screenshot as good as an extracted frame?
Not reliably. A screenshot records the rendered screen image, which may be scaled and include interface elements. Direct extraction is the safer way to preserve source dimensions.
How do I convert an MP4 into multiple JPG files?
Use FFmpeg with -vf "fps=1" for one image per second, or -fps_mode passthrough without a sampling filter for every decoded frame. Export into a dedicated folder with numbered filenames.
Why is my JPG blurry even at high quality?
The selected frame may contain motion blur, missed focus, or existing compression damage. First inspect neighboring frames. Raising JPEG quality or enlarging the image cannot recover detail that was never recorded.
Related guides
ffmpeg extract frames: practical commands for videographers
Use FFmpeg to extract frames by timestamp, interval, scene cut, or frame number, with practical advice on image quality, speed, and delivery prep.
How to get a still from a video without losing quality
Learn how to get a still from a video at full resolution, choose sharp frames between blinks, and avoid motion blur, soft screenshots, and HDR issues.
How to extract frames from video and pick the sharpest stills
Extract every video frame with FFmpeg, save individual stills with VLC, and learn a practical workflow for choosing sharp, usable images from your edit.