# Design report: vercel.com

- Score: 73.3 / 100, grade C
- Scanned: 2026-10-24T05:03:40.201Z
- Pages: https://vercel.com/, https://vercel.com/home (not scanned: time limit), https://vercel.com/ai-sdk (not scanned: time limit)
- Checks: 3 failed, 2 warnings, 10 passed, 12 excluded
- Report: https://is-aesthetic.com/r/vercel.com

## Tiers

- Essential: 73.3 of 100 points (15 evaluated, 431 excluded)
- Recommended: 0 of 0 points (0 evaluated, 73 excluded)
- Bonus: 0 of 5 points (0 evaluated, 14 excluded)

## Domains

- Visual communication: 100
- Information and findability: 83
- Functional and interaction support: 50
- Inclusion and adaptation: 67
- Visual expression: not measured
- Transparency and agency: not measured

## What to fix

### Essential

#### Fail: Every control has a name (C160.1)

- Domain: Inclusion and adaptation
- Checks: Buttons, links and fields need a name that a screen reader can announce.
- Measured on /: 1 control without a name
- Passes at: Every tested control has a nonempty accessible name
- Fails at: A tested control has an empty accessible name
- Fix: Give the control visible text, or an aria-label if it is icon-only. For a linked image, put the alt text on the image.
- Elements:
  - 390 px · `html > body > div:nth-of-type(2) > div > main > div:nth-of-type(3) > div:nth-of-type(1) > section > div > section > a:nth-of-type(1)` · [crop](https://is-aesthetic.com/api/v1/evidence?path=reports%2F82939866-52cd-454c-a07d-2b2c6d1a2269%2Fpage-0%2Fcrop-390-3.webp)
  - 1440 px · `html > body > div:nth-of-type(2) > div > main > div:nth-of-type(3) > div:nth-of-type(1) > section > div > section > a:nth-of-type(1)` · [crop](https://is-aesthetic.com/api/v1/evidence?path=reports%2F82939866-52cd-454c-a07d-2b2c6d1a2269%2Fpage-0%2Fcrop-1440-0.webp)

#### Fail: Names include the visible label (C160.2)

- Domain: Inclusion and adaptation
- Checks: A control's accessible name should contain the words people see on it.
- Measured on /: 1 name missing its visible label
- Passes at: A control’s accessible name contains its visible label
- Fails at: A control’s accessible name omits its visible label
- Fix: Start the aria-label with the visible text, or remove the aria-label so the visible text becomes the name. Voice-control users say what they see.
- Elements:
  - 1440 px · `html > body > div:nth-of-type(2) > div > main > div:nth-of-type(3) > div:nth-of-type(1) > section > div > section > a:nth-of-type(1)` · [crop](https://is-aesthetic.com/api/v1/evidence?path=reports%2F82939866-52cd-454c-a07d-2b2c6d1a2269%2Fpage-0%2Fcrop-1440-0.webp)

#### Fail: Code order matches the screen (C168.1)

- Domain: Inclusion and adaptation
- Checks: Blocks should come in the same order in the markup as they appear on screen.
- Measured on /: 12 reordered blocks
- Passes at: Visual and DOM reading order agree within content regions
- Warning at: One or two reordered blocks outside sequential content
- Fails at: Order differs within instructions, or at least three blocks are reordered in one region
- Fix: Reorder the markup to match the layout instead of moving blocks with order, row-reverse or grid placement. This matters most in steps and instructions.
- Elements:
  - 1440 px · `html > body > div:nth-of-type(2) > div > main > div:nth-of-type(3) > div:nth-of-type(1) > section > div > section > a:nth-of-type(1) > div > div:nth-of-type(1) > div:nth-of-type(1) > div > div > div:nth-of-type(3) > span`
  - 1440 px · `html > body > div:nth-of-type(2) > div > main > div:nth-of-type(3) > div:nth-of-type(1) > section > div > section > a:nth-of-type(1) > div > div:nth-of-type(1) > div:nth-of-type(2) > div:nth-of-type(1) > header > p:nth-of-type(1)`
  - 1440 px · `html > body > div:nth-of-type(2) > div > main > div:nth-of-type(3) > div:nth-of-type(1) > section > div > section > a:nth-of-type(1) > div > div:nth-of-type(1) > div:nth-of-type(1) > div > div > div:nth-of-type(1) > span`

#### Warning: Same link text, same place (C078.3)

- Domain: Information and findability
- Checks: Links with the same text should lead to the same address.
- Measured on /: 2 link texts with two destinations
- Passes at: No identical link label points to conflicting destinations
- Warning at: One or two conflicting link-label groups
- Fails at: At least three conflicting link-label groups
- Fix: Give links to different places different words ("Team pricing", "Enterprise pricing"), or point links that share their text at one destination.
- Elements:
  - 1440 px · `html > body > div:nth-of-type(2) > div > main > div:nth-of-type(3) > section:nth-of-type(1) > div:nth-of-type(1) > div > header > div > a:nth-of-type(1)` · [crop](https://is-aesthetic.com/api/v1/evidence?path=reports%2F82939866-52cd-454c-a07d-2b2c6d1a2269%2Fpage-0%2Fcrop-1440-1.webp)
  - 1440 px · `html > body > div:nth-of-type(2) > div > div:nth-of-type(3) > footer > nav > div > div:nth-of-type(1) > ul > li:nth-of-type(7) > a`

#### Warning: Controls are labelled on screen (C108.1)

- Domain: Functional and interaction support
- Checks: Fields need visible labels, and icon-only buttons should be few and use familiar icons.
- Measured on /: 3 controls without a visible label
- Passes at: Fields are visibly identified and standalone icon controls are clear
- Warning at: A nonstandard standalone icon control needs a label
- Fails at: A field has no visible label after the documented search-field exceptions
- Fix: Give every field a visible label, since placeholders vanish while typing. Add text to icon-only buttons, or keep them to familiar icons (search, close, menu) with an accessible name and a tooltip.
- Elements:
  - 1440 px · `#marketing-header-logo` · [crop](https://is-aesthetic.com/api/v1/evidence?path=reports%2F82939866-52cd-454c-a07d-2b2c6d1a2269%2Fpage-0%2Fcrop-1440-1000.webp)
  - 1440 px · `html > body > div:nth-of-type(2) > div > div:nth-of-type(3) > footer > div > div > span > button`
  - 1440 px · `html > body > div:nth-of-type(2) > div > main > div:nth-of-type(3) > div:nth-of-type(1) > section > div > section > a:nth-of-type(1)` · [crop](https://is-aesthetic.com/api/v1/evidence?path=reports%2F82939866-52cd-454c-a07d-2b2c6d1a2269%2Fpage-0%2Fcrop-1440-0.webp)

## Passed

- Repeated parts look the same (C014.1)
- Nothing overlaps (C019.1)
- Dates aren't stale (C060.1)
- Headings are distinct (C073.2)
- Images have alt text (C139.1)
- Hidden things stay hidden (C141.2)
- Targets are big enough (C158)
- Headings use heading tags (C167.1)
- Heading levels are in order (C167.2)
- Data tables use table tags (C167.5)

## Excluded

- Supporting text steps back (C006.1): No captions, hints or footnotes on this page.
- Links don't rely on colour (C031.1): Required inputs unavailable: states
- Paragraphs stay short (C074.1): Unresolved inputs or thresholds: 1
- Current page is marked (C077.1): Measurement unavailable: 'NoneType' object has no attribute 'startswith'
- C123.2 (C123.2): Required inputs unavailable: form-submit, owned or design-bench page
- Tab order follows the page (C154.2): Required inputs unavailable: keyboard
- Live regions are scoped (C170.2): No live regions on this page.
- Works at 320 px wide (C173): Required inputs unavailable: interaction
- Crops keep the subject (C194.1): No cropped images with a named subject.
- Notices can be dismissed (CAR-14.1): No informational banners or toasts on this page.
- Required fields are marked (C112.1): No required fields on this page.
- Format rules are shown (C112.2): No fields with format rules on this page.

## What this doesn't cover

- Aesthetic judgment, brand intent and designer calibration
- Text contrast is not measured yet (the vetted contrast rules are not implemented in this pin)
- Briefs, specifications, logins and declared design systems
- Form submissions, transactions and activated task flows
- Closed shadow roots, cross-origin frame contents and other themes
- Rules without a vetted implementation or required measurement
- Pages or assets refused by robots.txt or the scan limits

Methodology: https://is-aesthetic.com/methodology
