Manifest position 546 · CrUX rank bucket 1000
https://pl.pornhub.com
Coverage complete
Coverage-complete report-mode audit of the public unauthenticated entry, listing, media detail, search, age/consent flow, and failure-state surface.
All 58 atomic check outcomes
| Principle / check | Status | Confidence | Evidence or reason |
|---|---|---|---|
respect-user-preferencesrespects-color-scheme | issues | high | Dark and default screenshots are pixel-identical in appearance and size (63,936 bytes), while the CSS probe found no color-scheme declaration or prefers-color-scheme rule. F01 medium: The fixed dark palette does not honour the user color-scheme preference. |
respect-user-preferencesrespects-reduced-motion | pass | high | Under prefers-reduced-motion: reduce, document.getAnimations() returned no active animations, so no non-essential load motion remained to suppress. |
respect-user-preferencesrespects-contrast | pass | high | Lighthouse axe color-contrast audit passed, and text and controls remained present under prefers-contrast: more. |
implement-natural-interactionsview-transitions | issues | high | The age-gate dismissal and cookie-wall arrival occur as an abrupt state swap in the interaction video; CSS inspection found no view-transition rules. F02 low: The age-to-consent state change is abrupt. |
implement-natural-interactionsscroll-driven-animations | not-applicable | medium | No parallax, scrollytelling, or entry/exit reveal interaction was present on the audited entry and representative templates. |
implement-natural-interactionsphysical-gestures | not-applicable | medium | No swipe, pull, carousel, or other gesture-driven control was present on the audited entry flow. |
provide-guided-navigationscroll-state-aware-chrome | issues | high | The long listing exposes static navigation chrome; CSS inspection found no scroll-state query, scroll timeline, or progress affordance. F03 low: Long-page navigation does not respond to scroll state. |
provide-guided-navigationanchored-positioning | not-applicable | medium | The audited overlays are full-page age/consent dialogs, not anchored tooltips or edge-positioned menus. |
provide-guided-navigationdirects-attention | pass | high | The age notice places a single prominent heading and two explicit age choices in a centered modal, clearly directing the required next action. |
maximize-content-reduce-noiseno-intrusive-interruptions | issues | high | After the mandatory age gate is dismissed, a second full-content cookie wall immediately obscures the page, as shown by the transition contact sheet. F04 high: Two consecutive full-content gates interrupt access on every fresh session. |
maximize-content-reduce-noisesemantic-dismissible-primitives | issues | high | The visible age modal is a DIV with role=dialog/aria-modal rather than a native dialog; the platform probe found no dialog or popover primitive. F05 medium: The modal flow uses custom DIV dialogs instead of native dialog semantics. |
maximize-content-reduce-noisereduced-chrome | pass | high | The first viewport is visually restrained: branding, one heading, explanatory copy, and the required age actions dominate, with no application frame crowding the notice. |
adapt-to-the-form-factorresponsive-no-horizontal-scroll | pass | high | At 360x800, layout reported scrollWidth 360, clientWidth 360, and 0 px horizontal overflow; the viewport meta is present. |
adapt-to-the-form-factorcomponent-level-responsiveness | issues | medium | The site renders reused card/modal components across desktop and mobile, but CSSOM inspection found no @container or container-type support, leaving adaptation viewport-bound. F06 low: Reusable components rely only on viewport styling. |
adapt-to-the-form-factorinput-modality-aware | issues | high | Programmatically focusing the first visible link produced outline-style none and no box shadow, so keyboard focus is not visibly indicated. F07 high: Keyboard focus is invisible on the first interactive target. |
support-core-task-successclear-purpose-and-primary-action | pass | high | The entry viewport states that this is an adults-only site and exposes explicit enter and exit actions without requiring exploration. |
support-core-task-successprimary-flow-completion | pass | high | The recorded flow dismissed the age gate and exposed the consent choices, including an equally visible essential-only option; the core entry path advances predictably. |
support-core-task-successclear-system-state-and-recovery | issues | high | A deliberately nonexistent URL returned HTTP 200 and the generic site shell rather than a truthful 404 state, making failure indistinguishable from success. F08 medium: Unknown routes return a misleading successful shell. |
be-fast-and-stablegood-core-web-vitals | issues | high | Mobile Lighthouse measured LCP 14.1 s, FCP 3.0 s, and interactive 14.1 s (performance 0.64), well outside a good load experience. F09 high: Mobile LCP is 14.1 seconds. |
be-fast-and-stablevisual-stability | issues | high | The 360x800 layout observer recorded CLS 0.1021 from a shift at about 1.59 s, just above the good threshold. F10 medium: Mobile CLS reaches 0.102. |
be-fast-and-stableefficient-main-thread | pass | high | The trace recorded zero long tasks and 0 ms total blocking time; Lighthouse TBT was 90 ms. |
be-fast-and-stableefficient-resource-delivery | issues | high | The load made 170 requests and transferred 5.08 MB; seven parser-inserted stylesheets and multiple non-deferred scripts were confirmed as high-priority render-blocking candidates. F11 high: The entry transfers 5.08 MB through 170 requests with a long blocking chain. |
be-fast-and-stabletrim-unused-and-duplicate-code | issues | high | Lighthouse estimated 177 KiB unused JavaScript and 74 KiB unused CSS, including two mobile stylesheets about 97% unused. F12 medium: The entry ships about 251 KiB unused JS/CSS. |
be-inclusivenames-roles-labels | pass | high | Lighthouse axe passed button-name, link-name, image-alt, and landmark checks; the image primitive found zero missing alt attributes. |
be-inclusivesufficient-contrast | pass | high | Lighthouse axe color-contrast passed with no violating nodes. |
be-inclusivestructure-and-focus | issues | high | Although heading order and landmarks passed, the active keyboard target had no outline or box shadow, so focus is not always visible. F13 high: Keyboard focus is not visible. |
be-inclusivelegible-text | pass | high | The age-notice heading and body text are large, high-contrast, centered, and readable at desktop and mobile widths without clipping. |
be-inclusivezoom-reflow-targets-and-media | issues | high | Lighthouse found user-scalable=no and maximum-scale=1.0 in the effective mobile viewport meta, preventing user zoom despite target-size passing. F14 high: The viewport disables pinch zoom. |
follow-best-practicesno-console-errors | issues | high | Lighthouse captured TypeError: Cannot read properties of null (reading addEventListener) in setInstallButton on initial load. F15 medium: Initial load throws in setInstallButton. |
follow-best-practicessound-document-and-assets | issues | high | Doctype/UTF-8 and aspect ratios were sound, but the image audit found three images without explicit dimensions and 33 without responsive srcset. F16 low: Several images omit dimensions and responsive sources. |
follow-best-practicesbrowser-platform-hygiene | issues | high | Lighthouse found two deprecated behaviours and four BFCache failure reasons, including a main-frame unload handler and cache-control:no-store. F17 medium: Deprecated unload/Cast patterns and BFCache blockers remain. |
be-discoverabletitle-and-description | issues | high | The public home page title is only Pornhub and the direct DOM probe found no meta description, providing little page-specific context. F18 medium: The page lacks descriptive, page-specific title and description metadata. |
be-discoverablecrawlable-and-mobile-friendly | issues | high | Lighthouse found javascript:void(0) thumbnail links and treated robots.txt as HTML with 4,067 parse errors; mobile zoom is also disabled. F19 high: robots.txt is invalid HTML and several cards use javascript:void(0) links. |
be-discoverablecanonical-and-indexing-signals | issues | high | Although a canonical URL exists, the public home page declares noindex,nofollow and /robots.txt returns a 458 KiB HTML page instead of a valid robots policy. F20 high: Public indexing signals conflict through noindex/nofollow and malformed robots.txt. |
be-discoverablestructured-and-shareable-metadata | issues | high | The listing page contains no JSON-LD and no Open Graph tags despite representing a browsable media collection. F21 medium: The media listing has no structured or social metadata. |
be-private-and-securesecure-transport-and-headers | issues | high | HTTPS and HSTS are present, but CSP and X-Content-Type-Options are missing; cookie rp is not Secure and all seven cookies use SameSite=None. F22 high: Core security headers are missing and one cookie is not Secure. |
be-private-and-securedata-minimisation-and-third-parties | issues | high | The initial load contacted 12 third-party origins, including Google Tag Manager and DoubleClick; 99 third-party requests transferred 2.05 MB before entry. F23 high: Tracking and advertising run before entry across 99 third-party requests. |
be-private-and-securein-context-permissions-and-modern-auth | pass | high | No geolocation or notification prompt fired on load, and the page ships a dedicated passkey module and passkey banner while exposing PublicKeyCredential. |
be-private-and-securedefensive-browser-policies | issues | high | HSTS and X-Frame-Options are present, but CSP/frame-ancestors, Referrer-Policy, Permissions-Policy, and nosniff are absent. F24 high: Referrer, permissions, CSP, and nosniff defenses are absent. |
be-resilientprogressive-enhancement | issues | high | The non-JavaScript fetch is not an empty shell, but discoverability coverage is only 28% and the crawler view loses most rendered listing content. F25 medium: Only 28% of rendered content matches raw HTML. |
be-resilientresilient-runtime-behaviour | pass | high | The age and consent overlays remained contained at desktop and 360 px mobile widths with no horizontal overflow, and the essential-only path remained operable. |
be-resilientoffline-and-installable | not-applicable | medium | This streaming media service is intrinsically online; an offline/installable experience is not required for its core content. |
be-resilientnetwork-and-http-failure-states | issues | high | A guaranteed nonexistent route responded 200 with the general shell rather than a distinct error and recovery state. F26 medium: Missing routes return HTTP 200 with no truthful recovery state. |
be-internationalisedlang-dir-and-logical-properties | pass | high | The Polish page declares html lang=pl, and Lighthouse validates the language code; the localized age notice renders in Polish. |
be-internationalisedlocale-aware-data | not-applicable | medium | No dates, currencies, durations requiring locale formatting, or editable locale-sensitive values were present in the audited entry flow. |
be-internationalisedtime-zone-correctness | not-applicable | medium | The audited entry, listing, search, and media-detail surfaces expose no scheduled event or time-zone-sensitive user data. |
be-trustworthyno-dark-patterns | pass | high | The consent wall presents Accept All, Accept Only Essential, and Customize choices together with comparable visual weight; the age gate provides explicit enter and exit actions. |
be-trustworthyhumane-error-handling | not-applicable | medium | The audited public flow contains only a non-required search input; no required data-entry form was present to validate or recover. |
be-trustworthytrustworthy-input-assistance | not-applicable | medium | The only public input is site search, for which address, payment, sign-in, and identity autofill tokens do not apply. |
be-trustworthysafe-commercial-and-account-flows | pass | high | The public entry exposes sign-in without forcing it, ships passkey support, and does not force a purchase or continuity commitment in the audited flow. |
be-sustainableoptimised-assets | issues | high | Of 37 images, 25 use legacy formats and 33 lack srcset; three lack dimensions, increasing avoidable transfer and layout cost. F27 medium: Most thumbnails use legacy formats without responsive sources. |
be-sustainableno-wasteful-work | issues | high | The entry load makes 170 requests and ships 251 KiB of estimated unused JS/CSS before the user clears the age and consent gates. F28 high: Substantial network and unused code runs before consent and core access. |
be-sustainablethird-party-and-media-budget | issues | high | Ninety-nine third-party requests transfer 2.05 MB, with TrafficJunky ads alone over 1 MB and known analytics trackers active before entry. F29 high: Third parties consume 2.05 MB before entry. |
be-agent-readystructured-agent-capabilities | not-applicable | medium | No agent-facing capability is declared or expected for this public media-browsing surface; the emerging WebMCP opportunity was judged out of scope. |
be-agent-readyon-device-inference | not-applicable | medium | No summarisation, generation, or other user task on the audited entry flow calls for on-device inference. |
be-memory-efficientno-leak-under-repeated-interaction | pass | high | After ten repeated language-wrapper state toggles, heap node count fell from 557,599 to 557,238 and self size fell from 37,489,626 to 37,209,370 bytes, with no retained-growth signal. |
be-memory-efficientbounded-footprint | issues | medium | The pre-entry page retained 557,599 heap nodes and 37.5 MB self size before the user reached content, a high footprint for an age gate and listing shell. F30 medium: The pre-entry heap footprint is disproportionately large. |
be-memory-efficientno-detached-dom-or-unbounded-listeners | pass | high | Across the repeated state-toggle comparison, total heap nodes decreased by 361 rather than accumulating; no aggregate detached/listener-growth symptom appeared in the tested window. |
Provenance
Canonical report: results/atomic/reports/0546-pl_pornhub_com.json
Report SHA-256: 093a0f2d4b01060d49cba46ec33308a2b603183a4a668c2efe70253f56599529
Local retained report: runs/2026-07-17T17-27-24-856Z/atomic-reports/pl_pornhub_com/2026-07-21T11-54-37-714Z/report.json
Local evidence root: runs/2026-07-17T17-27-24-856Z/atomic-reports/pl_pornhub_com/2026-07-21T11-54-37-714Z
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.