Simon Willison has shipped shot-scraper 1.12, and the headline feature is WebP output. His screenshot automation tool can now save web page captures as .webp files, with an optional quality setting that flips the format from lossless to lossy. Willison says he built the feature for a practical reason: he needed a smaller screenshot for the launch of his new commit-rewriter tool.
Small release, useful change. Here’s what’s in it.
What shot-scraper is
If you haven’t used it, shot-scraper is a command-line tool that drives a headless browser to take screenshots of web pages. You point it at a URL, it renders the page and saves an image. People use it for documentation, changelogs, visual regression checks and automated social previews. It runs fine in CI, which is where a lot of its users live.
Until now, PNG and JPEG were your output options. Version 1.12 adds a third.
What’s new in 1.12
- WebP output. Pass a filename ending in .webp and shot-scraper writes a WebP image. The command looks like this:
shot-scraper https://simonwillison.net -o screenshot.webp --quality 80. - Lossless by default. Skip the
--qualityflag and you get a lossless WebP. That’s the safe choice when you need pixel-accurate captures, for example in visual diff workflows. - Lossy on demand. Add
--qualitywith a number and the file becomes lossy at that level. Quality 80 is the example Willison uses, and it’s a reasonable starting point for most screenshots. - Smaller files. According to Willison, WebP screenshots “are almost always significantly smaller in file size than their JPEG or PNG equivalents.” He posted examples in the pull request for anyone who wants to see the numbers.
Why this matters
Screenshots pile up. A docs site with a few hundred captures, a changelog that adds one per release, a CI job that stores a screenshot per test run: file size compounds fast. WebP typically cuts PNG sizes by a large margin and beats JPEG at similar visual quality, so switching formats is one of the cheapest wins available for anyone storing or serving lots of images.
What stands out here is the default. Willison chose lossless when no quality flag is set. That means existing users who swap .png for .webp in their scripts don’t lose fidelity by accident. They just get smaller files. The lossy mode is opt-in, which is the right way round for a tool that people use to verify what a page actually looked like.
There’s also the dogfooding story. Willison reports he added WebP specifically to generate the screenshot for commit-rewriter, his other new tool that rewrites git commit history. One tool shipped a feature so another tool could ship a nicer launch image. That’s how a lot of good open-source features get built: scratch your own itch, release the result.
Availability and caveats
shot-scraper is open source and free. Upgrade with pip install -U shot-scraper (or your preferred installer) to get 1.12.
A few things to keep in mind:
- WebP support in image viewers and older tooling isn’t universal. Browsers handle it fine, but some desktop apps and image pipelines still choke on it. Check your downstream consumers before switching wholesale.
- The article doesn’t give exact size comparisons in the post itself. The examples live in the PR, so go there if you need hard numbers before deciding.
- Lossy WebP is still lossy. If your screenshots feed a pixel-diff tool, stick with the lossless default.
What comes next
This is an incremental release, not a rewrite. But it fits a pattern in Willison’s tooling: small, sharp improvements that remove friction for people running automation in bulk. For AI teams, that includes anyone capturing web pages as inputs for multimodal models, where smaller images mean cheaper uploads and faster pipelines. WebP is a sensible default for that use case.
Full details, including the PR with file size examples, are in Willison’s original post.