# Design report: www.python.org

- Score: 70.6 / 100, grade C
- Scanned: 2026-10-24T04:55:05.908Z
- Pages: https://www.python.org/, https://www.python.org/psf/, https://www.python.org/jobs/ (not scanned: time limit)
- Checks: 4 failed, 2 warnings, 11 passed, 10 excluded
- Report: https://is-aesthetic.com/r/www.python.org

## Tiers

- Essential: 70.6 of 100 points (17 evaluated, 429 excluded)
- Recommended: 0 of 0 points (0 evaluated, 73 excluded)
- Bonus: 0 of 5 points (0 evaluated, 14 excluded)

## Domains

- Visual communication: 33
- Information and findability: 63
- Functional and interaction support: 50
- Inclusion and adaptation: 89
- Visual expression: not measured
- Transparency and agency: not measured

## What to fix

### Essential

#### Fail: Repeated parts look the same (C014.1)

- Domain: Visual communication
- Checks: Cards, buttons and list rows of one kind should share padding, radius, borders, shadow and type.
- Measured on /: 105 px largest difference
- Passes at: Matching component variants differ by at most 1 px
- Warning at: A measured spacing or size difference is between 2 and 4 px
- Fails at: A difference exceeds 4 px, or a compared style attribute differs
- Fix: Build each repeated element from one component or class and remove one-off overrides, so padding, radius, border, shadow and type match within 1 px.
- Elements:
  - 1440 px · `html > body > div > div:nth-of-type(3) > div > section > div:nth-of-type(3) > div:nth-of-type(1) > div > ul > li:nth-of-type(1)`
  - 1440 px · `html > body > div > div:nth-of-type(3) > div > section > div:nth-of-type(3) > div:nth-of-type(1) > div > ul > li:nth-of-type(2)`
  - 1440 px · `html > body > div > div:nth-of-type(3) > div > section > div:nth-of-type(3) > div:nth-of-type(1) > div > ul > li:nth-of-type(3)`

#### Fail: Nothing overlaps (C019.1)

- Domain: Visual communication
- Checks: Text and controls must not cover each other at desktop or phone widths.
- Measured on /: 1 confirmed overlapping pair
- Measured on /psf-landing/: 2 confirmed overlapping pairs
- Passes at: No confirmed occlusion of painted text or a visible control
- Fails at: A painted box covers text or a control by at least 4 px on both axes and 10% of the smaller painted box
- Fix: Find what covers what at the width shown, then give the layout room: let text wrap, drop fixed heights and negative margins, or stack the items below a breakpoint.
- Elements:
  - 320 px · `html > body > div > div:nth-of-type(3) > div > section > div:nth-of-type(4) > div:nth-of-type(1) > div > div > table > tbody > tr > td > p > a`
  - 390 px · `html > body > div > div:nth-of-type(3) > div > section > div:nth-of-type(4) > div:nth-of-type(1) > div > div > table > tbody > tr > td > p > a`
  - 320 px · `html > body > div > div:nth-of-type(3) > div > section > div:nth-of-type(2) > div > div:nth-of-type(2) > div:nth-of-type(2) > div > p > a:nth-of-type(2)`
  - 320 px · `html > body > div > div:nth-of-type(3) > div > section > div:nth-of-type(2) > div > div:nth-of-type(2) > div:nth-of-type(2) > div > p > a:nth-of-type(2)`
  - 390 px · `html > body > div > div:nth-of-type(3) > div > section > div:nth-of-type(2) > div > div:nth-of-type(2) > div:nth-of-type(2) > div > p > a:nth-of-type(3)`

#### Fail: 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 /psf-landing/: 4 link texts with two destinations
- 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 > div:nth-of-type(2) > nav > ul > li:nth-of-type(3) > a` · [crop](https://is-aesthetic.com/api/v1/evidence?path=reports%2F322e25a6-cf98-4f69-a4c0-0baf939badea%2Fpage-1%2Fcrop-1440-1.webp)
  - 1440 px · `html > body > div > header > div > div:nth-of-type(2) > a` · [crop](https://is-aesthetic.com/api/v1/evidence?path=reports%2F322e25a6-cf98-4f69-a4c0-0baf939badea%2Fpage-1%2Fcrop-1440-1005.webp)
  - 1440 px · `html > body > div > header > div > nav > ul > li:nth-of-type(1) > a` · [crop](https://is-aesthetic.com/api/v1/evidence?path=reports%2F322e25a6-cf98-4f69-a4c0-0baf939badea%2Fpage-1%2Fcrop-1440-1006.webp)
  - 1440 px · `html > body > div > div:nth-of-type(2) > nav > ul > li:nth-of-type(3) > a` · [crop](https://is-aesthetic.com/api/v1/evidence?path=reports%2F322e25a6-cf98-4f69-a4c0-0baf939badea%2Fpage-0%2Fcrop-1440-1.webp)
  - 1440 px · `html > body > div > div:nth-of-type(3) > div > section > div:nth-of-type(5) > h2 > a`

#### 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 /: 61 reordered blocks
- Measured on /psf-landing/: 61 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 > footer > div:nth-of-type(1) > div > ul > li:nth-of-type(2) > a`
  - 1440 px · `html > body > div > footer > div:nth-of-type(1) > div > ul > li:nth-of-type(3) > a`
  - 1440 px · `html > body > div > footer > div:nth-of-type(1) > div > ul > li:nth-of-type(4) > a`
  - 1440 px · `html > body > div > footer > div:nth-of-type(1) > div > ul > li:nth-of-type(2) > a`
  - 1440 px · `html > body > div > footer > div:nth-of-type(1) > div > ul > li:nth-of-type(3) > a`
  - 1440 px · `html > body > div > footer > div:nth-of-type(1) > div > ul > li:nth-of-type(4) > a`

#### Warning: Current page is marked (C077.1)

- Domain: Information and findability
- Checks: The nav item for the page you're on should carry aria-current, once per navigation group.
- Measured on /: 2 navigation groups without a current marker
- Measured on /psf-landing/: 2 navigation groups without a current marker
- Passes at: Each relevant navigation group identifies one current item
- Warning at: No current marker, but a distinct current item is visible
- Fails at: A relevant group has conflicting current markers or no identifiable current item
- Fix: Add aria-current="page" to the link for the current page, exactly once in each nav, and style that state so it is visible too.
- Elements:
  - 1440 px · `html > body > div > div:nth-of-type(2) > nav` · [crop](https://is-aesthetic.com/api/v1/evidence?path=reports%2F322e25a6-cf98-4f69-a4c0-0baf939badea%2Fpage-0%2Fcrop-1440-1000.webp)
  - 390 px · `html > body > div > div:nth-of-type(2) > nav` · [crop](https://is-aesthetic.com/api/v1/evidence?path=reports%2F322e25a6-cf98-4f69-a4c0-0baf939badea%2Fpage-0%2Fcrop-390-1001.webp)
  - 1440 px · `html > body > div > div:nth-of-type(2) > nav` · [crop](https://is-aesthetic.com/api/v1/evidence?path=reports%2F322e25a6-cf98-4f69-a4c0-0baf939badea%2Fpage-1%2Fcrop-1440-1003.webp)
  - 390 px · `html > body > div > div:nth-of-type(2) > nav` · [crop](https://is-aesthetic.com/api/v1/evidence?path=reports%2F322e25a6-cf98-4f69-a4c0-0baf939badea%2Fpage-1%2Fcrop-390-1004.webp)

#### 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 /: 1 control without a visible label
- Measured on /psf-landing/: 1 control 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 · `html > body > div > header > div > div:nth-of-type(1) > a` · [crop](https://is-aesthetic.com/api/v1/evidence?path=reports%2F322e25a6-cf98-4f69-a4c0-0baf939badea%2Fpage-0%2Fcrop-1440-1002.webp)
  - 1440 px · `html > body > div > header > div > div:nth-of-type(1) > a` · [crop](https://is-aesthetic.com/api/v1/evidence?path=reports%2F322e25a6-cf98-4f69-a4c0-0baf939badea%2Fpage-1%2Fcrop-1440-1007.webp)

## Passed

- Supporting text steps back (C006.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)
- Every control has a name (C160.1)
- Names include the visible label (C160.2)
- Headings use heading tags (C167.1)
- Heading levels are in order (C167.2)
- Data tables use table tags (C167.5)

## Excluded

- Links don't rely on colour (C031.1): Required inputs unavailable: states
- Paragraphs stay short (C074.1): Unresolved inputs or thresholds: 1
- 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
