Include Cursor in Screenshot on Mac

WorkflowsAugust 24, 20268 min readBy PinVari
Include Cursor in Screenshot on Mac

To include cursor in screenshot on a Mac you either flip Show Mouse Pointer in the Shift-Command-5 toolbar, or you run screencapture -C. The default Command-Shift-3 and Command-Shift-4 chords drop a PNG without the pointer, which is why most bug crops look like a still life.

The missed cursor is not a style issue. It is lost intent.

The reader cannot see what you were about to click.

How do you include cursor in screenshot with the system toolbar?

Press Shift-Command-5. That is the Screenshot app, not a third-party overlay.

Click Options. Enable Show Mouse Pointer.

The next capture from that palette includes the system cursor at the moment of the shutter.

The setting sticks for the Screenshot app until you turn it off. It does not rewrite Command-Shift-3 or Command-Shift-4.

Those two chords stay cursor-blind unless you change them in System Settings → Keyboard → Keyboard Shortcuts → Screenshots or you stop using them.

Window capture from the same palette can include the pointer if the pointer sits inside that window when you click. If the pointer is on another display, you get a clean window and a missing story.

The screen capture Mac shortcut map lists every chord. This page stays on the pointer.

Tip

If you include cursor in screenshot and still cannot see it, you captured a Retina crop and then scaled it in Slack. The arrow is two or three pixels after the resize. Crop tighter around the control first.

How do you include cursor in screenshot from the terminal?

The binary is /usr/sbin/screencapture. The flag you want is -C.

screencapture -C ~/Desktop/with-cursor.png

-x is silent (no shutter). -c is clipboard, not cursor.

That last one trips people every week.

Clipboard plus cursor:

screencapture -Cc

Interactive selection plus cursor:

screencapture -Ci ~/Desktop/crop.png

-C draws the current system cursor into the bitmap. It does not record a trail.

If you moved the pointer after you decided the crop, the arrow lies.

I keep a small alias for QA days:

alias shotc='screencapture -Cx ~/Desktop/shot-$(date +%H%M%S).png'

That is still a file. It is not a named element.

The best screenshot tool for Mac write-up is the buyer map if you are done with aliases.

Key

-c copies. -C draws the cursor. Mix them up and you will swear the OS is broken.

Why does include cursor in screenshot still fail in chat?

Three failure modes show up in every design review I sit in.

The arrow is off the crop. You framed the broken button and the pointer sat on the inspector. The PNG is honest and useless.

The tool never offered the toggle. Command-Shift-4 is fast and mute about options. People assume "screenshot" means "what I see," including the hand.

The receiver compresses the image. Slack, Linear, and some email clients crush a 2x PNG. The cursor becomes a gray smudge.

You then attach a second, larger crop. Two files, still no name.

A cursor is a hint, not an identifier. "The thing under the arrow" is not a selector.

I still include cursor in screenshot when the audience is a human who will look for five seconds. I stop relying on it when the audience is Claude Code or Cursor.

System toolbar

Type: Screenshot.app via Shift-Command-5.

Capture: screen, window, or selection. Optional pointer overlay.

Resolution: pixels only. No AX role, no label, no confidence.

screencapture -C

Type: CLI, scriptable.

Capture: file or clipboard, with or without sound.

Resolution: the same bitmap. Good for folders of repros. Bad for agents.

CleanShot X

Type: paid Mac screenshot app.

Capture: cursor toggle, hide desktop icons, annotate, copy.

Resolution: still pixels. The CleanShot X alternative page is fair about that limit.

PinVari

Type: point-and-speak capture for agents and tickets.

Capture: freehand marks, voice, pointer trail, focused-window text.

Resolution: named AX element, frame, confidence, circled-versus-dwelled provenance.

When should you include cursor in screenshot for a human, not an agent?

Use the pointer overlay when the ticket will be read by a person who already knows the app.

A PM skimming Linear at 6pm needs the arrow. A new contractor needs the arrow plus a sentence that names the tab.

A lawyer reviewing a redline needs the arrow on the clause.

Skip the overlay when the cursor would cover the defect. If the bug is a 2-pixel hairline under the pointer, the arrow hides the evidence.

Capture twice: one with cursor, one without.

Covering the bug with the arrow is a failed capture. Move the pointer two millimeters, then shoot.

I also skip the overlay on login screens and anything with a live token. A cursor sitting on a session cookie in DevTools is a gift you did not mean to send.

How does a pointer trail beat a frozen cursor?

A single arrow is one sample. PinVari records a timestamped pointer trail while you speak, then binds deictic words ("this", "that", "here") to where the pointer was at that instant.

Hover about 0.2s and dwell detection resolves the element even if you never drew a circle. Circle three controls in one breath and each mark gets its own words.

The overlay is topmost, so a naive hit-test would return PinVari's own window. The capture walks chainExcludingSelf and hit-tests the real app.

Electron and Chromium often build the AX tree lazily; PinVari sets AXManualAccessibility and retries until a labeled node appears.

If the point lands on a bare AXGroup, labeledDescendant walks to the deepest labeled child. Chromium identity attributes (AXDOMIdentifier, AXDOMClassList) name a title-less node.

Canvas and some games stay AX-blind; on-device Vision OCR is the fallback. Confidence below 0.8 asks.

It does not silently guess.

Hold ⌥⌘A, circle the control, say the defect. The notch island collects the capture.

Your agent calls pinvari_next_instruction over 127.0.0.1:3402 and gets the role, label, frame, crop, and transcript.

That is the job people think include cursor in screenshot will do. The arrow was a proxy for "this." The named element is "this."

The one-time license is on the pricing block if you want that path on this Mac. Nothing uploads by default.

Transcription and OCR stay on-device.

Heads up

Jam.dev will capture a browser console and a cursor in Chromium. It will not capture Xcode, Linear's desktop app, or your Electron shell. Marker.io is the same browser box, priced as an agency seat. Neither one names a native AX control.

What should a ticket say if you already attached a cursor crop?

Write the name anyway.

Control: button, Save, bottom right of Settings → Profile.

URL or window: https://staging.example.com/settings/profile or "Settings, Profile tab, build 2026.8.12."

Expected versus actual: Save enables after a valid name. It stays disabled.

Cursor note: "Arrow is on Save in the attached crop." That sentence is optional if the crop is tight. It is required if the crop is a full window.

If you use PinVari, paste the resolved path the Command Center already shows. The agent does not need your prose about "the blue one."

I keep a one-line footer in our Linear template: "If you include cursor in screenshot, still name the control." It cut a surprising number of 'which button' comments.

How do you include cursor in screenshot inside a recording?

QuickTime and the Shift-Command-5 record modes show the pointer by default. That is a movie, not a still.

Reviewers skip to the last three seconds and still ask which control you meant.

If you must record, freeze a still at the moment of the click and attach that PNG with the cursor on. Do not send a 40-second .mov as the only artifact.

For a still that must match the recording, pause with ⌥⌘P in PinVari if you are mid-scroll, then finish the marks. Scrolled marks keep their own frame.

The movie can stay in the ticket as color. The named capture is the work order.

Recordings explain. Stills assign. I want both when the bug is a hover state the PNG cannot hold.

FAQ

Does Command-Shift-4 include cursor in screenshot?

No. Command-Shift-4 is a selection chord and it omits the pointer.

Use Shift-Command-5 → Options → Show Mouse Pointer, or screencapture -C, or a tool with a cursor toggle.

How do I include cursor in screenshot on a second display?

Put the pointer on the display you are capturing. screencapture -C records the cursor on the display that owns the pointer.

PinVari remembers which monitor each mark was drawn on, so a multi-display capture does not collapse onto display 0.

Why is the cursor missing after I paste into Slack?

You either captured without the toggle, or Slack scaled a 2x PNG down until the arrow vanished. Attach the original file, or crop tighter before paste.

A named control in the ticket body survives compression.

Can CleanShot X include cursor in screenshot by default?

Yes. CleanShot X has a capture-cursor preference and can skip the desktop file.

It is still a bitmap. If the next reader is an agent, add an AX name or a PinVari capture.

Does a cursor in the PNG help Claude Code pick the right button?

Sometimes, if the crop is tiny and the button label is readable. Often the model guesses the nearest labeled neighbor.

A resolved AX path with a confidence score is the instruction you actually wanted.

Is include cursor in screenshot enough for App Store review notes?

It is enough for a human reviewer who can see the arrow. It is not enough for an automated pass that needs a selector.

Name the control in text either way.

Hand your agent the exact element

PinVari resolves what you point at into a named, executable instruction — on-device, no keys, your own agent. One click inside PinVari connects Claude Code, Cursor, VS Code or Codex — or paste one CLI line from pinvari.com/connect.

PinVari → Connect → your agent (one click)
Get PinVari — $39 →