Manifest position 169 · CrUX rank bucket 1000

https://fr.pornhub.com

Coverage complete

Coverage-complete audit of the mandatory age gate plus representative underlying homepage, listing/search/category DOM, video detail, and failure route. Explicit-content screenshots after entry were intentionally not retained; structural probes covered those templates.

Attempts
1 / 3
Judged checks
58 / 58
Blocked
0
Not run
0
This report has no published overall score. Blocked and not-run checks are not passes. A coverage-complete report means every check has a judged outcome; it does not mean every check passed.

All 58 atomic check outcomes

Principle / checkStatusConfidenceEvidence or reason
respect-user-preferences
respects-color-scheme
passhighThe age gate is already dark, remains legible under prefers-color-scheme: dark, and does not flash a light surface.
respect-user-preferences
respects-reduced-motion
passhighWith prefers-reduced-motion: reduce active, document.getAnimations() returned zero running animations.
respect-user-preferences
respects-contrast
passhighUnder forced-colors: active and prefers-contrast: more, text, links, borders, and both age-choice buttons remain clearly visible.
implement-natural-interactions
view-transitions
issueshighNo view-transition rules were found on the age-gate state or representative page templates; state changes use legacy immediate swaps.
F02 low: State changes do not use View Transitions
implement-natural-interactions
scroll-driven-animations
not-applicablehighNo scroll-linked animation or scrollytelling surface was observed, so there is no scroll-linked behavior to implement declaratively.
implement-natural-interactions
physical-gestures
not-applicablehighThe tested browse, search, category, age-gate, and detail journeys expose no custom swipe, pull, or gesture-driven interaction.
provide-guided-navigation
scroll-state-aware-chrome
issuesmediumThe long listing surface has no scroll-state queries or progress/scroll affordance; chrome remains static.
F03 low: Long listings lack scroll-state-aware navigation
provide-guided-navigation
anchored-positioning
not-applicablemediumNo tooltip or edge-attached popover requiring anchor positioning was available in the tested unauthenticated journey.
provide-guided-navigation
directs-attention
passmediumThe mandatory gate uses a central heading, explanatory copy, and two clearly ordered choices; global navigation labels are explicit.
maximize-content-reduce-noise
no-intrusive-interruptions
passhighThe full-screen age gate is legally and contextually necessary for an adult service, clearly explains its purpose, and offers enter and exit actions.
maximize-content-reduce-noise
semantic-dismissible-primitives
issueshighThe mandatory modal is an ad-hoc DIV with role=dialog rather than a native <dialog>; no native dialog element is present.
F04 medium: Mandatory modal uses a custom DIV
maximize-content-reduce-noise
reduced-chrome
passhighThe gate is visually spare: one message, two primary choices, and supporting legal links without competing decoration.
adapt-to-the-form-factor
responsive-no-horizontal-scroll
issueshighThe mobile screenshot visibly clips the 780px fixed dialog and the second age-choice button; content extends beyond the viewport even though root overflow is suppressed.
F05 critical: Age gate is clipped on mobile
adapt-to-the-form-factor
component-level-responsiveness
issuesmediumNo @container rules were found across reused listing/card templates; responsiveness is viewport-only.
F06 low: Reusable cards do not use component-level responsiveness
adapt-to-the-form-factor
input-modality-aware
issueshighFocusing the first reachable control produced outline:none and box-shadow:none; numerous text controls are only 15–22px high.
F07 high: Keyboard focus is invisible and targets are cramped
support-core-task-success
clear-purpose-and-primary-action
passhighThe gate states that this is an adults-only site and presents explicit enter and exit choices.
support-core-task-success
primary-flow-completion
issueshighAt 360px the required entry flow is clipped horizontally and the under-18 exit action is largely off-screen, obstructing the first mandatory step.
F05 critical: Age gate is clipped on mobile
support-core-task-success
clear-system-state-and-recovery
passmediumThe access state is explicit and reversible through enter/exit actions; an invalid path returns users to the guarded homepage rather than a blank shell.
be-fast-and-stable
good-core-web-vitals
issueshighLighthouse measured LCP 4.4s (poor) and TTI 7.8s; trace corroborated a 2.30s LCP on a faster run.
F08 high: LCP and interactivity miss the performance bar
be-fast-and-stable
visual-stability
issueshighMobile layout CLS was 0.102, just outside the good <=0.1 range; desktop measured 0.062 and Lighthouse 0.095.
F11 medium: Mobile CLS is just outside the good range
be-fast-and-stable
efficient-main-thread
passhighThe trace recorded zero long tasks and 0ms TBT; Lighthouse measured 42ms TBT, comfortably good despite 2.4s aggregate main-thread work.
be-fast-and-stable
efficient-resource-delivery
issueshighThe load transfers 6.4MB across 172 requests with seven parser-blocking stylesheets and multiple synchronous head scripts; Lighthouse estimates 450ms render-blocking savings.
F09 high: Critical path is oversized and render-blocked
be-fast-and-stable
trim-unused-and-duplicate-code
issueshighLighthouse estimates 286KiB unused JavaScript, 74KiB unused CSS, and 54KiB avoidable legacy JavaScript.
F10 medium: Large unused and legacy bundles ship on the gate
be-inclusive
names-roles-labels
issueshighaxe found 30 untitled iframes; the detail probe found 12/12 iframes untitled and one image without alt.
F12 high: Advertising/media frames lack accessible names
be-inclusive
sufficient-contrast
passmediumForced-colors preserved all gate controls and text; Lighthouse raised no scored color-contrast failure (axe marked contrast for manual review only).
be-inclusive
structure-and-focus
issueshighaxe found 116 regions outside landmarks, and focus can move to a background Cookie Notice link with no visible outline while the modal is active.
F13 high: Modal focus and landmark structure are broken
be-inclusive
legible-text
issueshighLarge text and legal copy are clipped at the right edge on mobile, requiring unavailable horizontal access and harming comprehension.
F05 critical: Age gate is clipped on mobile
be-inclusive
zoom-reflow-targets-and-media
issueshighLighthouse reports a viewport zoom restriction in the audited render; the 360px gate fails reflow, and the tested detail video exposes no caption/subtitle track.
F14 high: Reflow, zoom, and media alternatives are incomplete
follow-best-practices
no-console-errors
issueshighLighthouse scored errors-in-console at 0, confirming browser errors during load.
F15 medium: Console errors occur during normal load
follow-best-practices
sound-document-and-assets
issueshighDoctype and UTF-8 are valid, but three images lack dimensions and Lighthouse flags unsized images; 33/37 images lack responsive srcset.
F16 medium: Image markup is incompletely sized and responsive
follow-best-practices
browser-platform-hygiene
issueshighLighthouse found two deprecated-API warnings, inspector issues, legacy JS, and four BFCache failure reasons.
F17 medium: Deprecated APIs and BFCache blockers remain
be-discoverable
title-and-description
issueshighBoth entry and video detail use the generic title “Pornhub”; no meta description is present.
F18 high: Page titles are generic and descriptions missing
be-discoverable
crawlable-and-mobile-friendly
issueshighLighthouse found non-crawlable links and an invalid robots.txt; 30 homepage anchors have empty or javascript: href values.
F19 high: Links and robots endpoint are not crawler-safe
be-discoverable
canonical-and-indexing-signals
issueshighPages ship noindex,nofollow, the detail canonical points to the homepage, /robots.txt redirects to HTML, and /sitemap.xml is a 404.
F20 high: Indexing signals contradict public detail pages
be-discoverable
structured-and-shareable-metadata
issueshighNo Open Graph tags or JSON-LD were present, including on a concrete video detail page.
F21 medium: Detail pages lack structured and social metadata
be-private-and-secure
secure-transport-and-headers
issueshighHTTPS and HSTS are present, but CSP and nosniff are missing; cookie rp is not Secure and all seven cookies use SameSite=None.
F22 high: Transport is HTTPS but key protections and cookie flags are weak
be-private-and-secure
data-minimisation-and-third-parties
issueshigh101/172 requests and 2.39MB are third-party; active Google Tag Manager/DoubleClick tracking and TrafficJunky advertising are present on the age gate.
F23 high: Tracking starts before the user enters
be-private-and-secure
in-context-permissions-and-modern-auth
passmediumNo permission prompt appeared on load; the delivered UI includes passkey continuation and passkey.js support for sign-in.
be-private-and-secure
defensive-browser-policies
issueshighHSTS and SAMEORIGIN are configured, but CSP/frame-ancestors, Referrer-Policy, Permissions-Policy, and nosniff are absent.
F24 medium: Defensive browser policies are incomplete
be-resilient
progressive-enhancement
issueshighOnly 29% of rendered content tokens survive in raw HTML and the crawler screenshot is entirely blank, so core guarded content is not usable without JavaScript.
F25 high: No-JavaScript crawler view is blank
be-resilient
resilient-runtime-behaviour
issueshighThe mandatory dialog is fixed at 780px and cut off in the 360px runtime, including a primary exit control.
F26 high: Mandatory runtime UI is cut off at narrow widths
be-resilient
offline-and-installable
not-applicablehighThis streaming media service is intrinsically online; no offline/installable intent is declared, so PWA installability is not required.
be-resilient
network-and-http-failure-states
issuesmediumA deliberately invalid path silently redirects to the guarded homepage instead of presenting a clear 404 explanation or recovery choices.
F27 medium: Invalid routes fail silently
be-internationalised
lang-dir-and-logical-properties
passhighThe French host declares html lang=fr and the gate offers an accessible language selector with many localized choices; default LTR is appropriate.
be-internationalised
locale-aware-data
not-applicablemediumThe tested guarded entry and browsing metadata exposed no dates, currencies, or locale-sensitive numeric inputs requiring formatting judgement.
be-internationalised
time-zone-correctness
not-applicablehighNo scheduling, event, deadline, or user-entered time-zone surface appears in the tested journey.
be-trustworthy
no-dark-patterns
passhighThe age gate states its purpose plainly and offers symmetric enter/exit choices; cookie controls include an essential-only option without confirmshaming.
be-trustworthy
humane-error-handling
not-applicablemediumThe representative unauthenticated browse flow has only a search field and no required data-entry form with validation/error states to exercise.
be-trustworthy
trustworthy-input-assistance
passmediumThe search input has an accessible name, sensible text type, and no obstruction to native input; account/payment forms were not part of the public browse flow.
be-trustworthy
safe-commercial-and-account-flows
not-applicablemediumNo checkout, subscription purchase, consent change, or authenticated account-management flow was entered; the representative task was public age-gated browsing.
be-sustainable
optimised-assets
issueshigh22/37 images use legacy formats, 33 lack srcset, and Lighthouse estimates 510KiB image savings.
F28 medium: Images miss modern responsive delivery
be-sustainable
no-wasteful-work
issueshighThe guarded first view still makes 172 requests, including 38 fetch/XHR requests, before the user enters; this is disproportionate background work for a blocking gate.
F29 high: The blocking age gate still loads the full application
be-sustainable
third-party-and-media-budget
issueshighThird parties account for 101 requests and 2.39MB, including 1.17MB from TrafficJunky advertising before age confirmation.
F30 high: Third-party budget is disproportionate on first view
be-agent-ready
structured-agent-capabilities
not-applicablehighNo configuration or site signal declares an agent-facing capability; this emerging check is not required for the guarded adult-media browse experience.
be-agent-ready
on-device-inference
not-applicablehighNo user task in the audited flow calls for on-device inference, summarisation, or a built-in language model.
be-memory-efficient
no-leak-under-repeated-interaction
passmediumAfter ten representative gate-control toggles, heap self size fell from 38.53MB to 37.73MB; node count changed by only 0.22%, with no unbounded retained growth signal.
be-memory-efficient
bounded-footprint
passmediumThe loaded gate and underlying listing used about 28MB live JS heap, 38.5MB snapshot self-size, and 1,426 DOM elements, proportionate for this media listing.
be-memory-efficient
no-detached-dom-or-unbounded-listeners
passmediumNo Detached* constructor appears in either top-constructor summary; total heap shrank and closure count was effectively flat (52,365 to 52,374).

Provenance

Canonical report: results/atomic/reports/0169-fr_pornhub_com.json
Report SHA-256: 54ee9b2b2ed04208b910819ac336031ea81e533cee99a705094533ac42ed8e93
Local retained report: runs/2026-07-17T17-27-24-856Z/atomic-reports/fr_pornhub_com/2026-07-18T21-57-10-231Z/report.json
Local evidence root: runs/2026-07-17T17-27-24-856Z/atomic-reports/fr_pornhub_com/2026-07-18T21-57-10-231Z
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.