Automatic zoom for screen recordings on Mac

A tight zoom onto the button you just clicked is what separates a polished demo from a flat screen capture. Doing it by hand is tedious; getting the timing right is an art. This is how automatic cinematic zoom works on Mac — what it is, how Cadre generates it from your clicks and scrolls, and when to take the wheel.

In short: Cadre watches your cursor, clicks and scrolls while you record, groups that activity into moments, and animates a spring-driven zoom in and back out around each one — automatically, and editable on the timeline afterward.

What cinematic auto-zoom is

Cinematic zoom is a camera move borrowed from film editing: when something matters, the frame pushes in on it, holds while the action happens, then eases back out to context. On a screen recording it does the same job a good editor does manually — it directs the viewer's eye to the menu you opened, the field you clicked into, the result that appeared — without you narrating "look here".

The hard part isn't the zoom itself; it's knowing where and when, and making the motion feel like a camera rather than a snap. Automatic auto-zoom solves both by reading what you actually did during the take.

Tracking the action

While you record, Cadre tracks the cursor at the HID level with a high-resolution 240 Hz poll, and taps mouse and scroll events directly. Every click and scroll is logged with its position and timestamp alongside the video. None of this leaves your Mac — it's local interaction data, captured so the editor knows where the action was, not just what the pixels looked like.

What Cadre does not log is what you type. Plain keystrokes are dropped as they are captured and never reach disk, so a password entered mid-demo cannot end up in a project file. The one exception is deliberate: shortcut combinations like ⌘C and ⌘V are kept, because they're worth showing — they surface as keyboard pills over the finished video.

That's the raw material: a five-minute recording is thousands of clicks, scrolls and cursor samples. The next step is turning them into a handful of meaningful "zoom here" moments.

How Cadre decides where to zoom

Rather than zoom on every single click — which would feel twitchy — Cadre groups events into segments and classifies each one. The heuristics that ship today:

  1. Split by idle. A gap of more than about a second of no activity ends the current segment and starts a new one, so distinct actions don't blur together.
  2. Classify the segment. Cadre labels each cluster of activity as a click cluster, a scroll, or a single click.
  3. Frame the action. It takes the bounding box of the events in that segment, adds roughly 20% padding around them, and respects your output aspect ratio — so the zoom lands on the action with breathing room, not cropped tight against it.

The classification rules are deliberately conservative, to avoid zooming on noise:

Signal How Cadre recognises it
Click cluster Three or more clicks within about two seconds and within ~200 px of each other — a focused burst of activity in one place.
Scroll Scroll activity that clearly dominates, when there's no deliberate click competing for attention.
Single click One deliberate click that isn't part of a cluster — a lighter, closer push-in.

Segments too short to be worth a zoom are skipped, and each zoom holds briefly after the action before easing out, so the viewer has a moment to register what happened.

How far it zooms

Not every action deserves the same push-in. A burst of clicks in one place wants a tight frame; a scroll only wants a gentle nudge. Cadre scales the zoom to the kind of action:

Action Default zoom
Click cluster2.0× tightest — focused activity in one spot
Single click1.75× a lighter push-in
Scroll1.3× a gentle nudge

These are the levels Cadre asks for, not a promise about the finished frame: a wide target with padding may end up gentler, and a move too small to see — under about 1.15× — is dropped rather than left on the timeline. Every value is editable per keyframe (see below).

Why it feels cinematic, not robotic

A zoom that jumps linearly from one scale to another reads as mechanical. Cadre animates the transition with a damped-spring solver instead of a fixed curve — the same physics that makes a well-designed UI element settle rather than snap. The frame accelerates into the zoom and decelerates as it arrives, the way a real camera operator eases a push-in.

The spring has three knobs — tension (stiffness), friction (damping) and mass. Cadre's default zoom spring is tuned for a confident, cinematic push-in that settles cleanly without overshooting. The cursor itself gets the same treatment with a softer spring, so a shaky hand becomes a smooth glide. Both are adjustable if you want a snappier or more languid feel — the zoom spring under Motion, the cursor spring under Cursor.

The cursor smoothing and the zoom animation share the same spring engine — which is why a Cadre recording feels like one coherent camera move rather than two effects fighting each other.

When to override — and how

Auto-zoom gets you 90% of the way in one pass. The last 10% is judgement, and it's yours. Every zoom Cadre generates is an ordinary keyframe on a dedicated zoom track, so reach for a manual edit when:

  • The zoom missed the beat. You want it to land a half-second earlier, or hold longer while you explain — drag its start and end on the timeline.
  • It's too aggressive, or not enough. Dial the zoom level down for a wide reveal or up to make small text legible.
  • You want a zoom that has no click behind it. Add your own keyframe on a moment the heuristics wouldn't catch — a result appearing, a value changing on its own.
  • A zoom is fighting your narration. Delete the ones that don't earn their place. Fewer, well-placed zooms beat constant motion.

When you adjust an auto-generated zoom, Cadre marks it as user-modified, so if you re-run the analysis later, your hand edits are preserved rather than overwritten. And because it's all just timeline data, you can also hand the same job to an agent — "zoom on the terminal every time I click into it" — as covered in editing a recording with an AI agent.

Cinematic zoom, generated for you

Cadre records your screen and animates the zooms automatically — cinematic out of the box, editable to the frame. One plan, tax-inclusive $9/month paid yearly or $19/month paid monthly.

$9/month paid yearly · $19/month paid monthly · tax included · macOS 13+

FAQ

What is cinematic auto-zoom?

An automatic camera move that pushes in on whatever you're doing on screen and eases back out when you're done — the same technique a professional editor uses to direct attention, generated for you instead of keyframed by hand.

How does Cadre decide where to zoom?

It tracks your cursor, clicks and scrolls while you record, groups that activity into segments split by idle gaps, classifies each one (click cluster, single click or scroll), and zooms to the bounding box of the action with padding around it. Cadre never records what you type, so typing plays no part in it.

Does Cadre record what I type?

No. Plain keystrokes are dropped as they are captured and never reach disk, so a password typed mid-demo cannot end up in a project file. Shortcut combinations like ⌘C and ⌘V are kept, because they're worth showing — they appear as keyboard pills over the finished video.

Why does the zoom feel smooth instead of snapping?

It's animated by a damped-spring solver rather than a fixed curve, so it accelerates and settles like a physical camera. Cadre's default spring is tuned for a cinematic push-in and ease-out, and it's adjustable in the motion settings.

Can I override the automatic zoom?

Yes — every auto-generated zoom is an editable keyframe on the timeline. Move it, retime it, change how far it zooms, add your own or delete one. Hand edits are marked so a later re-analysis won't overwrite them.

Does auto-zoom work with a mirrored iPhone or iPad?

Auto-zoom is driven by cursor, click and scroll activity, which is what a Mac screen recording produces. For a mirrored iOS device you can place zooms by hand on the timeline (or ask your agent to), since there's no pointer activity to detect.