Annotate any web element. For those who who paste a lot into AI agents.
Alt + Right-Click any element on a website to leave an annotation. Export annotations as a clean, structured Markdown payload that pastes straight into any AI tool (Cursor, Claude, ChatGPT, etc.). Your AI agent gets all of the context it needs: a stable selector, the element text, your note, and the URL; no screenshots required.
- No telemetry
- Manifest V3
- Works offline
- MIT licensed
How it works
-
1
Open the page you are reviewing
Any
httporhttpssite works — staging, production, localhost, a competitor's landing page. The extension does nothing until you actively annotate. -
2
Alt + Right-Click any element (default)
An inline panel opens. Type a note and press Esc or click outside to save — empty notes are auto-discarded. Hold the modifier and click extra elements to attach them to the same note. Change the modifier (Alt / Shift / Ctrl / Meta / none) under Settings → Shortcuts.
-
3
Review and edit in the popup
Open the popup with the toolbar icon or Alt + Shift + A. Annotations are grouped by page URL. Edit notes inline, search within the active panel, click any pink selector or blue URL header to jump back to that element on the page, and use ↰ / ↱ in the header for multi-step Undo/Redo.
-
4
Copy or cut Markdown, paste into your AI tool
Use Copy All to put a clean Markdown payload on your clipboard while keeping your notes. Use Cut All (right-click the copy button by default) when you want the list cleared after export. Paste into Cursor, Claude, ChatGPT, Copilot, or v0. The agent ships the PR.
## https://example.com/dashboard
1. `button#submit-btn`
- Make this button larger and change color to green
- Add a loading state while the request is pending
- _"Submit"_
- https://example.com/dashboard
2. `div.sidebar` | `body/div[2]/div[1]`
- Reduce width to 200px and add a top border
- _"Navigation Settings Billing"_
- https://example.com/dashboard
3. `header nav a[href="/pricing"]`
- Wrong active state on this link
- _"Pricing"_
- https://example.com/dashboard
Built for the AI coding workflow
Stop screenshotting. Stop copying CSS selectors by hand. Click elements, type notes, paste a clean payload into your AI agent, ship the PR.
Why plain Markdown?
Pick any model. Switch any time. Notes stay local and export as plain text — paste into Cursor, Claude, ChatGPT, whatever ships next.
- Portable — works in every AI tool
- Local-first — no servers, no telemetry
- No lock-in — switch models without reformatting
- No UI tax — you control where context lands
Stable selectors
Every annotation captures tag, ID, classes, XPath, the URL, and a snippet of the clicked element's text, so your AI tool can locate the element without ambiguity.
Unlimited annotations
Annotations are grouped by page URL in the popup. Add as many as you want. Premium users can attach multiple notes to a single annotation (one or more elements).
Multi-element annotations
While the inline edit panel is open, hold your modifier (default Alt) and click other elements to attach them as extra selector context on the same note — great for “align this with that” style feedback.
Inline editing
Edit any note directly in the popup. Auto-expanding textboxes save as you type. Per-row delete moves notes to History instead of erasing them.
Export as Markdown
By default, Copy All copies a clean Markdown bundle without clearing your list. Right-click the same button for Cut All (copy and clear). You can remap both footer buttons in Settings.
Multi-step Undo / Redo
The popup header has ↰ and ↱ buttons that walk back through recent storage changes — restore deleted notes, reverse edits, or roll back a Clear All without leaving the popup.
History & Save for Later
Deleted annotations are kept with timestamps (subject to per-tab history limits in Settings). Right-click Clear All to Save for Later instead — stash the current list as a named set you can restore from History.
Copy log
Every export event is logged with a full output preview, so you can see exactly what you sent to your AI agent and re-copy any past payload.
Search the current view
Hit ⌘ or Ctrl + F (or the search icon) to find text in the panel you are looking at: the current annotation list, History, Saved for Later, the Copy Log, or Settings.
Click to navigate
Click a pink selector or a blue URL group to jump straight to the annotated element on the page. The annotation panel opens automatically.
Undo, not confirm
The main Clear All action shows a 5 second undo banner instead of a confirmation dialog. Clearing a single URL group still asks once, so you do not wipe part of a page by accident.
Auto backup
Chrome Sync mirror plus a local in-browser snapshot about every 15 minutes. No download prompts. Auto-Backup is on by default; turn it off in Settings to stop syncing to your Google account (data stays on this device; a local snapshot still refreshes for recovery on this install).
Pricing
Free forever for the core workflow. One-time Premium unlocks a polished dark theme, custom prepend/append export text, and multiple notes per element.
Free
All the essentials, forever
- Modifier + Right-Click annotation (default Alt)
- Open popup with Alt + Shift + A (customizable in chrome://extensions/shortcuts)
- Unlimited annotations grouped by URL
- Multi-element annotations (modifier + click while editing)
- Markdown export: Copy All by default; Cut All on right-click
- Inline editing with auto-save
- Multi-step Undo / Redo in the popup header
- History view with restore
- Save for Later (right-click Clear All) with restore from History
- Copy Log of every export event
- Search across the active panel (notes, history, saved sets, copy log, settings)
- Undo banner on Clear All / Cut All / Save for Later (footer)
- Auto backup to chrome.storage.sync (on by default; off in Settings stops the sync mirror; data stays on this device)
Premium
Everything in Free, plus:
- Polished dark mode for the popup
- Custom prepend and append text on every Markdown export
- Multiple notes per element, each exported as its own bullet under the selector
- Wrap exports with your own AI system prompts, headers, or footers
- All future Premium features included
- License key, no subscription, no recurring charges
- License is verified locally with an Ed25519 signature — works fully offline
One-time $9.99 payment via Stripe. After checkout you'll land on a success page that shows your license key with a copy button — the same key is also included in your Stripe receipt email under “License key:”. Activate it inside the extension popup under Settings.
Leave a tip
If the free version saves you time and you want to say thanks, you can leave an optional tip. Choose any amount you like (minimum $0.50). Tips are completely voluntary and do not unlock any extra features. The free tier already includes everything most developers need.
Leave a tipFrequently asked questions
Does the extension send my data anywhere?
No annotation data is sent to an app server. There is no analytics and no telemetry. Annotations live in chrome.storage.local on your device. Auto-Backup mirrors a compressed bundle into chrome.storage.sync (on by default; disable in Settings to stop syncing to your Google account while keeping data on this device). Google encrypts Sync data in transit and at rest. Premium checkout and license delivery use Stripe plus the project's Cloudflare Worker; the extension itself never calls the Worker — license keys are verified locally.
What does it read from the page?
Only when you actively annotate, it computes a stable CSS selector and captures up to 240 characters of the primary element's text. If you add companion elements to the same annotation (modifier + click while the edit panel is open), each stores up to 120 characters. It does not read passwords, form values, cookies, or storage.
Is Premium a subscription?
No. Premium is a one-time $9.99 purchase. Your license key works forever, no recurring charges.
How do I activate Premium?
Click Get Premium and complete the $9.99 Stripe checkout. You'll be redirected to a success page that shows your license key with a copy button. The same key is also in your Stripe receipt email under “License key:”. Open the extension popup, click the gear icon, paste your key in the Premium section, and click Activate.
Which AI tools does it work with?
Any AI tool that reads Markdown. The export format is tuned for Cursor, Claude, ChatGPT, GitHub Copilot Chat, and v0, but works with any model.
What if I delete something by accident?
Almost everything is recoverable. Per-row deletes move the annotation to History (open it with the 🕐 icon and click + to restore). The Clear All / Cut All / Save for Later actions show a 5-second Undo banner before they finalize. The popup header also has multi-step Undo/Redo for recent storage changes.
Are there any limitations?
Yes. Annotations live in the top frame, so elements inside iframes (Stripe Checkout, Calendly, YouTube embeds, etc.) attach to the iframe container. Closed shadow roots cannot be pierced. The extension runs on http and https URLs only, not file:// or chrome:// pages.
Where is my data stored?
Locally in chrome.storage.local: annotations, history, copy log, settings, saved-for-later sets, and your license key. When Auto-Backup is on (default), a compressed snapshot is also mirrored to chrome.storage.sync so a fresh Chrome install signed in to the same Google Account can restore your work.
Stop screenshotting. Start shipping.
Install the free extension, or unlock Premium for $9.99.