Skip to content
Benchmark

We scored uiscanner against the accessibility tree and a token dumper.

Three Stripe pages, one rubric, ground truth read straight from the live DOM. The full table is below, misses included.

uiscanner
70%
oss-tokens
26%
playwright-a11y
0%

design-system fidelity across 3 Stripe pages, verified 2026-06-30

What each one reads

All three read the same rendered page. The difference is whether they read the computed CSS, a frequency dump of it, or the accessibility tree.

uiscanner70%

Renders the page, reads the real computed CSS off the live DOM, classifies each value's role, and adds a vision pass for composition.

oss-tokens26%

A css-stats / Project Wallace class frequency dump: every value on the page, with no roles, no structure, no build brief.

Blind spot: Values without meaning. It can tell you #635bff is on the page, not that it is the button.

playwright-a11y0%

The accessibility tree: the structure Playwright, agent browsers, and most 'read the page' flows are actually built on.

Blind spot: Blind to the entire design system, and it hands back the page's exact copy: the bytes you must not reproduce.

Scored on 9 things:Primary CTAAccent roleHero layoutDecorative artSerif roleExact valuesNo copy leakBuild briefImage prompt

Ground truth was read straight from the live DOM (a color picker on the real buttons), never seeded from uiscanner's own output.

Every page, every dimension

The accessibility tree scores zero on design on all three, and it is the layer most “read the page” tools are built on.

stripe.com/pricing

the blurple is the button, one gradient band, no serif
lanePrimCTAAccentRoleHeroDecorSerifExactNoCopyBriefgenPromptscore
uiscanneryesyesyesyesyesyesyesyes89%
oss-tokensyesyes22%
playwright-a11y0%

stripe.com (home)

offset hero, a partner-logo strip that is not decorative art
lanePrimCTAAccentRoleHeroDecorSerifExactNoCopyBriefgenPromptscore
uiscanneryesyesyesyesyesyes67%
oss-tokensyesyesyes33%
playwright-a11y0%

stripe.com/payments

a real split hero with a live checkout demo on the right
lanePrimCTAAccentRoleHeroDecorSerifExactNoCopyBriefgenPromptscore
uiscanneryesyesyesyesyes56%
oss-tokensyesyes22%
playwright-a11y0%

Image prompt scores 0 for every lane here: these Stripe pages are text-heavy, with no decorative art to recreate. It fires on image-rich pages like exa.ai's tiled hero, where only uiscanner returns one.

The same blue, two roles

On Stripe the bright blue is the button. On exa.ai the bright blue is a link and the button is black. A screenshot only sees the color, not which element uses it.

exa.ai
#1f40ed
brand hue
vs
#000000
primary button

the bright blue is a link; the button is black.

stripe.com
#635bff
brand hue
vs
#635bff
primary button

the bright blurple is the button.

What you only get from the real page

Exact, measured values

The real computed color, radius, and spacing off the live DOM. Not a color eyeballed from a screenshot, which is the residual error in every vision-only path.

It never leaks the copy

The accessibility tree hands back the page's exact words and table data: the bytes you must not reproduce. uiscanner describes the shapes and redacts the content.

A build brief, not a value list

A section-by-section prompt you paste into your agent, with roles attached (this blue is the link, the button is black), so it builds instead of guesses.

It understands the pictures

For decorative art it says what the image is and hands you a runnable prompt to make your own version, so you copy the look without copying anyone's assets. No token dumper or a11y tree can.

Where it still misses

The DOM-only pass gets things wrong too.

  • On the home and payments heroes, the DOM-only run misread the primary CTA (it picked a near-white fill on those two layouts) and the accent's role.

  • Root cause, now filed: the accent was chosen by raw saturation, so on gradient-heavy pages the swoosh outvoted the real button. The fix is to weight by placement (does it recur on buttons and links) instead of saturation.

  • The vision pass recovers both on those pages. The scores above are the DOM-only floor, before that recovery.

Scan your own site

uiscanneruiscanner

Paste any public URL and keep what makes it look good. You get the tokens, the structure, and a prompt you can build from.

Scan another site

Paste any public URL and get its tokens, structure, and a build-ready prompt.

© 2026 uiscanner. All rights reserved.