Panda Screenshot is a local screenshot capture and annotation app. It ships as a single self-contained binary — the server, web app, and Chrome extension are all bundled in.
macOS / Linux
curl -fsSL https://raw.githubusercontent.com/ralphite/panda/main/install.sh | shWindows (PowerShell)
irm https://raw.githubusercontent.com/ralphite/panda/main/install.ps1 | iexThe installer asks where to keep data (default ~/panda, or %LocalAppData%\Panda on Windows), puts a panda command on your PATH, writes the Chrome extension into <data>/extension, optionally enables auto-start (launch at login + restart on crash), then runs Panda in the background and opens http://localhost:8088/screenshot. It finishes by printing the steps to load the Chrome extension.
Run panda any time to start it again.
- Open
chrome://extensions. - Enable Developer Mode.
- Load unpacked from the
extensionfolder in your data directory (the installer prints the path), or fromextension/in this repo when developing. - Keep Panda running on
http://localhost:8088. - Click the extension icon on any normal page. It captures the visible viewport, opens a crop tab before the source tab, uploads the crop, then replaces that tab with the web editor.
- Press
Ctrl+Shift+Pto trigger the same visible viewport capture from the keyboard. - Right click the extension icon and choose
Full-page Screenshotwhen you need the old full-page capture flow.
Temporary captures live in Chrome extension IndexedDB. They are removed after upload, when the crop tab is closed, and after 30 minutes.
VselectRrectangleOovalLlineAarrowPpencilTtextEnterinsert a newline while typing textEscfinish typing textDeleteremove selectionCcopy annotated image
npm --prefix web install
npm --prefix web run build
go run ./cmd/pandaOpen http://localhost:8088/screenshot. The frontend must be built before the Go binary, since it is embedded at compile time.
Other targets: make build (single binary), make test (web + Go tests), make release (cross-compile every platform into dist/).
Flags: -data <dir> overrides the data folder; -web <dir> serves the frontend from disk instead of the embedded build, for live frontend work.
