Free Chrome Extension

Give your AI agent
eyes on your UI

UIAnnotator captures precise UI context — CSS selectors, computed styles, screenshots, element hierarchy — and formats everything your AI needs to fix issues without back-and-forth.

Add to Chrome — Free Try the demo

No account required · Chrome, Edge, Brave, Opera, Arc · Chrome 102+


The missing layer between
your browser and your agent

When you ask Claude, Cursor, or any AI agent to fix a UI issue, you typically paste a vague description — "the button looks off" — and spend the next ten minutes answering follow-up questions about selectors, styles, and context the agent could never have known.

UIAnnotator closes that gap. It runs directly in your browser as a Chrome extension, letting you click any element on any page to capture everything the agent needs: the precise CSS selector, the full computed style block, the element's position and dimensions, its React or Vue component tree, and a clean screenshot.

One click. One copy. Everything in one structured message your agent can act on immediately — without asking a single clarifying question.


Four steps.
Seconds to complete.

chrome://extensions UIAnnotator Status Active Annotations 0 Open Annotator Click to install
01
Install from Chrome Web Store
Find UIAnnotator in the Chrome Web Store and click Add to Chrome. The extension icon appears in your toolbar. Click it to confirm it's active — you're ready.
app.myproduct.com/settings Save changes button.btn-primary .settings-form > button.btn-primary Copy
02
Click the pencil — then click any element
Press the pencil icon in the floating toolbar to enter annotation mode. Your cursor becomes a precision selector. Hover over any element — it highlights with its exact CSS selector. Click to annotate it.
.settings-form > button.btn-primary Button colour is wrong — should be #0052CC not #0066FF per brand guide. INTENT Fix Change Question SEVERITY Blocking Important 📷 Capture screenshot with annotation Cancel Save annotation
03
Add your note, intent & severity
A popup appears pre-filled with the element's selector. Type your feedback note, tag the intent (Fix / Change / Question) and severity. Toggle screenshot on to capture the page state. Click Save.
Annotations 2 Standard Forensic button.btn-primary IMP 🔧 Button colour is wrong... 📷 screenshot div.hero-headline BLOCK ✏️ Font size too small on mobile ☑ Select all ✓ Copied! Claude UI Annotation Report 🟡 IMP · 🔧 button.btn-primary 🔴 BLOCK · ✏️ div.hero-headline Claude I can see both issues clearly. For button.btn-primary, update background-color to #0052CC... For div.hero-headline, set... font-size: clamp(28px,4vw,48px) paste
04
Copy, paste, then attach screenshots
Click Copy. The full annotation report — selectors, styles, notes, severity — lands in your clipboard. Paste it into Claude, Cursor, or any LLM. If you had screenshots enabled, they download automatically at the same time.
How to attach screenshots to Claude
1
Click Copy in UIAnnotator — screenshots auto-download to your Downloads folder as annotation-1.jpg, annotation-2.jpg etc.
2
Paste the annotation text into the Claude message box (Ctrl+V / Cmd+V)
3
Open your Downloads folder, then drag the JPG files directly into the same Claude message. Claude sees text + images together.
4
Press Send. The agent has full context — no back-and-forth needed.

From browser to agent
in under 30 seconds

Watch the full workflow — install, annotate, copy, paste.

app.dashboard.com New project Copy Navigate to the page you want to annotate
app.dashboard.com New project .dashboard > button.btn-new Copy Click pencil → hover to select element
Annotating element .dashboard > button.btn-new This button doesn't match our new design system. Should use ds-btn-primary class and #0052CC background. INTENT Fix Change SEVERITY Blocking Important 📷 Include screenshot Cancel Save annotation Popup appears — type note, set intent & severity
1 Annotations 1 Standard button.btn-new IMP 🔧 This button doesn't match our... 📷 captured ELEMENT button.btn-new .dashboard > button.btn-new ☑ Select all Copy all Copy Annotation saved — panel shows full details
app.dashboard.com New project 1 ✓ Copied — 1 annotation · 1 screenshot Claude UI Annotation Report Page: app.dashboard.com #1 IMP · 🔧 button.btn-new This button doesn't match our design system... Selector: .dashboard > button.btn-new background-color: rgb(0,102,255) font-size: 14px · font-weight: 500 + screenshot attached Claude I can see the issue clearly. Here's the fix: /* button.btn-new */ background-color: #0052CC; class: "ds-btn-primary" This matches your design system exactly. Paste Copy → Paste into Claude → Instant fix, zero back-and-forth
1 / 5

Try it yourself — no install needed

Click the pencil button in the toolbar below, then click any element in the mock dashboard to annotate it.

localhost:3000/dashboard
Here's what's happening with your projects today.
24
Active projects
8,291
Total views
3
Errors this week
Annotations
Standard
Click ✏ then click any element
Capabilities

Everything the agent needs.
Nothing it doesn't.

Precise CSS selectors
Generates the most specific, unique selector for each element — nth-child, attribute selectors, IDs — so the agent knows exactly which element you mean.
Full computed styles
Captures every relevant computed CSS property — font, colour, spacing, layout, borders — directly from the browser's rendering engine, not the source code.
Layout & position data
Records exact bounding box, page offset, viewport coordinates, and scroll position — giving the agent the full spatial context of where the element lives.
React & Vue component tree
Detects React and Vue devtools fibre data and extracts the component hierarchy — so agents working with your source code can find the exact component to edit.
Auto screenshots
Enable the camera toggle before annotating. The extension hides its own UI, captures the visible tab, and saves it. When you click Copy, screenshots auto-download as numbered JPG files — drag them from your Downloads folder into the same Claude message alongside the pasted text.
Accessibility context
In Forensic mode, captures ARIA roles, labels, tab index, disabled state, and the parent DOM path — critical for agents working on accessibility improvements.
Multi-annotation sessions
Annotate multiple elements in one session. Select all or pick specific annotations to copy. Everything batches into a single structured report.
Four output formats
Compact for quick fixes, Standard for typical issues, Detailed for layout problems, Forensic for full context including typography, environment, and reproduction steps.
One-click copy
All annotation details — formatted, structured, complete — copy to your clipboard in one click. Paste directly into any LLM, agent, or issue tracker.

Output formats

Structured for machines.
Readable by humans.

Choose the right level of detail for your task. All formats paste cleanly into any LLM or agent interface.

Standard

The default format for everyday annotations. Includes element identity, selector, HTML tag, inner text, full computed CSS, and page context. Enough for most UI fixes.

  • Element name and CSS selector
  • Full opening HTML tag with attributes
  • Inner text content
  • Complete computed CSS styles
  • Page URL, viewport, capture timestamp
  • User feedback note and severity
Output preview
## Annotation 1: Button colour is wrong
🟡 IMPORTANT · 🔧 FIX

**User feedback:**
> The primary CTA button is using the wrong brand colour.
> Should be #0052CC, currently rendering as #0066FF.

**Element:** `button.btn-primary`
**CSS Selector:** `.hero > div.cta > button.btn-primary:nth-child(1)`
**HTML Tag:** `<button class="btn-primary" type="button">`
**Inner text:** "Get started"

**Computed styles:**
- `background-color`: rgb(0, 102, 255)
- `color`: rgb(255, 255, 255)
- `font-size`: 14px
- `font-weight`: 600
- `padding`: 12px 28px
- `border-radius`: 4px

**Page:** https://example.com/
**Viewport:** 1440×900px

Compact

Minimal output for quick, targeted fixes where the element and issue are obvious. Just the essentials — name, selector, feedback, and page.

  • Element name and selector only
  • User feedback note
  • Page URL
  • Severity and intent
Output preview
## Annotation 1: Button colour is wrong
🟡 IMPORTANT · 🔧 FIX

**User feedback:**
> The primary CTA button is using the wrong brand colour.

**Element:** `button.btn-primary`
**CSS Selector:** `.hero > div.cta > button.btn-primary:nth-child(1)`
**Page:** https://example.com/

Detailed

Adds layout and position data on top of Standard. Best for issues involving spacing, alignment, overlap, or anything where the element's position in the page matters.

  • Everything in Standard
  • Exact bounding box dimensions
  • Page offset coordinates (x, y)
  • Viewport-relative position
  • Scroll offset at capture time
  • React / Vue component tree
  • Source file path (if available)
Output preview
## Annotation 1: Button is misaligned
🔴 BLOCKING · 🔧 FIX

**Element:** `button.btn-primary`
**CSS Selector:** `.hero > div.cta > button.btn-primary:nth-child(1)`
**HTML Tag:** `<button class="btn-primary" type="button">`

**Size:** 140×44px
**Page position:** x:620 y:480
**Viewport position:** x:620 y:320
**Scroll:** scrollX:0 scrollY:160

**React tree:** <App> › <HeroSection> › <CTAGroup> › <PrimaryButton>
**Source file:** src/components/Hero/CTAGroup.tsx

**Computed styles:**
- `position`: relative
- `margin-left`: 24px  ← likely the culprit
- `align-self`: flex-start

Forensic

Maximum context for complex issues. Includes everything in Detailed plus live-queried accessibility data, full typography, and the exact reproduction environment.

  • Everything in Detailed
  • ARIA role, label, tab index, disabled state
  • DOM parent path (3 levels)
  • Full typography: font, size, weight, line-height
  • Exact user agent and OS
  • Device pixel ratio
  • Complete reproduction environment
Output preview
**Accessibility:**
- ARIA role: button
- Tab index: 0
- Disabled: false
- Parent path: div .cta-group ← section .hero ← main

**Typography:**
- Font: Inter
- Size: 14px / Weight: 600
- Color: rgb(255, 255, 255)
- Line height: 20px

**Reproduction environment:**
- URL: https://example.com/landing
- Viewport: 1440×900px, DPR: 2
- User agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)
  AppleWebKit/537.36 Chrome/124.0.0.0
- OS: MacIntel

FAQ

Common questions

Which browsers does it support?

UIAnnotator works on Chrome, Microsoft Edge, Brave, Opera, and Arc — any Chromium-based browser that supports Chrome extensions. It does not work on Firefox or Safari, as those browsers use a different extension system and do not support Chrome extensions.

Does it work on any website?

Yes. UIAnnotator is a content script that runs on any webpage you visit in Chrome. It works on public sites, localhost, internal tools, staging environments — anywhere you can open Chrome.

Which AI tools does it work with?

Any LLM or agent that accepts text input: Claude, ChatGPT, Gemini, Cursor, GitHub Copilot, Perplexity, and any chat interface. The output is plain structured text — universally compatible.

Does it send data anywhere?

No. UIAnnotator runs entirely in your browser. No data is sent to any server. There are no accounts, no API calls, no telemetry. Everything stays local on your machine.

How do screenshots work?

Enable the camera toggle before annotating. When you submit an annotation, the extension briefly hides its own UI and captures the visible tab. When you click Copy, screenshots auto-download to your Downloads folder as annotation-1.jpg, annotation-2.jpg etc. — one file per annotated element. After pasting the text report into Claude, drag those files from your Downloads folder directly into the same message. Claude will see both the structured text and the visual screenshots together.

Does it work with React / Vue / Angular?

React and Vue are natively supported — UIAnnotator reads the component fibre tree and includes it in the output. Angular and other frameworks get full CSS/DOM data even without component-level detail.

Is it really free?

Completely free, with no premium tier. UIAnnotator is a side project built to solve a real problem. There are no plans to charge for it.

Can I annotate multiple elements at once?

Yes. Annotate as many elements as you like in one session. Use the checkboxes to select a subset for copying, or copy all at once. Each annotation is numbered and self-contained in the output.

What is Forensic mode for?

Forensic mode is designed for complex accessibility audits, cross-browser bugs, and situations where the agent needs to reproduce the exact environment. It captures your user agent, OS, device pixel ratio, ARIA attributes, and full typography data in addition to everything in Detailed mode.


Built by someone who
felt the same friction

Monty Bagati
Creator, UIAnnotator

Building tools at the intersection of design and AI. UIAnnotator started as a personal solution to a recurring problem.

Every time I annotated a UI issue to send to an AI agent, I realised I was manually writing out things the browser already knew — the exact selector, the computed styles, the component name. The agent would ask follow-up questions I could have answered upfront if I'd had a structured way to capture the context.

UIAnnotator is the tool I wished existed. It takes ten seconds to annotate an issue and produces output the agent can act on immediately, without back-and-forth. It's completely free because the value is in saving your time, not in charging for it.

Browser compatibility: UIAnnotator works on Chrome and all Chromium-based browsers — Edge, Brave, Opera, and Arc. It does not work on Firefox or Safari, as Chrome extensions are not supported on those browsers.

Have feedback? Whether it's a bug, a suggested enhancement, a missing feature, or just a comment — reach out at bagati.monty@gmail.com. Every piece of feedback is read and genuinely considered. This tool improves because of the people using it.

Get started

Free forever.
One install.

No accounts, no API keys, no setup. Install and start annotating in under a minute.

Add to Chrome — Free

Works on Chrome, Edge, Brave, Opera & Arc · Chrome 102+ · Firefox & Safari not supported