Manifest position 16 · CrUX rank bucket 1000
https://letsporn.com
Coverage complete
Coverage-complete remote audit of seven representative paths. Playback and personal age verification were intentionally not performed; the audited product surface is the pre-verification catalog and handoff.
All 58 atomic check outcomes
| Principle / check | Status | Confidence | Evidence or reason |
|---|---|---|---|
respect-user-preferencesrespects-color-scheme | issues | medium | The preference probe confirmed prefers-color-scheme: dark, but the page declares color-scheme: normal and the light and dark captures are visually identical; body remains rgb(0,0,0). F01 low: The fixed dark palette does not respond to the user color-scheme preference. |
respect-user-preferencesrespects-reduced-motion | pass | high | Preference probe reported no active animations under reduce; no CSS media rules or load motion were observed. |
respect-user-preferencesrespects-contrast | issues | high | Lighthouse accessibility scored 0.75 and its color-contrast audit found one failing element. F02 medium: Some foreground/background combinations fail minimum contrast. |
implement-natural-interactionsview-transitions | pass | high | DOM/CSS inspection found no View Transition API usage, but MPA route changes keep stable global navigation and do not use disorienting custom transitions. |
implement-natural-interactionsscroll-driven-animations | pass | high | No scroll-linked animation or main-thread scroll animation was present; long pages use native scrolling and layout reported no long tasks. |
implement-natural-interactionsphysical-gestures | pass | high | The content grid and horizontal navigation use native touch scrolling; no custom pointer gesture traps were found. |
provide-guided-navigationscroll-state-aware-chrome | pass | high | The long mobile listing retains clear section headings and native scroll behavior without obstructive sticky chrome. |
provide-guided-navigationanchored-positioning | pass | medium | No visible tooltip/popover placement failure occurred in entry or mobile states; overlay concerns are separately recorded against semantic primitives. |
provide-guided-navigationdirects-attention | pass | high | First viewport has one clear age action and strong content heading; category pills and See More links establish hierarchy. |
maximize-content-reduce-noiseno-intrusive-interruptions | pass | high | The legally required age prompt is an inline banner, not a full-viewport modal; browsing structure remains visible and thumbnails are blurred. |
maximize-content-reduce-noisesemantic-dismissible-primitives | issues | medium | DOM inspection found #favoriteModal as a div role=dialog with nested div role=document, data-backdrop=static and a close button with no accessible name. F03 medium: Dismissible overlays use custom Bootstrap-style divs rather than native dialog/popover semantics. |
maximize-content-reduce-noisereduced-chrome | pass | high | Screenshots show most post-banner viewport area dedicated to content cards rather than decorative chrome. |
adapt-to-the-form-factorresponsive-no-horizontal-scroll | pass | high | All four tested 360px templates reported scrollWidth=clientWidth=360 and zero horizontal overflow. |
adapt-to-the-form-factorcomponent-level-responsiveness | pass | high | Home, category, channel and detail templates all reflowed to 360px with no overflow; the DOM uses responsive image sizes even without container queries. |
adapt-to-the-form-factorinput-modality-aware | issues | high | The focus probe focused the visible logo link and computed outline was none (0px) with no box shadow; several icon buttons also lack names. F04 high: Keyboard focus is not visibly indicated on key controls. |
support-core-task-successclear-purpose-and-primary-action | pass | high | The page identifies the catalog, presents a prominent legally required Get started action, and labels Explore/Charts/Channels/Pornstars/Categories. |
support-core-task-successprimary-flow-completion | pass | high | Search results, category, channel and detail URLs all loaded successfully; video playback correctly remains gated behind the explicit age-verification action. |
support-core-task-successclear-system-state-and-recovery | pass | high | An unknown route returned HTTP 404 and rendered a branded PAGE NOT FOUND state with working navigation and recovery content. |
be-fast-and-stablegood-core-web-vitals | issues | high | Lighthouse measured LCP at 4.4s (score 0.40), despite the unthrottled trace reporting 663ms; the mobile lab result exceeds the 2.5s good threshold. F05 high: Mobile Largest Contentful Paint is slow. |
be-fast-and-stablevisual-stability | pass | high | Layout primitives reported CLS 0 with no shifts on homepage, category, channel and detail mobile templates. |
be-fast-and-stableefficient-main-thread | pass | high | Trace reported zero long tasks and 0ms total blocking time; Lighthouse TBT was 22ms. |
be-fast-and-stableefficient-resource-delivery | issues | high | HAR recorded 49 requests and 1,339,517 transferred bytes; Lighthouse reported an 879ms longest dependency chain. Parser-inserted jQuery and all.min.js lack async/defer, although they are placed near the end of body. F06 medium: Resource delivery has a long dependency chain and avoidable weight. |
be-fast-and-stabletrim-unused-and-duplicate-code | issues | high | Lighthouse estimated 204 KiB unused JavaScript: 71 KiB gtag, 63 KiB GTM, 53 KiB Yandex and 21 KiB first-party JS; it also estimated 11 KiB unused CSS. F07 medium: The page ships substantial unused JavaScript and CSS. |
be-inclusivenames-roles-labels | issues | high | Lighthouse found 52 buttons without accessible names; the DOM probe independently counted 55 unlabeled buttons, including search, account, menu, favorite and close controls. F08 high: Dozens of icon buttons have no accessible name. |
be-inclusivesufficient-contrast | issues | high | Lighthouse accessibility scored 0.75 and its color-contrast audit found one failing element. F02 medium: Some foreground/background combinations fail minimum contrast. |
be-inclusivestructure-and-focus | issues | high | Lighthouse failed landmark-one-main; the focus probe found no visible outline, weakening keyboard orientation despite otherwise coherent h1/h2 ordering. F09 high: The page lacks a main landmark and consistent visible focus structure. |
be-inclusivelegible-text | pass | high | Desktop and mobile screenshots show readable headings/body copy with coherent spacing and no text clipping. |
be-inclusivezoom-reflow-targets-and-media | issues | high | Lighthouse found 24 target-size failures; the 360px probe measured top icon controls at 20x20, Get started at 32px high, pills at 34px high and several links at 18px high. F10 medium: Many mobile touch targets are too small or tightly spaced. |
follow-best-practicesno-console-errors | pass | high | Lighthouse errors-in-console audit passed with no items. |
follow-best-practicessound-document-and-assets | issues | high | The image primitive found 5 images without dimensions and 2 without alt text among 100 images. F11 low: Some images omit intrinsic dimensions and alt text. |
follow-best-practicesbrowser-platform-hygiene | issues | medium | Lighthouse best-practices scored 0.77, found an Inspector issue, and reported five reasons preventing back/forward cache restoration. F12 medium: Browser platform hygiene is weakened by bfcache and DevTools issues. |
be-discoverabletitle-and-description | pass | high | Home and detail probes found distinct non-empty titles and descriptions. |
be-discoverablecrawlable-and-mobile-friendly | issues | high | Lighthouse SEO found four links without descriptive text, while raw HTML coverage was otherwise 100%. F13 low: Several crawler-visible links have non-descriptive text. |
be-discoverablecanonical-and-indexing-signals | pass | high | Pages returned 200, expose canonical/hreflang signals, robots.txt allows public templates, and sitemap.xml is populated. |
be-discoverablestructured-and-shareable-metadata | issues | high | Home and detail probes found no og:* metadata. The detail page does provide useful VideoObject JSON-LD, title, description and canonical URL. F14 low: Pages omit Open Graph/social preview metadata. |
be-private-and-securesecure-transport-and-headers | issues | high | Headers show no CSP, Referrer-Policy or Permissions-Policy. Strict-Transport-Security is sent with max-age=0, which removes HSTS protection rather than enabling it. Cookie audit found PHPSESSID, kt_tcookie, kt_is_visited and Google Analytics cookies without Secure; PHPSESSID also lacks HttpOnly, and several cookies use SameSite=None. F15 high: Transport and browser security policies are incomplete, and HSTS is effectively disabled. F16 high: Session and analytics cookies lack basic protections. |
be-private-and-securedata-minimisation-and-third-parties | issues | high | On initial load the tracker probe contacted five third-party origins including Google Tag Manager, Google Analytics and Yandex; HAR attributed about 379 KiB to GTM/Yandex scripts and cookies included 365-400 day identifiers. F17 high: Tracking begins before age verification or any visible consent choice. |
be-private-and-securein-context-permissions-and-modern-auth | pass | high | No permission prompt fired on load; the age-verification action is explicit and external rather than a surprise browser permission request. |
be-private-and-securedefensive-browser-policies | issues | high | Headers show no CSP, Referrer-Policy or Permissions-Policy. Strict-Transport-Security is sent with max-age=0, which removes HSTS protection rather than enabling it. Cookie audit found PHPSESSID, kt_tcookie, kt_is_visited and Google Analytics cookies without Secure; PHPSESSID also lacks HttpOnly, and several cookies use SameSite=None. F15 high: Transport and browser security policies are incomplete, and HSTS is effectively disabled. F16 high: Session and analytics cookies lack basic protections. |
be-resilientprogressive-enhancement | pass | high | Discoverability comparison found 100% rendered-word coverage in 227KB raw HTML, with title, H1 and description present and no JS shell. |
be-resilientresilient-runtime-behaviour | pass | high | Server-rendered navigation/search templates load independently and mobile menus/search controls are present without an SPA runtime dependency. |
be-resilientoffline-and-installable | not-applicable | high | The catalog is a public MPA and does not advertise an offline or installable experience; the linked manifest is favicon metadata with no app name/start URL and there is no service-worker registration. |
be-resilientnetwork-and-http-failure-states | pass | high | The tested unknown route returned a real HTTP 404 and rendered a branded recovery page with navigation and trending links. |
be-internationalisedlang-dir-and-logical-properties | issues | high | The German page correctly sets lang=de and translates navigation/dates, but its prominent legal age banner still reads “Verify your age…”, “It’s fast…” and “Get started” in English. F19 medium: The German locale leaves the age-verification call to action in English. |
be-internationalisedlocale-aware-data | pass | high | German route sets lang=de and localizes relative dates and view-count labels (for example “vor 1 Woche”, “30K aufrufe”). |
be-internationalisedtime-zone-correctness | not-applicable | high | No scheduled events, user-entered times, or time-zone-sensitive coordination surfaced on the representative templates. |
be-trustworthyno-dark-patterns | issues | high | The banner says “we don’t store personal data,” yet the initial page sets persistent Google/Yandex identifiers and sends analytics requests before the visitor starts age verification. F22 high: The age banner’s privacy reassurance conflicts with observed tracking. |
be-trustworthyhumane-error-handling | pass | high | The only local form is search; no premature validation is applied, and the dedicated 404 state clearly identifies failure and offers recovery links. |
be-trustworthytrustworthy-input-assistance | not-applicable | high | The only pre-verification input is a simple search field; no identity, address, payment or profile fields are exposed. |
be-trustworthysafe-commercial-and-account-flows | not-applicable | high | No checkout, subscription, account-management or payment flow is exposed in the audited pre-verification surface; regulated age verification is external and is not an account purchase flow. |
be-sustainableoptimised-assets | issues | high | Lighthouse estimated 420 KiB image savings. The image probe found 15 oversized images, 59 without srcset and all 100 reported img URLs in legacy JPEG/PNG formats. F20 medium: Image delivery wastes hundreds of kilobytes. |
be-sustainableno-wasteful-work | issues | high | GTM and Yandex scripts transfer about 379 KiB before interaction; Yandex performs multiple cookie-sync redirects and Lighthouse identifies most analytics code as unused on load. F21 medium: Analytics and background tracking consume a disproportionate share of initial work. |
be-sustainablethird-party-and-media-budget | issues | high | Lighthouse estimated 420 KiB image savings. The image probe found 15 oversized images, 59 without srcset and all 100 reported img URLs in legacy JPEG/PNG formats. GTM and Yandex scripts transfer about 379 KiB before interaction; Yandex performs multiple cookie-sync redirects and Lighthouse identifies most analytics code as unused on load. F20 medium: Image delivery wastes hundreds of kilobytes. F21 medium: Analytics and background tracking consume a disproportionate share of initial work. |
be-agent-readystructured-agent-capabilities | not-applicable | high | No developer intent or user-facing agent workflow is advertised; this is a conventional read-only media catalog, so WebMCP tool exposure is not required. |
be-agent-readyon-device-inference | not-applicable | high | The site offers no summarisation, generation or other inference feature for which built-in on-device AI would be applicable. |
be-memory-efficientno-leak-under-repeated-interaction | pass | medium | After 10 menu/search open-close cycles, heap grew from 12.21MB to 13.73MB, largely code/native initialization; closures rose only 1.1% and no Detached* constructor entered the top set. Separate-browser variance lowers confidence but provides no direct leak signal. |
be-memory-efficientbounded-footprint | pass | high | Heap summaries measured a 12.21MB baseline and 13.73MB post-interaction footprint, proportionate for a media catalog with analytics. |
be-memory-efficientno-detached-dom-or-unbounded-listeners | pass | medium | Compared summaries showed no Detached* constructor in the top retained populations and only 115 additional closures after repeated controls. |
Provenance
Canonical report: results/atomic/reports/0016-letsporn_com.json
Report SHA-256: a85ffa51337e6011c706b521e53de44b84acbe4a705f4716f19a3657251fe9c0
Local retained report: runs/2026-07-17T17-27-24-856Z/atomic-reports/letsporn_com/2026-07-17T21-10-21-378Z/report.json
Local evidence root: runs/2026-07-17T17-27-24-856Z/atomic-reports/letsporn_com/2026-07-17T21-10-21-378Z
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.