To compress screenshots for documentation, resize each one to the width your docs column actually shows (at most twice that for Retina), then compress with a quality you checked by zooming into the smallest UI text. Replace GIFs with short MP4 or WebM clips. Here are the limits and the settings.
| What you are publishing | The limit you hit | The Smol setting |
|---|---|---|
| Retina screenshots (PNG) | A full-screen capture on a 14-inch MacBook Pro is 3024 × 1964 pixels, far more than a docs column shows | Compress, output PNG, quality 75 to start, maximum dimension about twice your column width |
| Screenshots attached to GitHub issues or pull requests | 10 MB for images and GIFs; PNG, GIF, JPEG and SVG are listed, WebP is not | Output PNG or JPG; check the largest file in the folder |
| Animated GIFs | 3.7 MB as a GIF against 551 KB as MP4 in web.dev’s example | Record as video, then Compress to MP4 (H.264 for widest playback) |
| Screen recordings | About a megabyte per second of Retina recording in our test | Video resolution 1920, quality High or Web; trim dead time first |
What size limits do documentation screenshots run into?
The hard limits are the ones where you attach files directly, such as GitHub. Docs sites mostly have soft limits: slow pages, large repositories and readers on bad connections. These are the published figures, each read on the date shown at its source.
| What | The figure | Source |
|---|---|---|
| Image or GIF attached on GitHub | 10 MB | GitHub Docs |
| Video attached on GitHub | 10 MB in a repository owned by a user or organization on a free plan; 100 MB on a paid plan; .mp4, .mov and .webm | GitHub Docs |
| Image formats in GitHub’s all-contexts list | PNG, GIF, JPEG and SVG. WebP is not on that list | GitHub Docs |
| macOS screenshot and recording formats | Screenshots are .png, screen recordings are .mov, and keyboard-shortcut screenshots land on the desktop | Apple Support |
| Best encoding for screenshots | MDN: for screenshots, diagrams, logos and line art, “prefer lossless encoding”, because blurring and colored fringes around text are very visible | MDN |
| GIF color depth | Each GIF pixel is an 8-bit index into a palette of 24-bit colors | MDN |
MDN’s advice to prefer lossless for screenshots is the reason to be careful here. Smol has no lossless mode for images; it always re-encodes. That is fine for a docs page read in a browser, as long as you zoom in on the result (the settings section shows how). If you need pixel-identical output, a lossless optimizer such as ImageOptim is the right tool, and we say so on our own comparison page.
Check your own platform’s help page for its ceiling before you set one. If your docs live in a wiki, our guide to Notion and Confluence uploads covers that case.
Which settings compress screenshots for documentation without blurring text?
Resize first, then set quality. The pixel count drives file size more than the quality slider does, and a docs column rarely shows more than 800 to 1000 CSS pixels of width.
| Image | Format | Quality | Maximum dimension |
|---|---|---|---|
| UI screenshot, regular text | PNG | 75 (the default) | 1600 for an 800 px column |
| Dense UI, code, 11 pt terminal text | PNG | 85 to start, then raise it if letters smear | 1600 to 2000 |
| Full-window screenshot with photos or a gradient background | JPG | 75 to 80 | 1600 |
| Hero or marketing image on the docs home page | AVIF or WebP, if your platform accepts it | 65 to 75 | Match its display width times two |
| Screenshot for a GitHub issue | PNG or JPG | 75 | Check that the file is under 10 MB |
| Screen recording | MP4, H.264 | High, or Web for a smaller file | Resolution 1920 |
Smol sets quality and pixel size, not output bytes, so check the largest file in the folder against your cap. It does have a target-file-size mode for images that accepts 4 to 4096 KB; it aims for a band, can land over your number, and is slow, about 28 seconds for one 768 × 512 image. Use it only for the odd file that refuses to fit.
How do I check that the text is still readable?
- Open the output at 100% and read the smallest label in the image, not the title bar.
- Compare a menu with thin gray text before and after. Banding around letters means raise quality.
- Judge it at the size readers see, which on a Retina display means looking at it at 2x.
For a sense of what quality does to a lot of PNGs at once, our benchmark compressed 24 small (768 × 512) photographs as PNG at quality 75 and saved 69.2%. ImageOptim at its default lossless settings saved 4.3% on the same files. Photographs are not UI screenshots, so treat those figures as direction, not a promise for your screens.
Why is a Retina screenshot file size so large, and what docs image size should I use?
A Retina screenshot is large because macOS captures every physical pixel. The 14-inch MacBook Pro in our screen recording test produced 3024 × 1964 frames, 5.94 megapixels, or 2.86 times a 1080p frame.
You do not need all of it. MDN’s responsive images guide describes serving a higher-resolution file to denser screens at the same display size, and its example is 39 KB for a 320 px image and 93 KB for the 640 px version. So the right docs image size is a pixel width of about twice the column, and the file size follows from that. Past 2x, extra pixels add bytes without adding sharpness.
A practical rule for a docs team: pick one column width, write down 2x of it, and give every contributor the same number. Smol’s resize modes are fit, fill, width and height. Use fit so nothing is cropped (fill crops, with no control over what goes). One job produces one size, so if your docs serve 1x and 2x files, that is two runs.
GIF vs MP4 for docs: which should I use?
Use MP4 for almost any clip longer than a second or two. In web.dev’s example the GIF was 3.7 MB, the MP4 551 KB and the WebM 341 KB, and each GIF pixel is only an 8-bit index into a palette.
In our own GIF to MP4 measurements, a 5-second UI clip at 1280 × 800 was 183,238 bytes as a GIF and 72,948 as H.264 at CRF 23, which is 2.5 times smaller. A photographic clip was 33.5 times smaller. Interface recordings are the near-best case for GIF, and the video still won.
| If the animation is… | Use | Why |
|---|---|---|
| Under about 2 seconds, tiny, flat colors | GIF is acceptable | Works everywhere an img tag does, including places that block video |
| A UI walkthrough of 3 to 30 seconds | MP4 (H.264), plus WebM if you can | Smaller, full color, and pausable |
| A photographic or gradient clip | MP4 | GIF’s 8-bit palette bands and the file balloons |
| An attachment to a GitHub issue | MP4 or MOV | Listed as supported video types; 10 MB on a free-plan repository |
To make video behave like a GIF on a page, web.dev recommends <video autoplay loop muted playsinline>. One caution from our tests: Smol does not convert animated GIFs. Record or export as video instead, and let Smol compress that. The GIF to MP4 guide shows the route that works.
How do I compress a docs screenshot folder and a screen recording for docs?
Work in batches, per release or per article. macOS drops screenshots on the desktop by default and records to .mov, so the pile builds up quickly.
Collect the originals in one folder
Keep them untouched. Smol writes a copy with a
_compressedsuffix beside each file by default.Drag the folder into Smol
Screenshots and recordings can go in the same batch. Each file shows its own progress and savings.
Set images to PNG at quality 75 and a maximum dimension of 2x your column
Leave the resize mode on fit. Then raise quality for any image with dense small text.
Set video to MP4, resolution 1920, quality High
On a 60-second, 56,384,195-byte Retina recording, Smol’s default (H.265, High) gave 3,691,160 bytes, 93.5% smaller, and resolution 1920 gave 1,399,221 bytes at 1662 × 1080, 97.5% smaller. That was Smol 1.0.34, and the recording had no audio. For widest playback choose H.264 and check that the clip plays where your docs are viewed.
Check the biggest file and one image at full zoom
Sort by size, confirm the cap you care about, and read the smallest text in one screenshot before you upload the batch.
If your screenshots collect in one folder, you can have Smol watch it. Our watched folder guide explains the catch: watched folders can make already-optimized files larger, so use them only for fresh, unoptimized screenshots. The Finder Quick Action is the alternative when you would rather compress on demand. For repositories, compress before you commit; see why Git never forgets. Trim dead time from a recording before you compress it. Support teams recording customers’ screens will find more in our screen recordings for support guide, and README-heavy repositories in the GitHub README media guide. Read the screen recording guide for what moves the size.
What do docs teams use to compress screenshots today?
Free options come first here, because for a handful of images they are often enough.
| Option | Good at | Limit |
|---|---|---|
| macOS Screenshot and Preview | Capture and one-off exports; free and built in | No batch quality control; resizing is manual |
| sips in Terminal | Fast scripted resizing; free | Resize and convert, not a size optimizer |
| pngquant plus zopfli (GitLab’s write-up) | Big PNG savings: in GitLab’s example 134 KB became 42 KB at 256 colors and 38 KB at 64 | Command-line setup and automation you maintain; lossy color reduction |
| ImageOptim | Lossless optimization; free | Lossless by default, so savings are smaller than a lossy pass; images only |
| Smol | Resize, quality, video and PDFs in one drag-and-drop batch; Quick Action and watched folders | No lossless mode, slower than a shell loop, macOS only, $29 |
Teams pricing: Smol is Solo $29 once for one Mac, Team $49 once for three Macs, or Enterprise at $20 a seat for 5 to 500 seats. Presets live on one Mac, so a docs team keeps consistent output by writing the settings down (format, quality, maximum dimension) in the style guide and recreating the preset on each Mac. If your build system needs compression on a server, the Smol API exists for that.
When is Smol the wrong tool for documentation images?
It is the wrong tool in a few clear cases, and a short list saves you a purchase you do not need:
- You need lossless or pixel-identical screenshots, for example to show a one-pixel misalignment. Smol always re-encodes; use a lossless optimizer.
- Your diagrams are SVG. Smol does not handle SVG.
- You must convert animated GIFs. Smol cannot convert them (tested in 1.0.34), so re-export from your recorder as video.
- Your pipeline is a Linux CI build. Use an image library in the build, or the Smol API.
- You have a handful of images a year. Preview and the free tools above are enough.
Frequently asked questions
How do I compress screenshots for documentation without losing quality?
Resize first, because pixels matter more than the quality slider. Set the maximum dimension to about twice your docs column width, compress at quality 75, then zoom to 100% and read the smallest text. Raise quality for dense UI. Smol always re-encodes, so for pixel-identical output use a lossless optimizer.
What is a good docs image size in pixels and kilobytes?
Pick pixels from your layout: roughly twice the column width for Retina, so 1600 pixels for an 800 pixel column. File size then follows from content. Mostly flat UI compresses far smaller than a screenshot with photos. Set a cap per platform, such as GitHub’s 10 MB for attached images, and check the largest output.
Why is my Retina screenshot file size so large?
macOS captures every physical pixel. A full-screen capture on the 14-inch MacBook Pro we tested is 3024 by 1964 pixels, 5.94 megapixels, and PNG stores flat UI at full detail. Resizing to about twice the displayed width and compressing is the practical fix. Extra resolution past 2x adds bytes without adding sharpness.
GIF vs MP4 for docs: which is better?
MP4 for most clips. In web.dev’s example the same animation was 3.7 MB as a GIF and 551 KB as MP4, and GIF uses an 8-bit palette. Use GIF only for tiny, short, flat clips where an img tag is required. For video that acts like a GIF, add autoplay, loop, muted and playsinline.
How do I shrink a screen recording for docs?
Trim the dead time, then compress to MP4 at a reduced resolution. A 60-second Retina recording was 56,384,195 bytes in our test, and Smol at resolution 1920 produced 1,399,221 bytes (Smol 1.0.34, no audio). Budget about a megabyte per second for an untouched recording, then check the clip plays where readers will watch it.
Is it safe to compress unreleased product screenshots?
Smol runs on your Mac, uploads nothing and needs no account, so unreleased UI stays on your machine. Online compressors upload files to their servers, which is a different arrangement. Confirm your company’s own policy for confidential material.
Keep reading
Smol for other teams
