Screenshots that stay on your computer. A full-page capture extension for Chrome, and a tiny Print Screen app for Windows and Linux, sharing one free editor.
Open the Swoop page · Downloads · Privacy policy
- Swoop for Chrome captures a whole web page, top to bottom, as one image.
- Swoop for Windows and Linux waits in the tray. Press Print Screen, drag over any part of the screen, mark it up, then copy or save.
- One editor, every tool free: arrow, box, ellipse, line, pen, highlighter, text, numbered steps, blur and crop, with undo and redo. No paid tier and no watermark.
- Nothing is uploaded. There is no Swoop server, account, cloud gallery or share link. Pictures go to your clipboard or your disk.
| File | For | |
|---|---|---|
| Chrome and Edge | swoop-chrome.zip |
Load it unpacked until the Chrome Web Store listing is live (below) |
| Windows | Swoop-setup.exe |
Windows 10 and 11, 64-bit. Installs for you only, no admin rights |
| Linux | Coming soon | .deb for Debian and Ubuntu, .rpm for Fedora, and an AppImage |
| Mac | Coming soon | Until then, Swoop for Chrome works on a Mac |
Every release also has the same files with the version in the name. See all releases.
Load the extension unpacked: unzip swoop-chrome.zip, open chrome://extensions, turn on Developer mode, choose Load unpacked and pick the unzipped folder.
Windows says the publisher is unknown: the installer is not code-signed yet, so SmartScreen may warn the first time. Choose More info, then Run anyway.
Click the Swoop button or press Alt+Shift+S. Swoop scrolls the page one screen at a time, joins the parts into one tall image and opens it in the editor. Alt+Shift+V takes only the part you can see. Both are also on the Swoop button's right-click menu.
It is built for real pages, not just simple ones:
- Sticky headers and cookie bars show once, not on every screen. Fixed headers appear at the top of the picture and fixed bottom bars at the bottom.
- Nothing is left blank. Swoop scrolls through the page once before capturing, so lazy images, infinite lists and fade-in effects have loaded.
- Web apps work too. When the page scrolls inside a box instead of the window, Swoop finds the largest scrolling box and captures that.
- No scrollbars or smooth-scroll jumps in the picture. The page is put back exactly as it was afterwards.
- Very tall pages are scaled down to fit Chrome's limit of 32,767 pixels, and the editor says so.
- Save as PNG, JPG, WebP or PDF, or copy to the clipboard. A long page becomes several A4 pages in the PDF. Your last 12 captures are kept in the browser.
- Right-click the picture for Copy, Save, Save as PDF, Undo and Delete, right where the pointer is.
- Click the title to rename the capture. The name is also the file name.
Settings (right-click the Swoop button, then Options): scroll the page first, show fixed headers once, and how long to wait on each screen for slow animations.
Permissions: only activeTab, scripting, contextMenus, storage and unlimitedStorage. Swoop can see a tab only after you click its button, so the install screen shows no "read all your data" warning.
Swoop starts with your computer and sits in the tray.
- Press Print Screen, or click the tray icon. The screen under the pointer freezes, so menus and tooltips stay put.
- Drag over the part you want. The size shows as you drag, and the toolbar appears next to the selection.
- Mark it up, then press Enter to copy and close, Ctrl+S to save, or Ctrl+Shift+S to choose where. Esc cancels.
Screenshots are saved full size to Pictures/Swoop, named with the date and time, for example Swoop 2026-10-22 at 14.03.22.png. The tray menu has the screenshots folder, the start-with-computer switch and the settings window.
Print Screen is your choice. The settings window and the tray menu have a Print Screen opens Swoop switch, on by default. On, Swoop takes the key, even when the Snipping Tool or another screenshot app (Lightshot, ShareX, Greenshot) has it: it turns off Windows' Use the Print screen key to open screen capture setting and, if another app holds the key, uses a keyboard hook that sees it first. Off, Swoop lets go of the key and puts Windows' setting back as it was. Combinations with Alt, Ctrl, Shift or Win are always left alone.
Updating is just running the new Swoop-setup.exe: it closes Swoop, installs over the old version and keeps your settings.
Wayland. Apps cannot listen for keys on Wayland. Add a keyboard shortcut in your system settings that runs swoop --capture. The app menu entry also has a Capture an area action. On X11, Print Screen works out of the box.
Small and light. Swoop is built with Tauri 2 and the system's own web view (WebView2 on Windows, WebKitGTK on Linux): a 1.4 MB installer and about 30 MB of memory while it waits. Only one copy runs at a time; running swoop --capture again starts a capture in the copy that is running.
| Key | Tool | Key | Action |
|---|---|---|---|
| V | Select and move | Ctrl+Z | Undo |
| C | Crop (Chrome) | Ctrl+Shift+Z | Redo |
| R | Rectangle | Delete | Delete the selected mark |
| O | Ellipse | Ctrl+C | Copy |
| A | Arrow | Ctrl+S | Save |
| L | Line | Ctrl+0 | Fit to the window (Chrome) |
| P | Pen | Space + drag | Pan (Chrome) |
| H | Highlighter | Enter | Copy and close (desktop) |
| T | Text | Esc | Cancel or close |
| N | Numbered step | ||
| B | Blur |
- The extension and the app have no server to send anything to, and make no network requests.
- The extension keeps captures in its own storage in your browser. Removing the extension deletes them.
- The desktop app holds the frozen screen in memory only until you close the capture.
- The landing page has no analytics or cookies. Its one request to another site is the star count on the GitHub button, from GitHub's public API at most once every five minutes.
The full policy is at mhfrough.github.io/swoop/privacy.html.
You need Node.js 22 and Python 3. For the desktop app, also Rust and, on Linux, the libraries in the Linux libraries step of .github/workflows/release.yml.
npm install
npx playwright install chromium| Command | What it does |
|---|---|
npm run serve |
Serves the landing page at http://localhost:8175 |
npm test |
Checks the editor copies, then runs the Playwright tests |
npm run sync |
Copies shared/editor into extension/ and desktop/ui/ (run after editing the editor) |
npm run zip:extension |
Packs extension/ into dist/swoop-chrome-<version>.zip |
npm run icons |
Renders icon.svg to every icon size |
node tools/make-brand.mjs |
Draws the installer and Chrome Web Store artwork |
cd desktop && npm install && npm run build |
Builds the desktop app and its installer for this system |
cd desktop && npm run dev |
Runs the desktop app with live reload |
The extension needs no build step: load the extension/ folder unpacked.
The tests cover the full-page capture end to end in real Chromium (sticky header, fixed bar, scroll animations, lazy images, a page that scrolls inside a box), the desktop overlay and settings window with a stand-in for the Rust side, and the landing and privacy pages in light, dark and phone sizes.
| Part | Files |
|---|---|
| The editor, shared by everything | shared/editor/editor.js, editor.css: plain JavaScript, no dependencies |
| Chrome extension (Manifest V3) | extension/: background.js runs the capture, capture.js prepares the page, editor.html opens the result |
| Desktop app | desktop/src-tauri/src/lib.rs (tray, Print Screen, capture with xcap, clipboard with arboard), desktop/ui/ (overlay and settings window) |
| Landing page | index.html, site.css, site.js, tokens.css, privacy.html |
| Tests | tests/, with Playwright |
| Releases | .github/workflows/release.yml builds every download on a v* tag; test.yml runs the tests on every push |
| Installer and store artwork | desktop/src-tauri/installer/, store/ (listing text in store/listing.md) |
How the full-page capture works, why the desktop app uses Tauri, and what is planned next are in PLAN.md.
- Update the version in
extension/manifest.json,desktop/src-tauri/tauri.conf.json,desktop/src-tauri/Cargo.toml,desktop/package.json, and inindex.html(the download section and thesoftwareVersionfields of the structured data). A test checks that they match. - Commit, then push a tag:
git tag v0.2.0 && git push origin v0.2.0. - GitHub Actions builds the Windows installer, the Linux packages and the extension zip, and attaches them to a new release.
- A Mac app (Tauri supports it; it needs signing and the Screen Recording permission).
- Selecting across several monitors (the desktop app captures the monitor under the pointer), a timer and window capture.
- Capturing one element or a selected area in the extension, and pages that scroll sideways.
- Firefox and the Edge Add-ons store (Edge already loads the Chrome extension as it is).
- Geist and Geist Mono by Vercel, SIL Open Font License 1.1 (
assets/fonts/Geist-OFL.txt). - Tauri, xcap and arboard for the desktop app.
MIT. See LICENSE.
Made by Mohammad Hamza (@mhfrough).

