For the people building and testing interfaces

Copy a reference to the UI under your pointer.

Give your next bug report, test, or coding conversation a specific control to work with. Hover in a Mac app or Safari, press a shortcut, and paste the element’s details.

Try the example

Native macOS app · Public download coming soon

01Point at the control
Project settings
Project name
My next good idea
Save changes
02Press ⌃⌥⌘CControl–Option–Command–C
03Paste the referenceCopied
Role: button
Name: "Save changes"
Identifier: "save-settings"

Illustrative example · your shortcut is configurable

Mac apps + SafariThree clipboard formatsLocal processingmacOS 14 and later

See what you would paste

Useful context, already copied.

Choose an example source and output format. In the app, the reference comes from the control under your pointer.

Annotator exampleExample data
example.com/settings
Project settingsExample website
Project name
My next good idea
Captured controlSave changes
Role
button
Identifier
save-settings

Safari’s extension inspects the webpage and checks locator candidates against its current DOM.

Readable context for a bug report or coding conversation.

Website: https://example.com/settings
Role: button
Name: "Save changes"
Identifier: "save-settings"
Playwright: page.getByRole("button", { name: "Save changes", exact: true })
CSS: [id="save-settings"]

Illustrative output. This page does not inspect other tabs, apps, or files.

A locator describes the interface at capture time. If a unique locator is unavailable, Annotator copies a descriptive reference and explains the limitation.

A small step between seeing and explaining

Keep the control in context.

Use the same shortcut across native apps and Safari. Annotator sits in your menu bar, ready when you need a reference.

  1. 1

    Hover over the element.

    Point at a button, field, or another control. You don’t need to click it or change its state.

  2. 2

    Press your shortcut.

    The default is ⌃⌥⌘C. The captured target is highlighted and the reference goes to your clipboard.

  3. 3

    Paste it where you work.

    Share the readable reference, use an available Safari locator in a test, or choose JSON for structured context.

Know what you’re copying

Different interfaces.
Useful details from each.

Annotator uses the information each environment makes available. Missing information stays missing.

Native Mac applications

Copy the app, window, role, name, available accessibility identifier, ancestry, and screen bounds. Without an identifier, the fallback is descriptive and may not uniquely identify a control.

Safari webpages

Copy page context and checked Playwright or CSS locator candidates. Open shadow roots and same-origin frame paths are supported; incomplete frame paths are marked partial.

Context you control

Choose the clipboard format and shortcut in Settings. Copy the last reference again from the menu. Processing is local, with no telemetry or history database.

One-time setup on your Mac

Grant access where you need it.

Allow Annotator in macOS Accessibility settings for native apps. For webpages, enable Annotator for Safari, allow access to the sites you inspect, and reload existing pages.

You stay in control of access.

The app reports missing permissions and offers recovery guidance. Its configurable hotkey does not monitor general keyboard input.

Launch at login is enabled on first launch and can be turned off.

Before you try it

A few practical details.

Does it work in Chrome or other browsers?

Other browsers use native macOS Accessibility metadata. DOM locators come from the bundled Safari extension. Safari’s internal pages are unavailable to that extension.

Will every element have a unique locator?

No. Native apps may omit accessibility identifiers, and some web contexts cannot be addressed uniquely. Annotator keeps that limitation visible and falls back to a descriptive reference. Structural CSS selectors can change when the webpage changes.

What about canvases and embedded content?

A canvas reference identifies the canvas element, not the objects drawn inside it. Closed shadow roots expose their hosts. Cross-origin frames can provide metadata when Safari allows access, but their full frame paths may be unavailable.

Does Annotator save screenshots or a capture history?

Capture does not take screenshots or directly read field values. The last reference is held in memory and on your clipboard; it can include visible names, URLs, and other element metadata. There is no history database or telemetry. You decide where to paste it.

When can I download it, and what will it cost?

Public downloads are coming soon. Pricing and a release date have not been announced. The current build is a local development export, not a notarized public installer.

Annotator for macOS

Put the control in the conversation.

Built for macOS 14 and later, on Apple silicon and Intel.

Public download, pricing, and launch date are not yet available.