html.client-shell |
Groups missing initial content and metadata on an empty JavaScript module shell; independent findings remain. |
links.syntax |
Errors for broken URL syntax/protocols; warnings for browser repairs and suspicious spelling |
links.declared |
Errors for rendered destinations missing from the project URL registry |
links.behavior |
Warnings for crawlability, mixed content, ineffective downloads and full same-page fragment targets |
links.fragments |
Warnings: linked same-document targets blocked by explicit hidden on themselves/ancestors; one per target with link/blocker locations. Native closed details and hidden=until-found remain allowed. |
html.syntax |
Errors: malformed attributes/tokens, duplicate attributes, invalid head content, structural browser repairs |
html.document |
Errors: missing/legacy doctype, invalid/duplicate/late charset; missing charset warns |
html.content-model |
Errors: supported restricted containers and invalid interactive/phrasing nesting |
html.ids |
Errors: duplicate/empty/whitespace IDs in the active document |
html.references |
Errors: missing static ID references; unresolved fragment navigation warns |
html.json |
Errors: invalid JSON, JSON-LD, import maps or speculation-rules JSON |
jsonld.block |
Errors: handwritten/extra JSON-LD blocks in projects; one optional generated block |
jsonld.structure |
Errors: invalid JSON-LD expansion/keyword shapes, bounded input limits or processor failure |
jsonld.context |
Warnings: expansion coverage skipped for an unbundled remote context; no network requests |
jsonld.dropped |
Warnings: undefined properties discarded by expansion or no resulting node data |
commerce.checkout |
Errors: declared checkout is not HTTPS/public-buyer navigation or its standard-host query is malformed. Warnings: test/session destinations, suspicious hosted paths, unsupported/repeated/invalid parameters, conflicting prefills and form/download handoffs. Custom domains are preserved. |
commerce.discovery |
Warnings: optional declared offer has no initially usable native checkout anchor; a fixed price (cents or whole units) does not appear with its currency token in initial visible text; fixed-price snapshot has no identifiable initial Schema.org Offer. Explicit HTML state is checked; CSS/JS visibility requires browser review. |
commerce.structured-data |
Errors: negative Offer price, exact identifiable same-currency config mismatch, non-public/non-HTTPS potential BuyAction target. Warnings: incomplete/ambiguous price facts, alternate currency, absent/different action target. Offline expanded aliases and same-graph ID references are supported; ambiguous identities/context/precision are not guessed. |
commerce.secrets |
Errors: recognizable Stripe sk_/rk_/whsec_ secret shapes in config, final HTML or emitted text sidecars, with redacted values. Public pk_ keys/object IDs are allowed; this is not a general credential/PII scanner. |
commerce.legal |
Warnings: a page with declared offers or a Stripe checkout link but no visible privacy-policy link; on lang="de…" pages also no Impressum link. |
seo.metadata |
Errors: duplicate/out-of-head HTML titles; missing/duplicate/out-of-head canonical, non-public/non-HTTPS canonical, any query/fragment, or spelling different from configured url. Missing title/description/lang, duplicate/misplaced description and unrecognized BCP 47 language warn. SVG titles and inert templates are excluded. |
seo.indexability |
Warnings: explicit noindex/none and page-wide nofollow, including Googlebot News; restrictions in body still count. |
seo.snippets |
Warnings: nosnippet and nonnegative max-snippet limits for recognized robots names; -1/unknown/malformed directives remain untouched. Repeated limits report the most restrictive value per tag. |
seo.social |
Errors: invalid/non-absolute/data/local/private preview-identity or image URLs. Warnings: missing OG core fields, misplaced/wrong-attribute/empty metadata, repeated scalar fields and page identity mismatch. Public-state query variants, OG image arrays/scoped properties and different listing wording/images are allowed. |
sharing.discovery |
Errors: repeated/empty known scalar platform fields, invalid public audio/video/stream/oEmbed URLs or nonpositive media dimensions. Warnings: misplaced/wrong-attribute declarations, metadata after 32 KiB, incomplete Slack label/data pairs, unrecognized/legacy X card types and ineffective meta CSP frame-ancestors. Arrays and optional unused platforms remain allowed. |
sharing.media |
Warnings: missing per-image OG alt/dimensions, missing twitter:image:alt or dimension hints disagreeing with inspected sidecars. Image arrays and deliberately empty alternatives remain allowed; remote media is not fetched. |
sharing.x-player |
Errors for a declared player missing HTTPS player/poster or positive integer dimensions; warnings for missing title/description fallback or a player target without card=player. Query/anchor launch state is preserved; host framing/client behavior is not certified. |
sharing.discord |
Errors: duplicate/misplaced/ill-typed declarations; unrelated linked-JSON host; malformed/duplicate-key JSON, >3,000 encoded bytes, wrong root/nesting/known parent shapes, unsupported types/button keys/styles, missing names/URLs, >40 components or >10 total gallery items. Linked emitted JSON is inspected; remote JSON and absent native return button warn. |
sharing.farcaster |
Errors: malformed/duplicate-key MiniAppEmbed JSON, wrong version/button/action, invalid HTTPS targets, image URL >1,024 characters or known emitted image format/byte/dimension violations. Uninspected/uncertain media warns. Optional inherited action URL, launch_frame and legacy fc:frame=vNext remain supported. |
sharing.snapchat |
Errors: invalid public sticker URL or known emitted sticker format/byte/dimension violations. Remote/uninspectable media warns. Transparency/animation and native-client tapping need review. |
seo.headings |
Warnings: missing visible h1, unreadable headings or skipped levels; hidden/inert headings do not establish the hierarchy. Multiple h1 remains allowed. |
seo.content |
Warnings: absent/multiple visible main landmarks, no detectable initial primary text, or all such text excluded by supported data-nosnippet containers. No length/quality score. |
a11y.images |
Warnings: absent alt; alt that is a file name or a generic word (image, photo, Bild…); one alt text on several different image sources. Intentional alt="" is allowed. |
a11y.controls |
Warnings: unnamed native/custom controls, summaries, dialogs, frames and supported informative roles; native labels, ARIA references, image alternatives and SVG titles considered. |
a11y.relationships |
Errors: known non-labelable for targets, extra/mismatched controls inside labels, wrong form/list/popover/table-header target types. Missing IDs belong to html.references; form-associated custom elements are not rejected. |
a11y.aria |
Warnings: focused ARIA token/numeric grammar, ranges and missing checked/slider/combobox state. Native state/defaults, optional empty states, unknown/new attributes and indeterminate progress remain allowed. |
a11y.focus |
Warnings: invalid/positive tabindex, duplicate autofocus within a scope, tab candidates under aria-hidden, custom standalone controls without a static focus path, and non-semantic click targets. Inactive HTML, disabled fieldsets/legend exceptions, managed composites and delegated container handlers are distinguished. |
a11y.link-purpose |
Warnings: two or more visible links with one accessible name and different href values. |
ux.forms |
Warnings: ambiguous/invalid form-button types and malformed numeric bounds/steps/starting values; native invokers and explicit form owners are recognized. |
ux.disclosures |
Warning: missing authored summary. Errors: multiple/misplaced native summaries or built-in dialog/popover commands targeting the wrong element type. |
ux.media |
Warnings: media requests autoplay without initial mute; actual audio, duration and playback policy need browser review. |
ux.hidden-start |
Warning: the first visible h1 or an ancestor starts at opacity 0, hidden visibility or an animation whose first keyframe is invisible; data-design-reason exempts. |
ux.reduced-motion |
Warning: moving keyframes, scroll-driven animation, smooth scrolling, transform transitions ≥400 ms or scripted transform animations without any prefers-reduced-motion query in styles or scripts. Opacity/color animation is not motion. |
perf.html-size |
Warning at 1,800,000 bytes; error above 2,000,000 uncompressed bytes |
perf.inline-assets |
Warnings: >32 KiB embedded contributions and embedded srcset candidates |
perf.images |
Warnings: unreserved image dimensions, conflicting lazy/high priority, substantial lazy inline images |
perf.image-assets |
Warnings: bounded metadata failures; sources >512 KiB, edges >4096 px or area >12 MP; >2× an unambiguous authored box on both axes. No guessed CSS slots or density-candidate comparisons. Source attribution follows packed URLs. |
perf.fonts |
Warnings: missing/invalid family/src/display/range, source-format mismatches, no known WOFF2 source, preload CORS/type/selection conflicts and >2 font preloads. Typography choices are preserved. |
perf.font-assets |
Warnings: bounded container failures/inspection limits; >128 KiB per retained font, >256 KiB total, >8 MiB declared SFNT size. No glyph/payload sanitization or proven download count. |
perf.viewport |
Warnings: missing/duplicate viewport or disabled zoom |
perf.budgets |
Warnings: total inline + file CSS >20 KiB, JS >50 KiB, images >3000 KiB, video >8000 KiB, first-section media >400 KiB, >1,500 elements, depth >32 |
design.media |
Warnings: consecutive paragraphs exceed 300 words without a heading, list, table, figure, blockquote, details, form or media between them; immersive concepts also need media in each content section. Main headings group content when sections are absent. Templates, nav, footer and hidden text are excluded. Legal pages can disable the rule with build.validation.rules. |
perf.video |
Warnings: eager video below the first content section or autoplay missing playsinline; ux.media checks muted. Drop autoplay below the first section; use muted playsinline, a poster, preload=none and IntersectionObserver. |
design.ground |
Errors: warm-light backgrounds on significant visible surfaces (below 256 px² or a lone known dimension ≤ 4 px is excluded; hidden, clipped and off-screen elements are excluded), paper/parchment images, SVG noise and ruled full-cover textures, torn/zigzag/perforated gradient edges in backgrounds or masks. No design-reason exemption. |
design.palette |
Warnings: stock Tailwind indigo/violet/purple accents (v3 hex and v4 OKLCH) and Bootstrap primary blue. Error: gradients with a violet stop whose colored stops are all violet/blue/pink. Unused custom properties stay quiet; colors referenced through var(), including indirect references, count. Rainbow/iridescent gradients and lone terracotta stay quiet. |
design.gradient-text |
Warnings: text filled by a gradient through background-clip:text (CSS or Tailwind classes). Image-filled text is not flagged. |
design.glow |
Warnings: two or more heavily blurred (≥24px) round or radial decorative shapes; zero-offset colored glows on three or more elements. A single orb or glow only feeds design.defaults. |
design.eyebrows |
Warnings: a short uppercase label, tracked or small (or named eyebrow/kicker/overline), directly before an h1–h3. Labels containing digits or currency (time, step, price) only feed design.defaults. |
design.type |
Warnings: one stock sans (Inter, Roboto, Arial, system UI, Geist…) for the headline and body with no distinct heading face; an italic-serif or gradient accent word inside a longer headline. Roster display faces and color-only accents are weak. |
design.emoji |
Warnings: emoji (Emoji_Presentation) in headings, buttons, short links, summaries, labels, legends, table/definition headers or as list bullets; ✨ explained separately. Typographic ornaments, check marks, stars and body-copy emoji are allowed. |
design.hero |
Warnings: a pill or "New/Introducing/✨" badge before the first h1; the centered formula (badge + centered h1 + two actions). A merely centered hero is weak. |
design.cards |
Warnings: three or more structurally identical siblings, each led by an icon (svg/img/i/icon class) and a heading. Plain equal cards and 01/02/03 markers are weak; nav is excluded. |
design.stats |
Warnings: three or more sibling stat blocks with big round numbers (10k+, 99.9%, 50+). Plain number strips are weak; forms, tables and outputs are excluded. |
design.stripes |
Warnings: a 2–8px colored left/inline-start border as the only border on two or more surfaced boxes. Quotations, lists, table cells and diffs are excluded. |
design.glass |
Warnings: backdrop-filter: blur() on three or more elements. One or two floating layers only feed design.defaults. |
design.surfaces |
Warnings: Tailwind's default soft shadow geometry (or shadow-md…2xl with rounded classes) on three or more boxes. Uniform radius+shadow, pills everywhere and dot grids are weak. |
design.motion |
Warnings: scroll-reveal hooks (data-aos, reveal/fade-up classes…) on four or more blocks. Hover lift on many elements is weak; scroll timelines and bespoke motion are not judged. |
design.arrows |
Warnings: arrow glyphs ending at least half of four or more buttons/links. External ↗ links and links inside prose are excluded. |
design.chrome |
Warnings: four or more "A · B · C" meta strings; fake red/yellow/green window dots. Class names alone never trigger the dots check. |
design.mono |
Warnings: monospace on eight or more non-code labels/captions. Code, outputs, times, data, tables, form controls and SVG text are excluded; three to seven is weak. |
design.proof |
Warnings: generic "trusted by / as seen on / join 10,000+ teams" claims; placeholder image services (pravatar, randomuser, ui-avatars, picsum, placeholder hosts). "Most popular" badges and tilted 3D product mockups are weak. |
design.sections |
Warnings: four or more stock sections (how it works, testimonials, pricing, FAQ, logo strip, feature grid, stat strip). Three is weak. |
design.kit |
Warnings: four or more custom properties with exact shadcn/ui default theme values (slate/zinc HSL, v4 oklch neutrals); two or three are weak. |
design.defaults |
(A page without any imagery is one weak signal.) Warning: four or more distinct generator-default signals including at least one reported finding, or five weak ones; lists both groups and counts justified elements. Weak signals never warn alone. |
copy.tells |
Warnings: narrow stock phrases of generated copy (English and German), repeated not-just-but and it's-not-it's constructions (German nicht nur … sondern from three), and ≥4 em dashes above one per hundred words. Quotations, code and data-design-reason subtrees are exempt. |
copy.machine |
Warning: at least 150 words of page prose outside table and role=table/grid subtrees (blocks of 20+ words) match the profile AI-text detectors flag, estimated by internal/aitext from burstiness, punctuation, lexical diversity, compression against model-written text, repeated phrasing and model habits; the finding names the habits measured. |
copy.placeholder |
Warnings: lorem ipsum, TODO/TBD/FIXME (case-sensitive), "your … here" and [insert …] filler in text, alt, title and description metadata; after the starter page is replaced, the lfm init description, social alt text and share image. |
copy.actions |
Warnings: a link, button or summary whose entire name is a generic label (learn more, click here, get started, submit, mehr erfahren, absenden…); one finding per label. |
concept.fidelity |
Warnings, once the starter page is replaced: font families not declared in the Type table (var() tokens followed) or declared and unused; CSS colors outside the palette (tints and translucent black/white allowed); fewer distinct images than planned rows not marked Open; Copy Use: phrases missing and Avoid: phrases present outside quotations. |