No description
  • C# 96.1%
  • Python 3.9%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
blancodagoat 775531572f ci: keep the rolling latest release out of the latest-release slot
The rolling 'latest' release was created as a plain release, so being the
newest it became GitHub's /releases/latest. In-app update checks and
packaging parse that endpoint expecting a v* tag, so they broke whenever a
plain push landed after the last versioned tag. Pass --latest=false for the
rolling release (and --latest=true on tags) so versioned releases own the slot.
2026-08-13 23:20:03 +02:00
.github ci: keep the rolling latest release out of the latest-release slot 2026-08-13 23:20:03 +02:00
assets Add a hero screenshot and winget/Scoop packaging 2026-08-12 14:41:49 +02:00
packaging/scoop Fill the Scoop manifest hash from the published release binary 2026-08-12 14:59:45 +02:00
src/Recite Version 1.1.6: named quit event for external managers 2026-08-13 03:19:24 +02:00
tests/Recite.Tests Version 1.1.1: tidy up numbered download copies on launch 2026-08-12 23:39:06 +02:00
tools Recite: copy text from anything on screen 2026-08-12 03:03:17 +02:00
.gitignore Recite: copy text from anything on screen 2026-08-12 03:03:17 +02:00
CODE_OF_CONDUCT.md Recite: copy text from anything on screen 2026-08-12 03:03:17 +02:00
CONTRIBUTING.md Recite: copy text from anything on screen 2026-08-12 03:03:17 +02:00
LICENSE Recite: copy text from anything on screen 2026-08-12 03:03:17 +02:00
README.md README: opt-in update notifications, one-click scoop updates, dash cleanup 2026-08-13 03:11:42 +02:00
SECURITY.md Recite: copy text from anything on screen 2026-08-12 03:03:17 +02:00

Recite

Copy text from anything on your screen.

Hotkey, drag, done. The words are on your clipboard,
even from videos, images, games, and dialogs that won't let you select.

one exe · works offline · no account · no uploads · no telemetry

An error dialog that blocks selection, and the Copied notification showing its text on the clipboard

The whole app in 10 seconds

  1. Press Ctrl+PrintScreen. The screen freezes; windows highlight as you hover.
  2. Drag over the text, or just click a window to take all of it.
  3. The text is on your clipboard. A balloon shows the first line so you know it worked.

That's the entire app. Error dialogs that block selection, hardcoded subtitles, code in a YouTube tutorial, a screenshot someone posted in chat: if you can see the words, you can copy them.

Get it: Recite.exe from the latest release, or scoop bucket add blancodagoat https://github.com/blancodagoat/scoop-bucket then scoop install recite.

Why not the tools you already have?

The catch Recite
Snipping Tool's text actions Snip, wait for the editor, click Text actions, select, copy: five steps and a window Hotkey, drag, done
PowerToys Text Extractor Installing a fifteen-tool suite for one feature One exe, under a megabyte
Capture2Text Abandoned, bundles its own OCR models Uses the OCR engine already inside Windows

Recite reads with the OCR that ships in Windows itself (the newer Snipping Tool model on Windows 11, the built-in engine everywhere else) in whatever languages you have installed, entirely offline. Nothing is bundled and nothing is sent anywhere.

Details
  • The hotkey is rebindable from the tray menu; the click-to-record dialog applies instantly and reverts anything Windows refuses.
  • The selection overlay freezes the desktop first, so the overlay itself never ends up in the grab, and hovering highlights whole windows and individual panes for one-click capture.
  • Very large multi-monitor grabs are scaled down to the OCR engine's input limit rather than refused.
  • If the hotkey stops working while an admin app or game has focus, use Restart as administrator in the tray once; that's a Windows rule about elevated windows, not ours.
  • The app never phones home. The update check in the tray menu runs only when you click it; the one opt-in exception is "Notify about new versions", which asks GitHub a few times a day, and on a scoop install turns updating into one balloon click. If a grab fails, clicking the error balloon opens a prefilled GitHub issue in your browser (log tail included, usernames scrubbed) for you to review and submit. The app itself sends nothing.
  • Config lives in %APPDATA%\Recite\config.json, and a small rolling log in the same folder records what the app did.
  • Requires Windows 10 2004 or later with at least one language pack (OCR comes with them).
  • On Windows 11, Recite uses the sharper OCR model that ships inside the Snipping Tool / Photos package (the one Snipping Tool's Text Actions use), which is noticeably better on small text and code tokens. It loads the model out of the package on its own, with no download, and falls back to the built-in engine automatically wherever that package is absent. Set useWindows11Ocr to false in config to force the built-in engine.
Building & tests
dotnet build src/Recite/Recite.csproj
dotnet run --project tests/Recite.Tests

The test suite includes a real OCR round trip: a known sentence is rendered into a bitmap and the Windows engine has to read it back. It runs headless, no desktop required.


MIT license · part of a family with Memento (screenshots) and DejaVu (instant replay)