Brilliant vs Paper
Paper made a bold bet. If the output of design is HTML and CSS, why not skip the translation entirely and design in the medium itself? Real flexbox, real CSS, real React components dropped onto a canvas, an MCP server that reads JSX out and writes HTML back in. A design tool where the file IS the frontend. It's a clean idea and it ships.
Brilliant takes the opposite bet. Models got good. Extremely good. So good that the act of compiling a design into production code, the thing Paper folds into the canvas itself, is something agents now deliver reliably. Not just to HTML and React. To any language, any framework, shaped to your specific constraints and your current codebase. And not everyone is building a website to begin with.
Once that's true, "we're HTML and CSS under the hood" stops being a feature and starts being a constraint. The data model is HTML, and that's the product, not an implementation detail. Your design is bounded by what HTML can represent. HTML wasn't built for design-tool scale: tens of thousands of nodes, spatial indexing, hit-testing, 60fps bulk transforms. You can build any feature on top of HTML. You can't build out of HTML.
Models made "design equals code" obsolete
Paper's central pitch is no handoff. You design in CSS, the design IS the code, your developer just opens the file. That argument was strong three years ago. It is much weaker now. An agent in Claude Code or Cursor can take a high-quality vector design and produce production React, Tailwind, SwiftUI, Jetpack Compose, or whatever your stack actually is, in seconds. The handoff didn't disappear, it got automated.
Once codegen is a solved problem at the AI layer above your design tool, the case for fusing design and code at the canvas level weakens.
Agents inside the canvas
Paper's agent story runs from outside the canvas. You set up the MCP in Claude Code or Cursor and drive Paper from there.
Brilliant ships an integrated AI chat in the canvas itself. Copy-paste any element into the prompt as a reference chip. @mention layers by name. Eyedropper a color from anywhere on screen. Drop a position pin to point at a spot. The orchestrator drops old images and collapses aged tool results automatically, so a long conversation costs a fraction of what an external agent burns through. A streaming composition linter catches mistakes mid-generation, before they hit the canvas: auto layout overflow, wrong sizing modes, invisible text.
External MCP still works on every tier, with no rate limit. The chat is the optional layer that makes designing with an agent inside Brilliant cost less in tokens and time than driving the canvas from outside.
Free, all of it
What Paper charges $20 a month for, Brilliant gives away. Not a stripped-down version. Not a trial. The whole tool.
Every feature in Brilliant is unlimited on Free. Auto layout, components, vector editing, effects, design systems, tokens, GPU shaders, all ten export formats (PNG, JPEG, WebP, SVG, PDF, HTML, React, MP4, MOV, Replay), Figma import, unlimited MCP usage. No weekly cap on calls. No paywall on video export. No throttle on file count. The design tool itself, end to end, is free forever.
Brilliant monetizes one thing: the optional integrated AI chat. We've built an in-house, tailored agentic loop optimized to give you the best possible design results, and we're so confident in it that we don't monetize anything else in the app. Free includes Brilliant AI every month plus 10 built-in chat messages a day on your own AI; bring your own AI on every tier with no markup. Here's why you should pay for the integrated chat.
Your designs, your disk, your git
Paper hosts your files in its cloud. Version history lives where Paper keeps it.
Brilliant files are plain-text Blueprint on your local disk. They end in .bl and they diff cleanly in git. Branch a canvas to try a direction. Commit the experiment. Revert it if it doesn't work out. Run git blame to find the commit where the hero color drifted off-brand. Every primitive your codebase already uses is now available for your designs:
c16fc75741feed85 fr p(80,80) s(480,320) rd(16) "Hero"
- 88625e475868c087 r p(24,24) s(160,100) f[(r1,#F8F8F8)] rd(8) "Panel"
+ 88625e475868c087 r p(24,24) s(160,100) f[(r1,#0080FF)] rd(8) "Panel""GitHub for design", visual design-file diffs, branching, pull-request review, publishable component libraries, is the next chapter of Brilliant. The primitives (plain-text files, git compatibility) are here today.
What Brilliant has that Paper doesn't
A general-purpose vector canvas. Design websites, mobile UI, illustrations, posters, brand marks, dashboards, video frames. Paper is shaped like a webpage because it IS a webpage.
Mature design primitives. Pen tool, boolean operations, skew, flip, design tokens, components with overrides. Paper has auto layout and rotation.
Plain-text, git-friendly files. Blueprint on disk, clean diffs, blameable history.
Ten export formats including code and video, on Free. PNG, JPEG, WebP, SVG, PDF, HTML, React, MP4, MOV, Replay. Paper exports React, Tailwind, HTML/CSS, WebP, AVIF, with MP4 gated behind Pro.
Unlimited MCP usage on Free. Drive Brilliant from Claude Code, Cursor, or any MCP client without a weekly cap.
Built-in AI chat: Brilliant AI or your own AI. Brilliant AI is the default with nothing to set up, or use your own Anthropic, OpenAI, Google, OpenRouter, or Claude Code subscription. No separate plan to unlock the agent layer.
The honest gaps
Two things follow from Paper's core bet that the design IS the code. Paper imports your own production React components and drops them onto the canvas as live primitives; Brilliant's components are design components, editable by hand and by agents, and it generates React and HTML from them rather than running your app code. And in Paper the native format is web elements, so it exports as the exact same HTML and CSS with no translation step, where Brilliant produces code from vector shapes on demand, in three HTML flavors plus React JSX, shaped to whatever stack your agent targets. Both are coherent bets; the difference is whether the file is bounded by what HTML can represent or is a general vector canvas that emits code.
At a glance
| Brilliant | Paper | |
|---|---|---|
| Elements are | Vectors | HTML |
| Pricing | Free forever | Free w/ 100 MCP/wk cap; Pro $20/mo for 1M/wk + video export |
| File format | Plain-text Blueprint on local disk | Cloud-hosted |
| Version control | Native git (branch, diff, rollback, blame) | Paper's hosted history |
| AI agents | Built-in chat (Brilliant AI or your own AI) + MCP; agents output vector primitives | MCP-only; agents output HTML and CSS |
| MCP usage | Unlimited, free | 100/wk free, 1M/wk on Pro |
| Export formats | PNG, JPEG, WebP, SVG, PDF, HTML, React, MP4, MOV, Replay (all on Free) | React, Tailwind, HTML/CSS, WebP, AVIF; MP4 on Pro |
| Vector tools | Pen, boolean ops, skew, flip | Rotation only |
| Design system | Tokens, components with overrides | No |
A new dance
Paper bet that AI would make design and code one thing. Brilliant bet that AI would make design and code so easy to convert between that you don't need them fused. Both are coherent positions. The difference is what you give up to take them.
Read the full manifesto to see the rest of the argument, or install Brilliant and try it for yourself.