open source · <4KB · zero deps

Click. Comment.
Feed to AI.

Annotate any webpage in seconds. Export for ChatGPT, Claude, or Cursor. One script tag โ€” nothing else.

Add to your HTML
<script src="https://unpkg.com/tack.js"></script>
GitHub
Three clicks to better code

Click an element. Write what's wrong. Hit export. Your AI gets exact context every time.

mysite.com/landing#tack
๐Ÿ“Œ Tack 2 here Copy for AI โ†“ .md Clear โœ•
AcmeFeaturesPricingContact
Build faster with Acme๐Ÿ“Œ
Make this bigger and bolder
Cancel Save โŒ˜โ†ต
Our platform helps teams ship 10x faster with AI-powered development tools and real-time collaboration.๐Ÿ“Œ
Too vague. Add benchmarks.
Cancel Save โŒ˜โ†ต

Lightning Fast

Sub-100ms response times on every request.

AI-Powered

Built-in assistant that learns your codebase.

Cursor
Paste from clipboard:

# Tack: Page Review
Date: 2026-02-21 ยท Notes: 2

## 1.
**Where:** section "Hero" โ†’ h1
**Note:** Make this bigger and bolder

## 2.
**Where:** section "Hero" โ†’ p
**Note:** Too vague. Add benchmarks.
Your AI loses context. Every time.

You see the bug. You know exactly what's wrong. But explaining where it is? That's the hard part.

Without Tack
  • "The heading in the hero... no, not that one, the one below the nav"
  • Screenshot → crop → paste → "see the red circle?"
  • AI changes the wrong element
  • Three rounds of back and forth
With Tack
  • Click the heading. Type "make it bigger"
  • Click "Copy for AI"
  • AI gets: element text + CSS selector + section context
  • One shot. Exact change. Done.
Four steps. Thirty seconds.
01

Add script

One <script> tag. Sleeps until activated โ€” zero overhead.

02

Add #tack

Append #tack to your URL. No reload.

03

Click & comment

Click any element. Write what should change.

04

Feed to AI

Copy or download .md. Paste into your AI tool.

<4KB gzipped Zero dependencies Shadow DOM isolation localStorage only Multi-page reviews Works on any page
One review session. All your pages.

Navigate across pages โ€” comments accumulate automatically. Export bundles everything into one file, organized by URL.

3 notes

/homepage

"Make hero bigger"
"Fix nav link"
"Add CTA button"

2 notes

/pricing

"Wrong price on Pro"
"Add annual toggle"

1 note

/about

"Update team photo"

Your AI finds the exact element. Every time.

Triple-anchor identification: element text, section heading, and CSS selector. No ambiguity.

tack-review-2026-02-21.md
# Tack: Page Review Date: 2026-02-21 Notes: 3 --- ## 1. **Where:** section "Hero" โ†’ `h1` **Element text:** "Welcome to Acme Corp" **Selector:** `header > h1` **Note:** Make this bigger, add gradient text ## 2. **Where:** section "Features" โ†’ `p` **Element text:** "Our platform loads in under 100ms..." **Selector:** `main > section:nth-of-type(2) > div > p` **Note:** Too generic. Mention actual benchmarks. ## 3. **Where:** section "Pricing" โ†’ `td` **Element text:** "$29/mo" **Selector:** `table > tbody > tr:nth-of-type(2) > td:nth-of-type(2)` **Note:** Change to $19/mo, we lowered the price
Why Tack?
TackVibe AnnotationsDrawbridge
Install1 script tagExtension + MCPExtension
Any page?Yes (bookmarklet)Localhost onlyYes
Multi-pageYesYesNo
Size<4KB gzipExtension + serverExtension
Zero configYesNoNo
Open sourceMITMITCustom
Keep it in production. Seriously.

The script does absolutely nothing until #tack appears in the URL hash. No DOM changes, no network requests, no overhead. Leave it in your code and activate whenever you need a review.

<!-- It's fine. Tack sleeps until #tack. -->
<script src="https://unpkg.com/tack.js"></script>

See for yourself

Tack is loaded on this page. Click the button โ€” then click any element.

Bookmarklet โ€” drag to bookmarks