I write a lot of documentation that is mostly screenshots. Every tool I tried for it wanted an account, uploaded my screenshots to somebody's bucket, and then charged me to export the result as anything other than a link. So I built Lens, a Chrome and Edge extension (Manifest V3, Chrome 137+) that does the whole job in the browser.
There is no account, no server and no upload. Every feature works for free. A licence removes an occasional reminder, a Ko-fi link and the watermark on saved images, and that is all it removes.
Capture
Three hotkeys, rebindable at chrome://extensions/shortcuts:
| macOS | Windows / Linux | |
|---|---|---|
| Capture region | ⌘⇧S |
Alt+Shift+S |
| Smart Capture (step guide) | ⌘⇧E |
Alt+Shift+E |
| Record GIF or MP4 | ⌘⇧R |
Alt+Shift+R |
The region selection is draggable with a Retina-accurate size readout, so a crop you measure at 800x600 saves at 800x600.
Edit and save on one screen
Pen, text, box, circle, arrow and blur, plus crop, colour adjustment, rotation and an exact-pixel resize, with the file name and notes next to them.
Marks stay editable instead of being painted into the pixels. Move one, retype a label, delete the one in the middle, undo any of it. Nothing is written to disk until you press Save.
Blur is the exception, because blur rewrites the pixels. That is deliberate, and it matters for the next part.
Private data warnings before you save
Before a capture is saved, Lens reads the DOM under the selection and flags passwords, API keys, tokens, JWTs, private keys, email addresses and Luhn-checked card numbers. The rules are plain DOM rules. No model, no network call.
It offers to blur what it found and never blurs anything for you. Blur is destructive, so it stays your click.
Guides from clicks, without a model
Record a walkthrough with ⌘⇧E and every click becomes a step: a screenshot taken at the moment of the click, cropped to the control you clicked, outlined and numbered. There is no video behind it and no time limit.
The step text comes from the accessible name a screen reader would announce for that control, so "Click Save changes" is generated from the button's own label rather than guessed at by an LLM. Nothing about guide capture involves AI.
Guides open as a document in their own tab. Markdown sits behind the formatting, and a toggle drops you into that Markdown when you would rather type than click. Reorder steps, retitle them, split an animated step back into its clicks, replace or re-edit any screenshot.
Export
-
guide.html, self-contained, every image inlined, no scripts. One file you can attach to an email, and⌘Pthen Save as PDF gets you a PDF. - Markdown, zipped with its screenshots.
- Rich text on the clipboard, for Confluence, Notion or a doc.
- Every guide at once, as one archive.
Import takes a bundle back from a file or a link. Imports are copies, so nothing already on disk is overwritten. There is also a "Find guides on disk" pass that lists guides whose folders exist but whose metadata entry does not, which is how you repair a lost project_metadata.json.
Where the files live
A project keeps its own captures and guides, so it works with no folder linked at all. Link a folder and every capture is also written there through the File System Access API, with a project_metadata.json beside them holding the timeline.
The interesting failure here is the folder grant. Chrome hands that permission back whenever nothing of the extension is running, which used to mean a folder linked in the morning was asking to be reconnected by lunchtime. Now a lapsed grant only means the copy on disk is behind. The capture is saved regardless, the pending writes are remembered, and they are flushed when the folder is reachable again, either because you reconnected it or because you reopened the browser. The project card tells you how many writes are waiting.
Link a folder to a project that has been running for months and Lens offers to copy the whole history across, tells you how many files and how much disk that is first, and skips files the folder already has.
Bring your own AI, off by default
There is an optional assistant. Configure as many models as you like, including the browser's built-in one, a model running on your own machine, Claude, Gemini, OpenAI or any compatible endpoint, and switch between them per message. Each one is usable only after a test that actually reached it.
The assistant sends what you attach to a message and nothing else. Keys live in their own storage key, read by the service worker and never by a content script sharing a process with the page.
All of it is off until you turn it on, and every AI-written piece of text has a non-AI fallback behind it.
Install
Lens by Vectored on the Chrome Web Store. Same package on Edge Add-ons.
Current version is 1.22.0. If you capture documentation for a living, I would like to know which part of your workflow it still does not cover.
Top comments (0)