A website
reads as a
design system.
designlang crawls any URL and returns its complete design language — tokens, typography, spacing, shadows, components, regions, health, remediations — in W3C DTCG format, with native emitters for iOS, Android, Flutter and WordPress, and a live MCP server your editor can read.
Free, rate-limited to 3 extractions per day. Private IPs rejected. No accounts.
The Intent release.
Everything else captures how a site looks. v10 captures what it is — the semantic layer an LLM needs to rebuild a site faithfully, not just restyle a generic scaffold.
Page intent
A classifier that labels the URL landing / pricing / docs / blog / product / about / dashboard / auth / legal — with confidence and ranked alternates.
type: pricing (0.87) signals: url /pricing, $19/mo grid, 3 cards, 2 CTAs alternates: landing (0.21)
Section roles
Hero, feature-grid, logo-wall, stats, testimonial, pricing-table, faq, steps, comparison, gallery, bento, cta, footer. Plus extracted slot copy and reading order.
reading order: hero → logo-wall → feature-grid → testimonial → pricing-table → faq → cta → footer
Material language
Glassmorphism, neumorphism, flat, brutalist, skeuomorphic, material-you, soft-ui — inferred from shadow complexity, backdrop-filter, saturation, and geometry.
label: brutalist (0.78) shadow profile: hard (blur 0) avg radius: 2px saturation: 0.91
Imagery style
Photography, 3d-render, isometric, flat-illustration, gradient-mesh, icon-only, screenshot — with dominant aspect ratio and image-radius profile.
label: flat-illustration svg: 12/14 (86%) aspect: square-ish radius profile: rounded
Component library
Identifies shadcn/ui, Radix, Headless UI, MUI, Chakra, Mantine, Ant Design, Bootstrap, HeroUI/NextUI, Tailwind UI, Vuetify, or plain Tailwind.
library: shadcn/ui (0.82) evidence: - shadcn css tokens - radix attributes x 4 tailwind utility density 71%
Logo extraction
--full pulls the live SVG (or raster bytes) and samples clearspace. Writes *-logo.svg and *-logo.json.
kind: svg dims: 112 x 28 aspect: 4.000 clearspace: 48/32/48/32 px
Multi-page crawl
--full or --pages N auto-discovers pricing / docs / blog / about / product from nav and emits a cross-page consistency report.
pages: 5 (+ homepage) shared colors: 17 pairwise jaccard: 0.82 avg per-page uniques flagged
Prompt pack
Ready-to-paste prompts for v0, Lovable, Cursor, Claude Artifacts. Tokens, section order, voice, and library all inlined so one paste is enough.
*-prompts/ v0.txt lovable.txt cursor.md claude-artifacts.md recipe-button.md ...
--smart classifier
When heuristic confidence dips below 0.6, optionally route through OpenAI or Anthropic. Zero-dep fetch; no key, no call.
$ designlang <url> --smart provider: anthropic model: claude-haiku-4-5 fallback: heuristic (still prints)
Motion language
Easing families, springs, duration tokens, scroll-linked animation detection, keyframe classification. Emits *-motion-tokens.json.
feel: springy durations: xs 150ms, sm 220ms, md 380ms easings: ease-out (61%), spring (18%) scroll-linked: yes
Component anatomy v2
Variant × size × state matrices with slot inference. Emits typed React stubs (*-anatomy.tsx).
interface ButtonProps {
variant?: 'primary' | 'secondary';
size?: 'sm' | 'md' | 'lg';
leadingIcon?: ReactNode;
badge?: ReactNode;
}Brand voice
Tone, pronoun posture, heading style, CTA verbs. The words that match the paint.
tone: technical pronoun: we→you headings: Sentence case (tight) cta: start (14), ship (8), deploy (5)
designlang lint
Audit your own tokens. Color sprawl, spacing variance, contrast. Exits non-zero. CI-ready.
$ designlang lint ./tokens.json Score 74/100 · Grade C ERROR [contrast-wcag-aa] 2 pairs fail WARN [color-sprawl] 3 near-dupes
designlang drift
Compare local tokens against a live site. Drifted, matched, unknown — verdict + ratio.
$ designlang drift \ https://app.com \ --tokens ./src/tokens.json Verdict: notable-drift (0.24)
designlang visual-diff
Two URLs, one HTML file. Embedded screenshots, size deltas, changed tokens. No server needed.
$ designlang visual-diff \ https://staging.app.com \ https://app.com
Aliases, not values.
v7.0 writes tokens in W3C DTCG. Hover a semantic row on the left and watch the alias resolve through to its primitive on the right.
Your editor reads this.
The MCP server exposes five resources and five tools over stdio, speaking JSON-RPC to Claude Code, Cursor, and Windsurf. See §09 for install.
---
description: Design system extracted from https://stripe.com — use these tokens, do not invent new ones.
globs: **/*.{ts,tsx,jsx,js,css,scss,html,vue,svelte,swift,kt,dart,php}
alwaysApply: true
---
# Design system reference
Source: https://stripe.com
Extracted by designlang v7.0.0 on 2026-04-18T12:00:00Z
## Semantic tokens (use these)
- color.action.primary: #533afd
- color.surface.default: #ffffff
- color.text.body: #0a2540
- radius.control: 8px
- typography.body.fontFamily: sohne-var, Helvetica Neue, Arial, sans-serif
## How to use
- Prefer `semantic.*` tokens over `primitive.*`.
- Never invent new tokens or hex values; reuse the ones above.
- When a value is missing, pick the closest existing semantic token and flag the gap.
- Reference tokens by their dotted path (e.g. `semantic.color.action.primary`).
▍▍▍▍One token. Five languages.
The same semantic token, emitted in five native dialects. No style leaks, no translation layer.
:root {--color-action-primary: #533afd;
--radius-control: 8px;
}
designlang <url> --platforms all writes these files under ./design-extract-output/<platform>/.
The stylesheet is the problem.
Most sites ship 40–90% unused CSS, long walls of !important escalations, and a specificity graph that rises forever. v7.0 surfaces all of it — not as a vanity score, but as exact declaration-level evidence.
From score to fix.
Most tools hand you a failing contrast ratio. designlang hands you the next color in your own palette that passes AA. Drag to see the difference.
designlang only suggests colors that already exist in the extracted palette. No invented tokens.
Structure, not just style.
designlang labels the page before measuring it. Nav, hero, pricing, footer — nine roles; landmarks first, heuristics second. Components are clustered by DOM signature and style vector, not by guessing at class names.
- navtop-anchored navigation. landmark + top-anchored + link density > 0.5
- heroprimary above-the-fold statement. large type + early viewport + CTA
- featuresgrid of benefit/feature cells. 3+ siblings, similar structural hash
- pricingprice tiers and plans. currency symbol + repeated card shape
- testimonialssocial proof / quotes. blockquote or quote glyph + attribution
- ctastandalone conversion band. single button + heading, full-width container
- footerbottom landmark. landmark + bottom-anchored + link density high
- sidebarlateral aside content. landmark=complementary or aside element
- contentprose / article body. main landmark, paragraph density, reading width
background: var(--accent); color: var(--paper); border: 1px solid var(--accent); padding: 10px 18px;
background: transparent; color: var(--ink); border: 1px solid var(--ink); padding: 10px 18px;
background: transparent; color: var(--ink); border: 1px solid transparent; padding: 10px 18px; text-decoration: underline; text-underline-offset: 3;
background: var(--paper-2); color: var(--ink-3); border: 1px solid var(--ink-3); padding: 10px 18px;
Six design systems,
one format.
Each specimen was crawled once and written to DTCG. The page accent below is pulled from the specimen's own extracted primary — the same semantic.color.action.primary your agent would get over MCP.
Where designlang doesn't win,
it says so.
We picked five tools doing closely adjacent work. The matrix below is our honest assessment on 2026-04-18, written by someone who actually uses all six.
| Feature | designlang | v0 | Builder.io Visual Copilot | Style Dictionary | Subframe | Project Wallace |
|---|---|---|---|---|---|---|
| Extracts from a live URL | — | — | — | |||
| Emits W3C DTCG tokens | — | — | — | — | ||
| Semantic alias layer | — | — | — | |||
| Multi-platform output (iOS, Android, Flutter) | — | — | — | — | ||
| MCP server over stdio | — | — | — | — | — | |
| CSS health audit | — | — | — | — | ||
| A11y remediation suggestions | — | — | — | |||
| Component cluster detection | — | — | ||||
| Offline / local-only | — | — | — | — | ||
| Open source / MIT | — | — | — |
What designlang is not
- It is not a design-to-code generator. It extracts the system, not the components as JSX.
- It is not a hosted cloud service. The free website extractor is rate-limited; production use should run the CLI or MCP server locally.
- It is not a Figma plugin. designlang reads the rendered DOM, not the Figma file — the output is what your users actually see, not what a designer intended.
CLI
Zero install via npx. Node ≥ 20.
1 $ npx designlang <url> 2 $ npx designlang <url> --platforms all 3 $ npx designlang <url> --emit-agent-rules 4 $ npx designlang <url> --cookie-file ./cookies.txt 5 $ npx designlang <url> --insecure 6 $ npx designlang <url> --user-agent "custom-ua" 7 $ npx designlang <url> --tokens-legacy
MCP server
claude_desktop_config.json / ~/.cursor/mcp.json
{
"mcpServers": {
"designlang": {
"command": "npx",
"args": [
"designlang",
"mcp",
"--output-dir",
"./design-extract-output"
]
}
}
}Once connected, every MCP-aware agent can query your last extraction.
Agent rules
One flag emits ready-to-commit rules for every popular agent.
$ npx designlang <url> --emit-agent-rules
- .cursor/rules/designlang.mdc
- .claude/skills/designlang/SKILL.md
- CLAUDE.md.fragment
- agents.md
Chrome extension
One click from any tab. Opens this page with the URL prefilled.
- clone the repo
- open
chrome://extensions - toggle developer mode
- load unpacked →
chrome-extension/
Manifest v3. Only permission: activeTab.