UI Token Extractor
A userscript that reads the live, computed DOM of whatever page you're on and extracts design tokens — colors, typography, spacing, effects, component styles — into an on-screen panel you can select and copy from. No AI, no network requests, nothing sent anywhere. Inspired by uidrop.site's extraction categories; deliberately without its "send to Claude/ChatGPT/etc." step.
What it captures
- Colors — the most-used text and background colors on the page
(by computed value, ranked by frequency), plus any
:rootCSS custom properties it can read from same-origin stylesheets (the usual home for a site's real design tokens). - Typography — distinct font families, sizes, and weights in use, ranked by frequency.
- Spacing — distinct padding and margin values in use.
- Border radius — distinct values in use.
- Effects — box-shadows, CSS gradients, and any non-default opacity values.
- Components — up to 5 examples each of buttons, inputs, cards, and chip/badge/tag-like elements, with their full style snapshot (colors, padding, radius, border, shadow, font).
- Color scheme — whether the page matches
prefers-color-scheme: dark, and whether the body background itself reads as dark.
How to use it
- Install the script (see the top-level repo README).
- On any page, click the floating 🎨 button in the bottom-right corner, or press Alt+Shift+U.
- A panel opens with everything formatted as plain text in a read-only textarea. Click the text to select all of it, then copy normally (Ctrl/Cmd+C) — or use the Copy all button, which uses the browser's local clipboard API and never touches the network either.
- Press Esc, click outside the panel, or hit Close to dismiss.
Guarantees
- No
fetch/XMLHttpRequest/WebSocket/sendBeacon/GM_xmlhttpRequestanywhere in the script. Extraction only readsgetComputedStyle()and same-origin stylesheet rules already loaded by the page you're viewing. - No AI integration. This is deliberately a strict subset of what uidrop.site does — the "send to an AI tool" step from the original is not implemented here at all.
@grant none— the script doesn't request any special userscript- manager permissions.
Known limitations
- Cross-origin stylesheets can't be read for
:rootcustom properties (a browser security restriction, not something this script can work around) — the color/typography/spacing extraction from computed styles still works fine regardless, since that doesn't depend on reading stylesheet source. - Component detection (buttons/cards/chips) uses heuristics (tag name,
classname patterns,role="button") — it won't catch every custom component naming convention, and may occasionally mis-tag something. - Capped at scanning 4,000 elements for performance on very large pages; the report notes when a page was truncated.