Manifest position 932 · CrUX rank bucket 1000
https://it.pornhub.com
Coverage complete
Atomic coverage complete across 58 checks. Fresh unauthenticated sessions encounter an age gate; underlying public DOM and a direct video detail were inspected, and the primary gate/consent flow was exercised.
All 58 atomic check outcomes
| Principle / check | Status | Confidence | Evidence or reason |
|---|---|---|---|
respect-user-preferencesrespects-color-scheme | issues | high | The dark-condition probe reports colorScheme “normal”, no prefers-color-scheme CSS, and the normal and dark captures are materially identical. F001 medium: The page uses a fixed dark palette but does not expose or respond to the user’s colour-scheme preference. |
respect-user-preferencesrespects-reduced-motion | issues | high | The video-detail probe found two running 1500 ms animations, while the CSS probe found no prefers-reduced-motion rule. F002 medium: Motion is not reduced when the user requests less motion. |
respect-user-preferencesrespects-contrast | issues | high | The prefers-contrast: more screenshot hides the white heading, explanatory copy, and both age decision controls, leaving only orange links visible. F003 critical: The age gate becomes unusable under increased-contrast preference. |
implement-natural-interactionsview-transitions | issues | high | The entry-flow video shows the gate disappearing and content/cookie state replacing it; the CSS probe found no view-transition usage. F004 low: The primary age-gate state change is an abrupt custom swap rather than a view transition. |
implement-natural-interactionsscroll-driven-animations | not-applicable | high | No scroll-linked animation was identified on the representative listing or detail surfaces, so there is no implementation to judge. |
implement-natural-interactionsphysical-gestures | not-applicable | high | No pull, swipe, drag, or other custom physical gesture is part of the sampled primary flow. |
provide-guided-navigationscroll-state-aware-chrome | issues | high | The CSS probe found no scroll-state query or declarative scroll-position treatment on a long listing page. F005 low: Persistent navigation does not expose scroll-state-aware behaviour. |
provide-guided-navigationanchored-positioning | issues | high | The DOM contains custom dropdown/combobox structures, while the CSS probe found no anchor-name, position-anchor, or position-try. F006 low: Menus and dropdowns use custom positioning without anchor positioning or fallback positions. |
provide-guided-navigationdirects-attention | pass | high | The gate uses a centered hierarchy and the entered homepage marks the active navigation item with an orange underline. |
maximize-content-reduce-noiseno-intrusive-interruptions | pass | high | The only load-time interruptions are the legally relevant age and consent decisions, both with explicit choices. |
maximize-content-reduce-noisesemantic-dismissible-primitives | issues | high | The probe found one custom role=dialog and zero dialog, popover, or details elements; the cookie overlay also uses a custom full-screen wrapper. F007 medium: Consent and age overlays are custom div-based dialogs instead of native semantic primitives. |
maximize-content-reduce-noisereduced-chrome | pass | high | After entry, the page gives most viewport area to the media grid and uses compact navigation. |
adapt-to-the-form-factorresponsive-no-horizontal-scroll | issues | high | At 360×800 the screenshot cuts off explanatory text and most of the second age button even though horizontal scrolling is suppressed. F008 high: The mobile age gate clips core content and the under-age decision. |
adapt-to-the-form-factorcomponent-level-responsiveness | issues | high | The CSS probe found no @container usage despite cards, navigation, and overlays appearing in multiple widths. F009 low: Reusable cards and overlays rely on viewport rules rather than component-level responsiveness. |
adapt-to-the-form-factorinput-modality-aware | issues | high | The focused Cookie Notice link computed to outline:none and no box-shadow; the probe also listed many visible controls only 15–22 px high. F010 high: Keyboard focus and target sizing are not consistently usable. |
support-core-task-successclear-purpose-and-primary-action | pass | high | The gate clearly states the adult-site purpose and presents explicit enter/exit actions. |
support-core-task-successprimary-flow-completion | pass | high | The recorded flow successfully moves from age decision to the homepage and presents equal cookie choices. |
support-core-task-successclear-system-state-and-recovery | issues | high | The deliberately invalid path resolved to https://it.pornhub.com/ with title Pornhub and no error heading or recovery message. F011 medium: Unknown routes silently redirect to the homepage instead of explaining the error. |
be-fast-and-stablegood-core-web-vitals | issues | high | Lighthouse measured LCP 14.1 s, FCP 3.0 s, and Speed Index 5.5 s; the independent trace measured LCP 3.88 s under a different profile. F012 high: Largest Contentful Paint is far outside the good range. |
be-fast-and-stablevisual-stability | issues | high | The 360×800 layout observer measured CLS 0.1021 from a shift at about 2.95 s; three images also lack explicit dimensions. F013 medium: The mobile entry state crosses the good CLS threshold. |
be-fast-and-stableefficient-main-thread | pass | high | The trace recorded zero long tasks and 0 ms TBT; Lighthouse TBT was 78 ms. |
be-fast-and-stableefficient-resource-delivery | issues | high | HAR recorded 170 requests and 4.31 MB transferred, including multiple VeryHigh parser-inserted stylesheets and High parser scripts; Lighthouse estimates 580 ms render-blocking savings. F014 high: Initial delivery is heavy and has a long critical chain. |
be-fast-and-stabletrim-unused-and-duplicate-code | issues | high | Lighthouse estimates 178 KiB unused JavaScript, 74 KiB unused CSS, and 54 KiB legacy JavaScript savings. F015 medium: The page ships substantial unused and legacy code. |
be-inclusivenames-roles-labels | issues | high | The search input has no associated label, Lighthouse flags an untitled frame, and the video-detail probe found one image without alt text. F016 high: Important fields and embedded content lack complete accessible labelling. |
be-inclusivesufficient-contrast | pass | high | Lighthouse found no normal-mode color-contrast failures on the gate; standard screenshots show readable white/orange on black. |
be-inclusivestructure-and-focus | issues | high | The only visible homepage heading is H3 with no H1, and a focused legal link has outline:none and no box-shadow. F017 high: The homepage has weak heading structure and invisible keyboard focus. |
be-inclusivelegible-text | issues | high | The 360 px screenshot truncates multiple lines and the second age action, forcing users to infer missing content. F018 medium: Mobile text and controls are clipped rather than reflowed. |
be-inclusivezoom-reflow-targets-and-media | issues | high | Lighthouse flags restrictive viewport scaling, the probe finds many controls under 24 px high, and the sampled video has no caption track. F019 high: Reflow, touch targets, and media alternatives are incomplete. |
follow-best-practicesno-console-errors | issues | high | Lighthouse captured TypeError: Cannot read properties of null (reading addEventListener) in setInstallButton at homepage line 4577. F020 medium: The homepage throws an uncaught JavaScript exception. |
follow-best-practicessound-document-and-assets | issues | high | The images primitive found three images without dimensions and Lighthouse flags unsized images plus 722 KiB potential image-delivery savings. F021 medium: Asset markup is incomplete despite valid doctype and charset. |
follow-best-practicesbrowser-platform-hygiene | issues | high | Lighthouse reports two deprecated API warnings, four BFCache failure reasons, and DevTools inspector issues. F022 medium: The page triggers browser-platform hygiene failures. |
be-discoverabletitle-and-description | issues | high | The homepage and sampled video both render title “Pornhub”; direct DOM probes found no meta description, and the video title is not reflected in <title>. F023 high: Pages use a generic title and omit a meta description. |
be-discoverablecrawlable-and-mobile-friendly | issues | high | robots.txt redirects to the homepage HTML, producing 4,073 Lighthouse parse errors, and 18 anchors use javascript: URLs. F024 high: Crawler controls and link destinations are malformed. |
be-discoverablecanonical-and-indexing-signals | issues | high | The video page declares the homepage canonical, has no hreflang, robots.txt redirects, sitemap.xml returns 404, and the direct probe observed noindex,nofollow. F025 high: Indexing signals collapse distinct pages onto the homepage. |
be-discoverablestructured-and-shareable-metadata | issues | high | The sampled detail page exposes no JSON-LD and no Open Graph tags despite having a visible H1 and media entity. F026 medium: The video detail lacks structured and social metadata. |
be-private-and-securesecure-transport-and-headers | issues | high | Headers show no CSP or nosniff; cookies include an rp cookie without Secure and all seven sampled cookies use SameSite=None. F027 high: Transport is HTTPS, but key browser defenses and cookie attributes are missing. |
be-private-and-securedata-minimisation-and-third-parties | issues | high | The initial load contacted 12 third-party origins and known Google Tag Manager/DoubleClick trackers; HAR attributes 99 requests and 2.06 MB to third parties while the consent overlay is still present. F028 high: A large tracking footprint loads before the user has made a consent choice. |
be-private-and-securein-context-permissions-and-modern-auth | pass | high | No permission prompt appeared on load; sign-in markup includes correct current-password/email autocomplete and a passkey continuation surface. |
be-private-and-securedefensive-browser-policies | issues | high | The main response lacks CSP, nosniff, Referrer-Policy, and Permissions-Policy, although HSTS and X-Frame-Options are present. F029 high: Defensive browser policies are incomplete. |
be-resilientprogressive-enhancement | issues | high | Discoverability measured 35% rendered-word coverage in raw HTML; the gate requires scripted state changes to reach content. F030 medium: Only a minority of rendered content is available to a non-JavaScript crawler. |
be-resilientresilient-runtime-behaviour | issues | high | At 360 px the age dialog clips text and the under-age action while suppressing horizontal overflow, making recovery impossible for that choice. F031 high: The custom modal fails at a narrow viewport. |
be-resilientoffline-and-installable | not-applicable | high | This is a media-streaming content site whose core playback is intrinsically online; installability/offline playback was not treated as a product requirement. |
be-resilientnetwork-and-http-failure-states | issues | high | A deliberately nonexistent URL silently redirected to the homepage with no 404 status message or retry/recovery state. F032 medium: HTTP failure states are replaced by an unexplained success-looking homepage. |
be-internationalisedlang-dir-and-logical-properties | issues | high | The probe confirms lang=it and ltr, but finds physical left/right properties and no logical inline/block properties in accessible CSS. F033 medium: The Italian document language is correct, but layout CSS is not writing-mode resilient. |
be-internationalisedlocale-aware-data | issues | high | Italian pages display values such as 35.8K and 2.3M using an English decimal point rather than locale-aware formatting. F034 medium: Rendered numeric abbreviations do not follow Italian formatting. |
be-internationalisedtime-zone-correctness | not-applicable | high | No event scheduling, wall-clock times, or time-zone-sensitive data appeared in the representative anonymous paths. |
be-trustworthyno-dark-patterns | pass | high | Age and consent choices are explicit; essential-only is presented alongside accept-all and advertisements are labelled. |
be-trustworthyhumane-error-handling | pass | high | The sampled search form has no required fields and does not present premature invalid states. |
be-trustworthytrustworthy-input-assistance | pass | high | Sign-in fields use autocomplete=email and autocomplete=current-password, while search is intentionally autocomplete=off. |
be-trustworthysafe-commercial-and-account-flows | not-applicable | high | Purchase, subscription, cancellation, and authenticated account-management actions are outside the representative anonymous browsing flow; only sign-in entry was inspected. |
be-sustainableoptimised-assets | issues | high | Thirty-three of 37 images lack srcset, 18 use legacy formats, and Lighthouse estimates 722 KiB image-delivery savings. F035 high: Image delivery wastes bytes and responsive opportunities. |
be-sustainableno-wasteful-work | issues | high | The page makes 170 requests, including 37 fetch/XHR calls and analytics before consent; Lighthouse reports unused code and 2.1 s main-thread work. F036 medium: Initial work includes avoidable analytics and duplicated payloads. |
be-sustainablethird-party-and-media-budget | issues | high | Third parties account for 99 requests and 2.06 MB, including about 1.01 MB from TrafficJunky creatives and 302 KB from Google Tag Manager. F037 high: Third-party and advertising resources consume a disproportionate share of the initial load. |
be-agent-readystructured-agent-capabilities | not-applicable | high | No safe transactional capability for agents was identified as necessary for the anonymous adult-media browsing experience. |
be-agent-readyon-device-inference | not-applicable | high | No summarisation or language-model task was identified that would materially improve the sampled core experience. |
be-memory-efficientno-leak-under-repeated-interaction | pass | high | After 20 language-menu toggles, DOM nodes stayed at 1,467 and used JS heap fell from 25.6 MB to 21.4 MB. |
be-memory-efficientbounded-footprint | pass | high | The settled page used about 36 MB heap with 1,470 DOM elements, proportionate to a media grid and overlays. |
be-memory-efficientno-detached-dom-or-unbounded-listeners | pass | high | Repeated menu toggles left DOM count unchanged and the heap summaries exposed no Detached constructor population. |
Provenance
Canonical report: results/atomic/reports/0932-it_pornhub_com.json
Report SHA-256: c169409c504f85f9ccf211fab0474721cee46c24b5f06a9050b777f4f7f9a040
Local retained report: runs/2026-07-17T17-27-24-856Z/atomic-reports/it_pornhub_com/2026-07-23T23-19-44-900Z/report.json
Local evidence root: runs/2026-07-17T17-27-24-856Z/atomic-reports/it_pornhub_com/2026-07-23T23-19-44-900Z
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.