Custom app · Chrome extension · Privacy

Pixel Stash

Private screenshot tool · Chrome extension

Prototype

All projects

Pixel Stash editor: a screenshot of an analytics dashboard marked up with a red box, an arrow, a text note and a pixelated email address
01The story

Problem, approach, outcome

I take screenshots all day: client dashboards, WordPress admin, analytics, email drafts. For years that meant FireShot and Awesome Screenshot. Both work, but popular screenshot extensions typically ask to “read and change all your data on all websites,” and they update themselves silently. If one is sold or its developer’s account is compromised, that access can change hands overnight, and the screens I’m capturing are exactly the ones I least want exposed.

They had also drifted from what I need. Awesome Screenshot pushes cloud saving and sign-in; FireShot puts features like the Mac editor behind a paid Pro tier. I use five tools — crop, boxes, arrows, text and blur — and I wanted those five done well, privately.

Start from the permissions and work outward. Pixel Stash asks for four: activeTab, which grants access to a page only when I click the toolbar icon, plus scripting, downloads and storage. There’s no blanket access to every site. The extension pages run under a strict Content Security Policy that only allows network connections to the extension itself, so even a bug can’t send a screenshot anywhere. And it’s loaded unpacked from my own folder, so no one else can push an update to it.

The capture modes are where Chrome makes you work for it. Full Page scrolls one screen at a time, captures each one within Chrome’s limit of two captures a second, and stitches them together. It hides scrollbars, and after the first screen it hides fixed headers and chat bubbles so they don’t repeat down the image, then puts your scroll position back.

For the editor I compared plain canvas, Konva and Fabric.js, and chose Fabric: it already handles selecting, moving and resizing shapes, which is most of what an annotation editor is. It’s vendored as a single pinned file with its checksum recorded, so the code that runs is the code I reviewed.

Redaction is destructive by design. Pixelate and solid black are burned into the saved PNG; a soft blur isn’t offered at all, because blurred text can sometimes be reconstructed. The original capture never leaves the extension’s own storage and is deleted after 24 hours.

I’m moving my everyday screenshot work over to Pixel Stash now, and FireShot and Awesome Screenshot are on their way out of my browser.

02Overview

About Pixel Stash

Pixel Stash is a screenshot extension for Chrome. Capture the visible part of a page, a selected area or the full scrolling page, then mark it up with crop, boxes, arrows, text and redaction, and save a PNG to a folder on your computer.

That’s the whole product, on purpose. There’s no account, no cloud library and no sharing links, because the screenshots I take are of client work and they should go straight to disk.

03Features

What it does

  • Capture the visible part of a page, a selected area, or the full scrolling page
  • Full-page captures hide fixed headers and chat widgets so they don’t repeat
  • Crop, box, arrow, text and redact tools, with color and stroke presets
  • Redaction by pixelate or solid black, burned into the saved image
  • Undo and redo, zoom, and keyboard shortcuts for every tool
  • Saves full-resolution PNGs to a folder you choose, named by date and site
  • Four permissions, no access to a page until you click the icon
  • No account, no analytics and no network requests
04Stack

How it’s built

  • Chrome extension, Manifest V3
  • Vanilla JavaScript: no framework and no build step
  • Fabric.js 7 for the annotation canvas, vendored and pinned by checksum
  • chrome.tabs.captureVisibleTab, with scroll-and-stitch for full pages
  • IndexedDB for captures in progress, purged after 24 hours
  • A strict Content Security Policy on every extension page
05Roadmap

Where it’s going

  1. Shipped

    Three capture modes

    Visible part, selected area and full page, with sticky headers handled.

  2. Shipped

    The five tools I use

    Crop, box, arrow, text and redaction, with undo, zoom and presets.

  3. Shipped

    Save straight to disk

    Full-resolution PNGs, named by date and site, in a folder you choose.

  4. Next

    A week of daily use

    Real work only, then the old extensions get uninstalled.

  5. Next

    Shortcuts and right-click capture

    Start any capture mode from the keyboard or the context menu.

  6. Exploring

    Copy to clipboard and numbered steps

    Paste straight into a ticket, and number the steps in a how-to.

Have a problem a small, focused tool could solve?

This is the kind of work I do at 321 Enterprise. Tell me what slows your team down and we’ll see what we can build.

Start a conversation See all projects