Every screen-recording tool makes the same trade, and it’s a bad one: it encodes what you record into a video, and a video is a black box. You can play it, you can trim it — and you can’t annotate frame 7.
hypershot keeps the opposite trade. While you drag out a region, we record roughly 1.5 seconds of frames at about 10fps into a rolling buffer, and we keep them as images. When you lift the reticle, the timeline is already there, holding every frame that existed during your selection. You scrub to the exact moment you wanted, and the frame under the playhead is a real, lossless, editable image — not a compressed blob of a codec’s choosing.
The result: you get the “record first, pick later” safety net of a video, without giving up anything an image gets you.
The rolling buffer is the whole trick
The capture thread runs a loop with a moving window. Every frame it grabs goes into the buffer and gets written to disk as a PNG. Frames older than the window slide out and get deleted. So at any instant, the buffer holds exactly the last ~1.5 seconds of your screen — nothing more, which is why the buffer costs almost nothing, and nothing less, which is why the frame you actually wanted is still in there when you let go.
The math is deliberately simple: window duration times target frame rate, plus a few frames of slack. If the screen moves fast, you get more frames per window; the buffer resizes itself instead of dropping anything.
On Windows the frames arrive as D3D11 textures from Windows.Graphics.Capture, and the thread holds the texture reference without converting it — converting the full-resolution image happens only when a frame is actually kept. On macOS they arrive as CoreVideo pixel buffers from ScreenCaptureKit, and we convert on the CPU on purpose so the GPU stays free for the live reticle. Same buffer, same timeline, two operating systems.
Frozen mode: the frame before you were there
The nastiest moments to capture are the ones that die when you interact — a hover state, a menu, a tooltip. Frozen region capture solves it with a pre-show grab: the engine captures a frame before the overlay window appears, so the screenshot shows your screen exactly as it was before hypershot touched it. No cursor over your tooltip. No overlay in the corner of your evidence.
That’s a tiny mechanism — one extra frame at a precise moment — and it’s the difference between a screenshot of the thing and a screenshot of you looking at the thing.
A file you can open on either OS
Those frames, plus your annotations and your timeline position, serialize into a .hypercapture file: a small zip, built on minizip, holding lossless PNG frames and CBOR metadata. No codec inside it, because no codec exists inside the product.
That’s the quiet part of the cross-platform story. Video containers are a cross-platform tax — codecs licensed per OS, encoders that behave differently on each, files that play in one player and stutter in another. A zip of lossless images and their metadata has no tax. Open the same .hypercapture on your Mac or your Windows machine and the timeline, the frames, and the annotations are identical, because they’re all just data.
Why not just be a screen recorder
Because the last thing you want to do with most screen recordings is edit them. You want one frame. The frame where the bug was visible, the value you needed, the layout before it broke. Encoding 1.5 seconds of video to reach one frame is like burning a book to read a sentence.
You already know which moment you wanted. You just didn’t know which frame it was.
Download for macOS or Download for Windows — record the moment, keep the frame, skip the video.