Manifest position 541 · CrUX rank bucket 1000
https://www.pornhub.com
Coverage complete
Coverage-complete audit of six representative public paths/states. Regional redirects limited distinct listing/category templates, and no credentialed or purchase action was performed.
All 58 atomic check outcomes
| Principle / check | Status | Confidence | Evidence or reason |
|---|---|---|---|
respect-user-preferencesrespects-color-scheme | issues | high | The dark/reduced-motion evaluate probe reports document colorScheme "normal" with a black body under prefers-color-scheme: dark; the DOM/CSS contains no adaptive color-scheme declaration. F01 low: The theme is fixed dark rather than driven by the user’s color-scheme preference. |
respect-user-preferencesrespects-reduced-motion | issues | high | On the video detail under prefers-reduced-motion: reduce, two 1,500 ms dash animations remain running. F02 medium: Player loading animations continue when reduced motion is requested. |
respect-user-preferencesrespects-contrast | pass | high | Forced-colors/high-contrast probe preserved black/white surfaces and Lighthouse passed text color contrast. |
implement-natural-interactionsview-transitions | issues | high | Five rendered-path probes found no authored transition rules or transition groups; route navigation is conventional abrupt MPA replacement. F03 low: Route and major state changes do not use authored View Transitions. |
implement-natural-interactionsscroll-driven-animations | not-applicable | high | No scroll-linked animation exists on the representative feed or detail page, so there is no implementation to classify. |
implement-natural-interactionsphysical-gestures | pass | medium | Representative pages rely on native scrolling and ordinary links/buttons; probes found no custom gesture surface fighting platform scrolling. |
provide-guided-navigationscroll-state-aware-chrome | issues | high | The homepage probe found no container/scroll timeline rules and the long feed exposes static global chrome without progress or scroll-state feedback. F04 low: The long feed has no scroll-state-aware navigation or progress affordance. |
provide-guided-navigationanchored-positioning | not-applicable | high | No viewport-edge tooltip, anchored popover, or contextual menu was present on the exercised public surfaces. |
provide-guided-navigationdirects-attention | pass | high | Global navigation labels, the age-gate action pair, and the video detail H1 provide direct destination/action cues. |
maximize-content-reduce-noiseno-intrusive-interruptions | pass | high | The blocking age gate is legally/purpose-required, clearly labelled, and offers explicit enter/exit actions; cookie consent offers all/essential/custom choices. |
maximize-content-reduce-noisesemantic-dismissible-primitives | issues | high | DOM evidence shows #js-ageDisclaimerModal is a div with role=alertdialog; probes found zero dialog, popover, or details elements across representative pages. F05 medium: Global overlays are custom div-based dialogs instead of native dialog/popover primitives. |
maximize-content-reduce-noisereduced-chrome | issues | high | HAR records 31 TrafficJunky image requests and 99 third-party requests; page text repeats “Remove Ads” throughout the feed. F06 medium: Advertising and repeated upgrade chrome compete heavily with primary content. |
adapt-to-the-form-factorresponsive-no-horizontal-scroll | issues | high | The 360x800 screenshot cuts off sentences, the law-enforcement link, and the right-hand “under 18” action. Layout metrics report no scroll because overflow is clipped rather than made reachable. F07 high: The mandatory age gate is visibly clipped at 360 px. |
adapt-to-the-form-factorcomponent-level-responsiveness | pass | medium | Underlying feed cards render at 324 px in the mobile probe and all sampled layout primitives report zero document overflow. |
adapt-to-the-form-factorinput-modality-aware | issues | high | Lighthouse reports user-scalable=no/maximum-scale=1 on its mobile render. DOM measurements show age-gate links only 16–22 px high, below a comfortable touch target. F08 high: The mobile viewport disables zoom and several essential text links have undersized targets. |
support-core-task-successclear-purpose-and-primary-action | pass | high | The first viewport states that this is an adult site and presents unambiguous enter and exit actions. |
support-core-task-successprimary-flow-completion | pass | high | The representative video detail URL rendered its H1, native controlled video, related content, and forms after the entry state. |
support-core-task-successclear-system-state-and-recovery | issues | high | HTTP probe shows an invented path returns 200 after redirect to /; the rendered probe contains ordinary homepage content and no 404/retry message. F09 medium: Unknown URLs silently redirect to the homepage with no error or recovery explanation. |
be-fast-and-stablegood-core-web-vitals | issues | high | Lighthouse measured LCP and TTI at 13.0 s (performance 65); the first-party trace measured LCP at 3.82 s, still above the 2.5 s good threshold. F10 high: Mobile LCP is poor and highly variable. |
be-fast-and-stablevisual-stability | pass | high | Layout observers measured CLS 0.00004 mobile and 0.056 desktop, both inside the good threshold. |
be-fast-and-stableefficient-main-thread | pass | high | Trace reports zero long tasks and zero TBT; the detail layout observed only one marginal 55 ms task. |
be-fast-and-stableefficient-resource-delivery | issues | high | HAR records 170 requests/4.36 MB and multiple VeryHigh parser-inserted stylesheets; Lighthouse estimates 620 ms render-blocking savings and flags an undiscoverable lazy LCP image. F11 high: The load has a long render-blocking and dependency chain. |
be-fast-and-stabletrim-unused-and-duplicate-code | issues | high | Lighthouse estimates 178 KiB unused JavaScript, roughly 74 KiB unused CSS, and 54 KiB legacy JavaScript. F12 medium: Substantial unused and legacy code ships on initial load. |
be-inclusivenames-roles-labels | issues | high | Lighthouse fails iframe title. The video detail probe finds an unlabeled caption textarea and submit button; the login modal also contains unnamed buttons. F13 high: Several embedded and form controls lack robust accessible names. |
be-inclusivesufficient-contrast | pass | high | Lighthouse passed foreground/background contrast; forced-colors retained readable white-on-black content. |
be-inclusivestructure-and-focus | issues | high | Homepage probes contain no H1 and begin with H3; Lighthouse flags the “Log in” control because its visible label does not match aria-label="User Icon". F14 medium: Heading and accessible-name structure is inconsistent. |
be-inclusivelegible-text | issues | high | The 360x800 screenshot cuts off sentences, the law-enforcement link, and the right-hand “under 18” action. Layout metrics report no scroll because overflow is clipped rather than made reachable. F07 high: The mandatory age gate is visibly clipped at 360 px. |
be-inclusivezoom-reflow-targets-and-media | issues | high | Lighthouse reports user-scalable=no/maximum-scale=1 on its mobile render. DOM measurements show age-gate links only 16–22 px high, below a comfortable touch target. F08 high: The mobile viewport disables zoom and several essential text links have undersized targets. |
follow-best-practicesno-console-errors | issues | high | Lighthouse records TypeError: Cannot read properties of null (reading addEventListener) in setInstallButton at the homepage. F15 medium: The homepage throws an uncaught JavaScript exception. |
follow-best-practicessound-document-and-assets | issues | high | The image primitive reports three images without dimensions; Lighthouse specifically identifies cookie/modal logo images without width and height. F16 medium: Several images lack intrinsic dimensions. |
follow-best-practicesbrowser-platform-hygiene | issues | high | Lighthouse reports deprecated unload handling, a deprecated Cast-control CSS technique, and four BFCache failure reasons including unload and no-store behavior. F17 medium: Deprecated APIs and BFCache blockers remain. |
be-discoverabletitle-and-description | issues | high | Across homepage/listing probes the title is only “Pornhub” and description is null, providing little page-specific context. F18 medium: The homepage title is generic and rendered probes expose no meta description. |
be-discoverablecrawlable-and-mobile-friendly | issues | high | Probes count 30 missing/javascript href links; Lighthouse fails crawlable anchors. /robots.txt redirects to HTML and Lighthouse reports 4,071 parse errors. F19 high: Key links and crawler control files are not crawlable. |
be-discoverablecanonical-and-indexing-signals | issues | high | Representative pages emit noindex,nofollow; the video detail canonical is https://www.pornhub.com/; sitemap.xml returns 404; unknown routes redirect with 200. F20 high: Indexing signals conflict and detail pages canonicalize to the homepage. |
be-discoverablestructured-and-shareable-metadata | issues | high | The video detail has zero JSON-LD blocks and no Open Graph tags despite exposing a named video entity. F21 medium: The video detail lacks rich-entity and share metadata. |
be-private-and-securesecure-transport-and-headers | issues | high | Headers evidence finds no CSP or X-Content-Type-Options; cookie evidence finds one non-Secure cookie and all seven cookies use SameSite=None. F22 high: Baseline XSS and cookie defenses are incomplete. |
be-private-and-securedata-minimisation-and-third-parties | issues | high | Tracker evidence finds 12 third-party origins including GTM and DoubleClick. HAR attributes 99 requests and 2.01 MB to third parties before the primary content journey. F23 high: The initial page has a large tracking and third-party footprint. |
be-private-and-securein-context-permissions-and-modern-auth | pass | medium | Login is user-initiated, exposes correct email/current-password autocomplete and social sign-in, source contains WebAuthn support, and no permission request is fired on load. |
be-private-and-securedefensive-browser-policies | issues | high | Headers evidence finds no CSP/frame-ancestors policy, nosniff, Referrer-Policy, or Permissions-Policy; only X-Frame-Options and strong HSTS are present. F24 high: Several browser-enforced policies are absent. |
be-resilientprogressive-enhancement | issues | high | Discoverability finds only 31% rendered-word coverage; its crawler screenshot is entirely black while the JS-rendered screenshot shows the age gate. F25 high: The meaningful page becomes visually blank without JavaScript. |
be-resilientresilient-runtime-behaviour | issues | high | The 360x800 screenshot cuts off sentences, the law-enforcement link, and the right-hand “under 18” action. Layout metrics report no scroll because overflow is clipped rather than made reachable. F07 high: The mandatory age gate is visibly clipped at 360 px. |
be-resilientoffline-and-installable | not-applicable | high | This media-streaming service is intrinsically online; an installable/offline playback experience is not necessary for the audited public journey. |
be-resilientnetwork-and-http-failure-states | issues | high | HTTP probe shows an invented path returns 200 after redirect to /; the rendered probe contains ordinary homepage content and no 404/retry message. F09 medium: Unknown URLs silently redirect to the homepage with no error or recovery explanation. |
be-internationalisedlang-dir-and-logical-properties | pass | high | HTML lang=en is present and a labelled language combobox exposes many localized options; the sampled LTR layout preserves reading order. |
be-internationalisedlocale-aware-data | not-applicable | high | The sampled public surfaces contain no user-facing dates, currencies, or locale-sensitive numeric entry requiring formatting judgement. |
be-internationalisedtime-zone-correctness | not-applicable | high | The sampled public surfaces expose no scheduled event or time-zone-sensitive data. |
be-trustworthyno-dark-patterns | pass | high | Age entry/exit and cookie all/essential/custom choices are explicit and visually peer-level; no preselected paid commitment was encountered. |
be-trustworthyhumane-error-handling | issues | high | After opening login and submitting empty, email/password report required=false, aria-invalid is absent, and no visible role=alert/error text is returned. F26 medium: The login form does not expose required semantics or actionable empty-submit feedback. |
be-trustworthytrustworthy-input-assistance | pass | high | Login email and password use autocomplete=email and current-password and carry visible labels. |
be-trustworthysafe-commercial-and-account-flows | pass | high | The sampled account modal clearly states regional registration availability, terms/privacy acknowledgement, and offers labelled sign-in methods without hidden purchase commitment. |
be-sustainableoptimised-assets | issues | high | Image evidence finds 33 images without srcset and 21 legacy formats; Lighthouse estimates 558 KiB image-delivery savings. F27 high: Image delivery wastes substantial bytes. |
be-sustainableno-wasteful-work | issues | high | Before entry, HAR records 170 requests and 4.36 MB including 39 scripts and 37 XHR/fetches; Lighthouse identifies large unused code payloads. F28 high: The age-gated initial load performs disproportionate network work. |
be-sustainablethird-party-and-media-budget | issues | high | HAR attributes 2.01 MB and 99 requests to third parties, including 940 KB from TrafficJunky images and 303 KB from Google Tag Manager. F29 high: Third-party advertising dominates a large share of the initial transfer. |
be-agent-readystructured-agent-capabilities | issues | high | Representative probes find no WebMCP/agentic surface; Lighthouse agentic browsing scores 67 and reports llms.txt missing its required H1. F30 low: The content platform exposes no structured agent capability and has malformed llms.txt guidance. |
be-agent-readyon-device-inference | not-applicable | high | No summarisation or generative task is offered in the audited journey; on-device inference is an optional opportunity rather than required behavior. |
be-memory-efficientno-leak-under-repeated-interaction | pass | high | After ten full-page scroll cycles, heap grew only 326,675 bytes (0.89%) and 262 nodes, while closures and major constructors stayed flat. |
be-memory-efficientbounded-footprint | pass | high | Baseline heap is 36.7 MB with 1,424 rendered DOM nodes, proportionate to a media catalogue page. |
be-memory-efficientno-detached-dom-or-unbounded-listeners | pass | high | Before/after summaries show closures decreasing by six and no Detached constructor among top populations; major Object/Array populations remain flat. |
Provenance
Canonical report: results/atomic/reports/0541-www_pornhub_com.json
Report SHA-256: 613b078ffc4b1754980393136cf58da8ad6fe30a7b22b3ac885ea132dafbdb70
Local retained report: runs/2026-07-17T17-27-24-856Z/atomic-reports/www_pornhub_com/2026-07-21T11-10-29-572Z/report.json
Local evidence root: runs/2026-07-17T17-27-24-856Z/atomic-reports/www_pornhub_com/2026-07-21T11-10-29-572Z
Catalog SHA-256: sha256:78ccfdb2d483f4c57d9dafed80fd86c6265585a56457c8dcfddc254b80fb44d7
Raw screenshots, HARs, traces, heaps, and other browser artifacts are retained at the local evidence root and intentionally are not committed. Artifact paths in the canonical report are relative to that root.