Skip to main content

VerdiClip

CI PyPI Python License: MIT

Fast, faithful screenshots for Windows: grab a precise piece of the screen, mark it up, and put it where it needs to go — in seconds.

VerdiClip editor in the light theme, showing numbered steps, a labeled callout, an arrow, a highlight, and an obfuscated password

VerdiClip is an independent project. See ATTRIBUTION.md for credits.

Install

Requires Windows 10 or later and Python 3.13+.

uv tool install verdiclip

Or with pip: pip install verdiclip. Then run verdiclip (or verdiclip-gui for no console window) and VerdiClip sits in the system tray.

Capture

Do this Press
Drag a region, or click a window PrtSc (or left-click the tray icon)
Capture the active window Alt+PrtSc
Capture every monitor Ctrl+PrtSc
Repeat the last capture Shift+PrtSc

The capture overlay: the frozen screen is dimmed, the window under the cursor is outlined with its title, and a magnifier shows the exact pixels

While selecting, the screen is frozen so you get exactly what you saw. A magnifier follows the cursor, arrow keys nudge it by a pixel (Ctrl for 10), Enter starts and finishes a selection from the keyboard, clicking without dragging captures the window under the cursor, and Esc cancels.

If Windows or another screenshot tool already owns PrtSc, VerdiClip tells you which hotkeys are taken; everything is still available from the tray menu, and you can choose other keys in Settings.

Annotate

Tools Actions
V Select T Text Ctrl+Shift+C Copy image Ctrl+Z / Ctrl+Y Undo / redo
C Crop N Counter Ctrl+S Save (auto-named) Ctrl+C / Ctrl+V Copy / paste marks
R Rectangle H Highlight Ctrl+Shift+S Save as Delete Remove selection
E Ellipse O Obfuscate Ctrl+P Print Arrows Nudge (Ctrl = 10 px)
L Line F Freehand Ctrl+wheel Zoom Space+drag Pan
A Arrow Ctrl+0 / Ctrl+Shift+F 100% / fit Esc Back out one step
Ctrl+R / Ctrl+Shift+R Rotate right / left Ctrl+Shift+H / Ctrl+Shift+V Flip
Ctrl+Alt+I Resize
  • Labels in boxes. After drawing a rectangle or ellipse, just type — the text is centered and wraps inside it. Double-click (or Enter/F2) to edit later; Esc skips.
  • Shift draws squares, circles, and 45° lines.
  • Your styles stick. Colors, fills, widths, and fonts you pick are remembered per tool for the next screenshot.
  • Rotate, flip, and resize from the Image menu or the toolbar's Image button. Your marks turn and scale with the picture; text stays upright. Resize works on what you see (after cropping), in pixels or percent, keeping the aspect ratio unless you untick it.
  • Everything is undoable, including crop, which never throws pixels away.
  • The quickest path: draw, Esc until nothing is selected, Enter — the image is on the clipboard and the editor closes. Closing an image you haven't copied or saved asks first (you can turn this off in Settings → Editor).

The editor in the dark theme

Settings

Open from the tray menu or with Ctrl+, in any editor.

The Settings dialog: after-capture actions can be combined

  • After capturing — any combination of: open in the editor, copy to the clipboard, save to the output folder.
  • Hotkeys — validated as you type; conflicts are reported.
  • Output — folder, file-name pattern ({date}, {time}, {title}, {counter}) with a live preview, format, JPEG quality.
  • Editor — default color, width, and font.
  • General — light, dark, or match-Windows theme; start at sign-in; show VerdiClip in Explorer's Open with menu for images. Make VerdiClip the default image app… opens Windows Settings at VerdiClip's Default apps page, where you choose it as the default (Windows requires you to confirm this yourself).

Command line

verdiclip capture screen -o shot.png
verdiclip capture region --region 0,0,1280,720 --clipboard
verdiclip capture window --delay 3
verdiclip open picture.png          # Opens in the running instance if there is one

How it is built

Start with docs/design/philosophy.md: the core purpose, the principles, and the architecture. docs/design/ux-contract.md specifies every interaction; each item has an automated journey test.

In short: an edit session is an immutable base image, a non-destructive crop, and a list of immutable annotation values. The only way to change it is a command through the undo history, and one renderer draws both the canvas and the exported image.

Development

Requires Windows 10+ and uv.

uv sync                  # Create .venv and install dependencies
uv run verdiclip         # Run the tray app
uv run poe               # List tasks
uv run poe fix           # Format and auto-fix lint
uv run poe check         # Format check, lint, strict type check, tests with coverage
uv run poe ux            # UX journey tests only
uv run poe ux-snapshots  # Journeys plus a PNG per step in docs/ux/snapshots
uv run poe ux-gallery    # Key screens in light and dark themes (docs/ux/gallery)

uv run poe check is the quality gate: ruff (broad rule set), ty with every rule at error, and pytest with ≥ 90% branch coverage. Regenerate the README screenshots with uv run python scripts/ux_gallery.py --readme-dir docs/images. Before a release, also run the manual checklist at the end of the UX contract. See CONTRIBUTING.md for commit conventions and releases.

License

MIT

Metadata

Release files for verdiclip 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for verdiclip 0.4.0
File Size Uploaded
verdiclip-0.4.0.tar.gz 92.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for verdiclip 0.4.0
File Interpreter ABI Platform
verdiclip-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 202.9 kB

Release files / verdiclip-0.4.0.tar.gz

Download URL verdiclip-0.4.0.tar.gz
Size 92.3 kB
Tags Source
SHA-256 checksum
How to use checksums
de12feba4abfc31d57dc5a8a850233001552f09c58c2dfd3d53a53c04debeb77
BLAKE2b-256 checksum
How to use checksums
6931f55b138a92c12b7a69cb9ec5eaea59a82fc72365de64ead469abebb0ea9c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.

Transparency log

Release files / verdiclip-0.4.0-py3-none-any.whl

Download URL verdiclip-0.4.0-py3-none-any.whl
Size 110.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a033d58d519ce397b12d4c350b43325adadc3b6af84dea5eacf21ef5a943edd5
BLAKE2b-256 checksum
How to use checksums
63960e025b37d4ea1965975abed80c15436dcc76fbe0208f50c0db4546f4d6cd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.

Transparency log

Release history Release notifications | RSS feed

0.4.1

2 release files

This release

0.4.0 This release

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page