designlang vs dembrandt vs extract-design-system: Which Design Extractor Should You Use?

4 minute readManav Arya Singh

An honest comparison of three open source tools that pull a design system out of a live website, written by the person who built one of them. What each one outputs, how they extract, where they fall short, and when the other two are the better pick.

The designlang, dembrandt and extract-design-system homepages side by side

I built one of these tools. designlang is mine, so read this with that in mind. I've tried to be fair: every fact below comes from each project's own README, package.json and npm listing as of 15 September 2026, and where another tool is the better choice I say so.

All three do the same basic job. You give them a URL, they open it in a headless browser, read the computed styles off the live page, and hand you design tokens. The differences are in what comes out the other end, how much of a site they can reach, and how big a tool you're signing up for.

The short version

  • Pick dembrandt if you want the most widely used option with a tight feature set. It had about 6.6 times designlang's npm downloads last month and ships releases often.
  • Pick designlang if you need outputs the others don't document: a shadcn/ui theme, a Figma variables file, typed React component stubs, or iOS, Android and Flutter tokens.
  • Pick extract-design-system if you just want starter tokens.json and tokens.css written into your project by an AI agent, with a check before it touches your code.

What each one outputs

designlangdembrandtextract-design-system
W3C DTCG tokensYes, by defaultYes, --dtcgW3C compatible tokens.json
CSS variablesYesYes, via Tailwind v4 @themeYes, tokens.css
Tailwind configYesYes, Tailwind v4No
shadcn/ui themeYesNot documentedNo
Figma variablesYes, JSON file plus a Figma pluginNo dedicated file, DTCG works with Tokens StudioNot documented
DESIGN.md or MarkdownYesYes, --design-mdNo
Brand guideHTML, Markdown and JSONPDF, --brand-guideNo
ScreenshotsComponents and full pageViewport, --screenshotNo
React stubsTyped .tsx stubsNoNo
iOS, Android, FlutterYes, --platformsNoNo

How much of a site they can read

designlangdembrandtextract-design-system
Multiple pagesYes, --depthYes, --crawl, --sitemapNo, single page
Pages behind a loginYes, cookies and headersYes, cookies and headersNo, public sites only
Responsive captureFour viewports, --responsiveReads breakpoints, --mobile viewport--mobile only
EnginePlaywright, computed stylesPlaywright, computed stylesCalls the dembrandt CLI

That last row surprised me. extract-design-system runs dembrandt under the hood, so its extraction quality is dembrandt's. What it adds is normalization, an audit command that checks your own code against the tokens, a skill and an MCP server.

AI agent and CI support

All three ship an MCP server, so Claude Code, Cursor and other MCP clients can call them directly.

  • designlang has the most integrations: a Claude Code plugin and skill, a VS Code extension, Raycast, a Chrome extension and a Figma plugin. It also has drift, lint and visual-diff commands plus a GitHub Action for catching token drift in CI.
  • dembrandt has an MCP server with job-based tools that can crawl several pages in one call, a separate skills repo, and a GitHub Action with --compare for drift checks.
  • extract-design-system is skill-first, installed with npx skills add, and its audit --fail can gate a CI run.

The numbers

designlangdembrandtextract-design-system
GitHub stars4,0993,472218
npm downloads, last month2,18414,4121,112
Latest npm release12.21.0, 14 June 20260.33.0, 13 September 20260.1.11, 5 May 2026
LicenceMITMITMIT

Stars and downloads tell different stories here. designlang has the most stars, but dembrandt is what far more people actually install every month.

Where each one falls short

designlang does a lot, and that's its weakness too. The command list is long and changes fast. At the time of writing, the npm release is behind the GitHub repo, so a few newer commands described in the README aren't in npx designlang yet. If you depend on it, pin a version.

dembrandt documents its own limits clearly. It doesn't auto-detect dark mode, reads hover and focus states from CSS rather than by interacting, can't read canvas or WebGL, and can miss content on heavy JavaScript sites that hydrate late.

extract-design-system is deliberately small. It reads one public page and produces starter tokens, not a full system. Dynamic or protected sites may come back incomplete.

Which one I'd use

If I were starting a new project and wanted tokens for Tailwind with drift checks in CI, dembrandt is a solid, well-maintained choice.

If I needed a shadcn theme, Figma variables or native mobile tokens from the same site in one pass, that's the gap designlang was built for.

If I wanted an AI agent to drop starter tokens into an existing codebase and then keep my components honest against them, extract-design-system's audit flow is the neatest fit.

Numbers and features change quickly in this space, so check each repo before you commit to one.

Common questions

What is the best tool to extract a design system from a website?
It depends on what you need out the other end. dembrandt is the most widely used and has a focused feature set with CI drift checks and a PDF brand guide. designlang has the widest range of outputs, including a shadcn theme, Figma variables, typed React stubs and native platform tokens. extract-design-system is the smallest and writes starter tokens straight into your project.
Is extract-design-system built on dembrandt?
Yes. It lists dembrandt as a dependency and calls the dembrandt CLI to do the extraction, then adds normalization, an audit command, a skill workflow and an MCP server on top.
Can these tools extract a design system from a page behind a login?
designlang and dembrandt both accept cookies and headers, so they can read authenticated pages. extract-design-system is documented as public websites only.
Do any of them need an API key?
Not for basic extraction. designlang only needs a key for its optional LLM classification flag, and dembrandt only for cloud sync.