lint vs Make Real Tldraw
Side-by-side comparison of features, pricing, and ratings
lint or Make Real Tldraw: which should you choose?
| Dimension | lint | Make Real Tldraw |
|---|---|---|
| Pricing | Free (open-source) | Free (bring your own model API key) |
| What it is | @shadcn/lint — an ESLint/Oxlint plugin for Tailwind design-system rules | A Tldraw canvas app that turns sketches into clickable HTML/CSS/JS |
| Core mechanism | Contract-based lint rules (pattern/allow/deny) producing agent-readable fix messages | Select canvas shapes → Make Real → model generates a prototype |
| Input | Tailwind v4 + shadcn/ui codebases | Hand-drawn shapes, text and arrows on a canvas |
| Output | Lint errors with suggested fixes drawn from your components, variants and theme | Rendered clickable prototype plus copyable HTML/CSS/JS |
| Model / integrations | ESLint, Oxlint, Tailwind CSS v4, shadcn/ui | OpenAI, Anthropic, Google via your own API key |

Agent-first Tailwind linter that turns shadcn/ui design-system violations into fixes coding agents can act on.
Visit WebsiteSketch a UI on the Tldraw canvas, select the shapes, click Make Real, and get clickable HTML/CSS/JS.
Visit WebsiteWho should pick lint, and who should pick Make Real Tldraw?
- Frontend team running coding agents on Tailwind v4Pick: lint
Contract rules plus agent-readable fix messages mean agent-written UI stays on your components, variants and theme scale instead of drifting into arbitrary values.
- Design system maintainerPick: lint
Per-component contracts with pattern, allow and deny lists turn prose guidelines into enforceable rules — and it works whether or not you use shadcn/ui.
- UI/UX designer sketching a layout ideaPick: Make Real Tldraw
Draw shapes, text and arrows on the Tldraw canvas, select them, click Make Real and get a clickable prototype you can show immediately.
- Product manager visualizing a concept in a meetingPick: Make Real Tldraw
The canvas-to-prototype loop is fast enough to run live, and the editable system prompt lets you steer the output's style mid-session.
- Team on Tailwind v3 or with no design system definedPick: Make Real Tldraw
lint explicitly targets Tailwind v4 and assumes rules exist to encode — until both are true, the sketch-to-code tool is the one that does something for you today.
Frequently Asked Questions
Can I use both together?
Yes, and they don't overlap. Sketch a layout in Make Real Tldraw to get HTML/CSS/JS, paste it into your Tailwind v4 repo, then let @shadcn/lint flag the classes that violate your component contracts and theme spacing scale. One drafts, the other disciplines.
Does Make Real Tldraw need my own API key?
Yes. The settings panel covers OpenAI, Anthropic and Google, and generation runs on your account, with a model picker and an editable system prompt you can reset. Without provider API access, the tool has nothing to generate with.
Is @shadcn/lint only for shadcn/ui users?
No. shadcn/ui is not required to adopt the linter, and the contract model is yours to define — but it does require Tailwind v4 and a design system with rules worth encoding.
Do either of these need a hosted account?
No. lint is a repo-level integration for ESLint and Oxlint with no dashboard or CI product, and Make Real runs in the browser against your own provider key. Neither has a seat-based plan to manage.
Can Make Real Tldraw build a production app?
It is positioned as an experiment, and its output is a single clickable prototype with copyable code — not multi-page or data-driven interfaces, and with no shared design file, versioning or review workflow. Treat it as a starting sketch, not a release.
How does setup differ?
lint ships an agent-oriented setup prompt that reads SETUP.md and installs @shadcn/lint into your project. Make Real requires no install at all — you open it and pick a provider key and model.
What else are lint and Make Real Tldraw compared with?
Where can you read more about lint and Make Real Tldraw?
Browse these categories
One email a week — new tools, honest comparisons, no spam.
Analysis generated by our model pipeline from live data: