LOCAL-ONLY: This tool runs locally with Playwright. It is not designed for serverless/cloud deployment.
Extract complete design systems from any website. Get colors, typography, spacing, components, and more in seconds.
- Color Extraction: Complete color palette with confidence scoring, semantic colors, and CSS variables
- Typography Analysis: Font families, sizes, weights, line heights, and font sources (Google Fonts, Adobe Fonts)
- Spacing Scale: Common spacing values with grid type detection (4px, 8px)
- Border Radius: All unique border radius values with usage context
- Box Shadows: Shadow patterns with usage counts
- Component Styles: Buttons, inputs, and links with state variations
- Framework Detection: Tailwind CSS, Bootstrap, Material UI, Chakra UI, Ant Design, and more
- Export Options: JSON, CSS Variables, or Tailwind config
- Frontend: SvelteKit 2.x with TypeScript
- Styling: Bootstrap 5 + Custom CSS
- Extraction: Playwright with stealth mode (based on dembrandt)
- Node.js 18+
- npm
cd designextract
# Install dependencies (Playwright browsers install automatically)
npm install
# Start development server
npm run devThen open http://localhost:5173 and enter any URL to extract its design system.
# Type check
npm run check
# Build for production
npm run build
# Preview production build
npm run previewdesignextract/
βββ src/
β βββ routes/
β β βββ +page.svelte # Main UI
β β βββ api/
β β βββ extract/
β β βββ +server.ts # Extraction API
β βββ lib/ # Shared utilities
β βββ app.html # HTML template
β βββ app.d.ts # TypeScript declarations
βββ static/
β βββ assets/
β βββ bootstrap/ # Bootstrap CSS/JS
β βββ css/
β βββ styles.css # Custom styles
βββ package.json
βββ svelte.config.js
βββ tsconfig.json
βββ vite.config.ts
Extracts design tokens from a URL.
Request:
{
"url": "https://example.com",
"options": {
"darkMode": false,
"mobile": false,
"slow": false
}
}Response:
{
"url": "https://example.com",
"extractedAt": "2024-01-01T00:00:00.000Z",
"colors": {
"semantic": { "primary": "rgb(99, 102, 241)" },
"palette": [...],
"cssVariables": {...}
},
"typography": {
"styles": [...],
"sources": { "googleFonts": [...] }
},
"spacing": {
"scaleType": "8px",
"commonValues": [...]
},
"borderRadius": { "values": [...] },
"shadows": [...],
"components": {
"buttons": [...],
"inputs": {...},
"links": [...]
},
"breakpoints": [...],
"frameworks": [...],
"iconSystem": [...]
}Complete extraction data in JSON format.
:root {
/* Colors */
--color-1: #6366f1;
--color-2: #8b5cf6;
/* Typography */
--font-family-1: "Inter";
/* Spacing */
--spacing-1: 4px;
--spacing-2: 8px;
/* Border Radius */
--radius-1: 4px;
--radius-2: 8px;
}export default {
theme: {
extend: {
colors: {
'brand-1': '#6366f1',
'brand-2': '#8b5cf6'
},
fontFamily: {
sans: ['Inter']
},
spacing: {
'4': '4px',
'8': '8px'
},
borderRadius: {
'custom-1': '4px'
}
}
}
}MIT