7 pages on an emulated iPhone 15 (390×844)· touch input, mobile user agent, device pixel density· target sizes and spacing, viewport and zoom, sticky panels· axe-core WCAG 2.0/2.1/2.2 A + AA, console and network· July 2026
Basic mobile hygiene is above average: zoom is available, there is no horizontal scroll, the console is clean. The headline conclusion about target sizes came from measurement, not counting: 319 controls are smaller than the mandatory 24 px minimum, yet exactly one of them violates the criterion — the layout spaces small targets far enough apart for the WCAG distance exception to apply almost everywhere. A mechanical report would have claimed 319 violations here. The real problem is not formal compliance but touch ergonomics: control sizes are designed for a cursor, not a finger — the primary call-to-action at 26 px, plan switchers 2 px apart and 14–17 px tool buttons all satisfy AA, but hitting them is a matter of luck. A separate layer is screen-reader accessibility: menu state attributes attached to an icon instead of the button, and three unnamed buttons.
M-1Hightouch ergonomics · conversion path
The primary call-to-action is below the platform norm on almost every page
The header call-to-action button (168×26 px) is present on 6 of the 7 checked pages. On one landing page there are seven CTA buttons of the same class, 26–35 px tall. The header of the home page also holds “Log in” (61×26) and “Sign up” (69×26) with a 6 px gap between them.
At 26–35 px of height, the mandatory AA minimum (24 px) is met, but the 44 px platform norm is missed by 9–18 px. Every one of these elements is on the product’s primary conversion path, and their generous width makes the vertical shortfall easy to overlook in a mockup.
We have no direct data on the conversion impact — that is a question for the owner’s analytics; what we record is an elevated risk of missed taps, not a measured effect.
Steps to reproduce
Open any of the 6 pages on a mobile device
Measure the height of the header call-to-action
26 px against the 44 px platform norm
Header controls at 26 px height, 6 px apart — AA passes, the platform norm does not.
Evidence: Target-size measurements from the device-emulation scan
M-2Higha11y · aria-allowed-attr, critical impact
State attributes placed on the icon instead of the button
aria-expanded, aria-haspopup and aria-controls are set on an svg element with no corresponding role — a decorative icon rather than the controlling button. 72 nodes on 6 of 7 pages, with the pricing page (47 nodes) and the changelog (21) affected most.
Consequence: the expanded/collapsed state and the connection to the dropdown are not communicated to assistive technology — a screen-reader user does not learn whether the menu opened after pressing.
M-3Mediuma11y · button-name, critical impact
Buttons without an accessible name
Three buttons on two pages — one on the home page, two on the AI features page — have neither text nor aria-label: icon only. A screen reader announces them as just “button”.
M-4Mediumtouch ergonomics
Densely packed controls
Adjacent control pairs with gaps under 8 px are spread across the key pages: an editor button pair on the home page sits 1 px apart, plan switchers on the pricing page are 2 px apart, mode and action switchers in the free tool 2–6 px, and header buttons 5–6 px. Plan and mode switchers are exactly what a finger hits most often; at a 2 px gap, a miss means switching to the wrong plan.
A note on the standard, stated precisely: the Spacing exception of WCAG 2.5.8 applies only to targets smaller than 24×24 px, and what it requires is that a 24 px circle centred on the target not intersect its neighbours. Practically every pair in this list is 24×24 or larger, so these controls pass 2.5.8 by size regardless of the gap. This finding records a touch-ergonomics problem, not a standards violation.
Measurement limits, disclosed: the detector records at most one pair per element, drops touching targets and caps at 20 records — “all pairs” here means “all found”, not an exhaustive list.
M-5Mediumtouch ergonomics
Controls below the platform norm on key pages
Buttons and input fields under 44 px concentrate on the pages that matter: 32 on the home page (social sign-in buttons at 97×36), all 20 buttons of the changelog page (135×32 — there are no other buttons on it), 18 on the AI features page, 17 on pricing, 10 in the free tool. The pricing “get started” buttons are 323 px wide at 32 px tall — they look large while falling short vertically.
The smallest controls on the site are two tool buttons at 42×16 and 48×16 on the AI features page, plus an unnamed 17×14 button on the home page. Formally they do not break the AA minimum: distance measurement (see M-6) shows enough free space around them for the criterion’s exception to apply. But 14–16 px of height is a third of the platform norm, and tapping them stays a lottery regardless of formal compliance.
M-6Mediuma11y · WCAG 2.5.8 (AA)
The single link pair that fails the mandatory AA minimum
In a list of tools on one landing page, two adjacent 17 px-tall links sit so close that a 24 px circle centred on the first one touches the second one’s box. This is the only spot on the site where criterion 2.5.8 fails both by size and through the distance exception.
How this was verified — and why the other small targets are not violations. Across the seven pages there are 319 controls smaller than 24×24 px: menu and footer items around 20 px tall, tool buttons, list links. That alone does not violate the criterion: WCAG 2.5.8 accepts sufficient spacing as an alternative to size. A direct measurement pass, run specifically for this question, checked every one of the 319 targets: 318 pass through the spacing exception, one does not.
A mechanical count of “319 AA violations” would be wrong in 318 cases out of 319 — this is exactly the class of error our false-positive triage exists for.
Evidence: Dedicated spacing measurement run over all seven pages
M-7Mediuma11y · WCAG 2.1.1
A scrollable region is not reachable from the keyboard
On the home and pricing pages axe reports scrollable-region-focusable: a horizontally scrollable section does not receive focus. In a mobile browser with a connected keyboard — or on a tablet with a keyboard case — the content of that area is unreachable.
M-8Mediuma11y · WCAG 1.4.3
Text contrast below the AA threshold — 115 elements
color-contrast (serious): 115 nodes on 6 of 7 pages. On mobile this bites harder than on desktop — the screen is far more often used in bright outdoor light.
M-9Lowreadability
Text smaller than 12 px
Elements with 11–11.5 px font size: four on the AI features page (interface examples at 11 px), one each on the home and pricing pages (11.5 px).
Checked — no issues found
✓
Zoom is not blocked. None of the 7 pages sets user-scalable=no or maximum-scale=1; pinch-zoom works. A frequent and severe mobile mistake — absent here.
✓
Viewport meta tag. Correct on all pages: width=device-width, initial-scale=1.
✓
No horizontal scroll. On no page, including deep scroll positions — checked at 4 depths per page.
✓
Sticky panels do not cover content. A raw scan signal claimed sticky elements covering “up to 397% of the screen”. Manual verification: it summed the heights of all fixed/sticky containers — three of them are full-screen modal containers always present in markup, and none of the four is pinned to a screen edge. Actual overlapping panels: zero.
✓
Console and network. No JavaScript errors and no 4xx/5xx responses across all 7 pages.
Want a report like this for your product?
Fixed scope, clear deliverables — we reply within 24 hours with scope and a quote.