187
Registered detectors
The detector inventory. This is not a claim that every detector measured your page.
Methodology · Sources and limits
Keep the detector inventory, the scoring subset and the measured page conditions separate.
187
The detector inventory. This is not a claim that every detector measured your page.
25
The subset eligible for scoring. A technical result does not describe search visibility.
Varies by scan
Only conditions actually measured belong in a scan’s evidence. Missing data stays unknown.
The other 162 detectors remain unscored observations. A measured result is not a Google ranking formula or an AI citation prediction.
The evidence chain
A captured page can expose a title, canonical declarations, robots directives and structured-data markup. The supported custom HTML repair starts with a specific observed noindex condition.
The robots.txt rules, Googlebot-specific directives and X-Robots-Tag are separate observations. Crawling permission and indexing instructions are not interchangeable.
A canonical declaration can be inspected alongside its target and conflicting declarations. It cannot establish Google’s selected canonical; that requires separate indexed URL inspection evidence.
A page may be excluded from search on purpose. The repair path asks the owner to confirm the intention before offering a supported edit or developer handoff.
The supported path is developer-assisted custom HTML. You or your developer publishes the edit; AuditLamp does not write to the site or provide a CMS plugin recipe.
A new capture checks the selected condition after the edit. A receipt records the inputs, times and measured scope. An unavailable capture remains unresolved.
A passed condition does not establish Google indexing, a selected canonical, ranking improvement or an AI citation.
Owned-property clicks, impressions and average position belong with their dates and filters. Returned queries can omit data. Average position is an average across impressions, not a numbered results page.
Connect an owned property on Full Report, Monitor or Agency. Earlier search evidence cannot be explained by a later page capture alone.
The comparison is not measured. No result URLs, competitor pages or ranking positions are supplied by a live search provider in this workflow.
A future comparison would need dated sources, preserved result URLs and stated page coverage. Missing data cannot support a claim about what a competing page lacks.
See the current scopeTwo separate records
A supported fresh-capture flow checks one condition after a change. Download the before and after evidence with its timestamps and scope.
A receipt may confirm the measured condition, find it still present or show an unresolved measurement. It does not certify the whole page.
Open repair workLater complete Search Console windows can describe observed changes under the same filters. Keep that record separate from the page receipt.
Missing or incomplete windows stay unknown. Even a later increase does not prove the edit caused it.
Open search evidenceWhat the method does not claim
A ranking probability would need calibration that this method does not have. It gives none.
An unavailable page or feed cannot be recorded as zero, a pass or proof that a feature is absent. Measured absence and missing evidence stay different.
A detector inventory is not a count of ranking signals. A passing condition does not establish search visibility, authority or a future Google decision.
The complete method · measured-checks-v2006
The full calculation, historical limits, dashboard measures and source-linked detector ledger remain available below.
For each distinct condition, count the captures that met it and divide by the captures where it could be measured. Average those condition fractions equally, multiply by 100 and round to a whole percentage. The report includes the numerator, denominator, captured URL, timestamp, input measurements and HTML hash. It also shows inspected pages separately from discovered URLs.
percentage = round(100 × mean(met captures / measured captures, per condition))
For example, if one condition is met on 1 of 2 inspected pages and a second is met on 1 of 1, their equal-condition mean is 75%. This is a descriptive calculation, not an estimate that the website is 75% secure or has a 75% chance of ranking. A title check shared by SEO and accessibility counts once in the overall calculation.
Missing inputs, failed probes and inapplicable elements are excluded from both numerator and denominator. No forms means no form-action result; a TLS timeout does not prove a bad certificate. Small samples stay small: a one-page scan does not certify the other discovered pages.
The number describes the measured subset. A 100% result can coexist with serious issues outside that subset. Review the actual findings and coverage rather than treating a high percentage as a clean bill of health. Attribute presence does not establish meaning, usability or standards conformance.
New reports do not use arbitrary ranking weights, half-credit warnings, AI/Local deductions, a 79 ceiling, or a 70/30 security blend. AEO, GEO, Local and privacy observations have no numeric grade until a defensible measurement contract exists. Model-generated writing assessments have no citation score.
Saved historical scores retain their original values. Their original method may not have been recorded. Each new report stores its engine and scoring versions. Score-history lines join only matching recorded methods and measured scopes; a release or broader scan must not masquerade as a ranking recovery.
The table below links the technical source for each scored condition. The implementation measures the narrower criterion stated beside that link. It does not claim to implement an entire standard. The unscored list includes content heuristics, optional markup checks and signals whose applicability or detection needs more validation.
Google lists crawl access, successful responses and indexable content among its technical requirements, while explicitly declining to guarantee indexing. Its AI-feature guidance does not establish an AEO score, a required passage length or a special llms.txt requirement. Technical requirements · AI-feature guidance
| Surface | Measurement and limit |
|---|---|
| Search Console | Owned-property clicks, impressions and average position for stated dates and filters. Returned queries can omit data; average position is not a fixed rank for every query. No conversion into an invented search score. Definitions |
| Traffic decline marker | Adjacent 14-day windows with observed daily data, at least 100 prior impressions and a decline of at least 50%. The chart marks the largest absolute qualifying loss. These are disclosed display thresholds, not a statistical test or diagnosis. Unreturned dates remain unknown. |
| Business Profile | Presence of returned profile fields, plus provider review counts and ratings. Optional fields are not legal or ranking requirements. Photos and attributes are unknown when the endpoint does not return them. Recent-review counts refer to the returned sample, up to 50 reviews. No weighted review score or local-ranking blend. Profile fields |
| Common Crawl graph | A link-graph measure from a dated external corpus, with its release, coverage and referring-domain counts. The harmonic-rank transformation is 100 × (1 − ln(rank) / ln(domain count)). It is AuditLamp's graph metric, not Google's internal PageRank or a calibrated ranking probability. A missing domain is unknown, not zero authority. |
| Internal page power | A calculation over the inspected site's link graph: damping 0.85, 40 iterations, scaled to its largest value. It describes that sampled graph only. Changing the crawl sample can change the values without any search change. |
| Page speed | CrUX field observations and Lighthouse lab results remain labeled with their provider and scope. A lab score is not a measured ranking position. Field data can be unavailable for small samples. CrUX · Lighthouse scoring |
| Knowledge graph | Provider-returned entity matches and relevance values are provider metrics. They do not establish a Google Search ranking or independent authority. |
| AI writing assessment | A model's interpretation of a bounded text excerpt, labeled as an assessment. It is not an observed AI answer, citation or independent fact check. |
Collect dated results for a declared query, search engine, country, language and device. Preserve each exact ranking URL and its original position, then scan that URL using one engine revision and time window. Failed scans remain failures of measurement. Homepage substitutes, renumbered search results and stale scans are excluded.
Compare pages within the same query. Record random sampling seeds and retain queries that do not favor AuditLamp. Separate calibration from held-out evaluation before claiming predictive value. Correlation alone cannot establish that a proposed edit causes ranking gains. The current validation data does not justify learned ranking weights.
The Common Crawl graph can support graph comparisons. Scan archives can support detector regression and dated change analysis. Search Console can supply owned-property outcomes. Transcripts and creator scrapes can suggest hypotheses, but they are not ranking labels or evidence that a tactic works. Raw source files, measured scope and provenance are necessary before combining datasets.
Method measured-checks-v2007. All 187 registered detectors are listed. 25 have explicit measurement contracts; the other 162 are unscored observations. The title measurement appears in two categories but counts once in the overall calculation. Registry membership is not evidence of ranking validation.
| Check | Precisely what is measured | Technical source |
|---|---|---|
gate.crawlable | Declared Googlebot and Bingbot permission for the requested path | Source |
gate.indexable | No applicable noindex/none directive in the captured Googlebot or generic directives | Source |
gate.sitemap | A sitemap was fetched, is well-formed XML and has a urlset or sitemapindex root | Source |
core.title | Exactly one nonempty document title in the parsed head | Source |
core.meta_description | Exactly one meta description element with nonempty content in the page | Source |
core.h1 | Exactly one nonempty h1 element (a common heading convention, not a Google requirement) | Source |
core.schema_complete | Every graded JSON-LD type carries all of its required properties | Source |
corpus.broken_links | No sampled same-site link returned 404 or 410 | Source |
amp.canonical | A canonical declaration is present and structurally valid (HTTP(S) target, in head, no conflicting targets) | Source |
amp.open_graph | The Open Graph required properties og:title, og:type, og:image and og:url are present and nonempty | Source |
hyg.https | Final fetched URL uses HTTPS | Source |
hyg.mixed_content | No HTTP resource references in the inspected HTML attributes of an HTTPS page | Source |
hyg.image_dimensions | Every inspected img element declares both width and height attributes | Source |
hyg.viewport | A meta viewport element with nonempty content is present | Source |
hyg.not_found | The deliberately missing URL probe returned 404 or 410 | Source |
gate.robots_quality | robots.txt, when present, is under 500 KiB, has no noindex lines and only absolute Sitemap URLs | Source |
hyg.charset_conflict | Captured HTTP and HTML character encodings agree | Source |
hyg.schema_syntax | Every captured application/ld+json block parses as strict JSON | Source |
sec.form_action_https | Inspected declarative form destinations resolve to HTTPS | Source |
sec.tls_cert | Captured TLS handshake verified the certificate | Source |
sec.tls_protocol | Captured handshake negotiated TLS 1.2 or 1.3 | Source |
a11y.lang | The parsed html element declares a nonempty language | Source |
a11y.img_alt | Every inspected img element has an alt attribute | Source |
a11y.page_title | Exactly one nonempty document title in the parsed head | Source |
a11y.iframe_title | Every inspected iframe has a nonempty title attribute | Source |
These detectors can support investigation. Their legacy statuses and priority weights do not enter new scores. A documented concept alone does not validate a detector, its applicability or a ranking effect.
| Check | Observation | Scoring |
|---|---|---|
gate.ai_bot_access | AI crawler access | Excluded |
gate.bot_reachability | Firewall and CDN bot access | Excluded |
gate.renders_no_js | Content without JavaScript | Excluded |
core.structured_data | Structured data (JSON-LD) | Excluded |
core.answer_block | Opening paragraph observations | Excluded |
core.content_depth | Extracted text length | Excluded |
core.mobile_parity | Mobile and desktop parity | Excluded |
core.llms_txt | llms.txt file | Excluded |
core.entity_consistency | Business identity markup | Excluded |
corpus.unique_titles | Unique page titles | Excluded |
corpus.unique_meta | Unique meta descriptions | Excluded |
corpus.duplicate_content | Duplicate content across pages | Excluded |
corpus.internal_links | Internal links | Excluded |
corpus.anchor_text | Link anchor text | Excluded |
amp.question_headers | Question-heading observations | Excluded |
amp.snippet_eligible | AI Overviews eligibility | Excluded |
amp.heading_order | Heading order | Excluded |
amp.hreflang | Language targeting (hreflang) | Excluded |
amp.author_byline | Author byline | Excluded |
amp.freshness | Honest dates | Excluded |
amp.indexnow | IndexNow key | Excluded |
amp.field_cwv | Real-user speed data | Excluded |
corpus.hreflang_reciprocity | hreflang return links | Excluded |
corpus.link_depth | Click depth | Excluded |
hyg.redirects | Redirects | Excluded |
hyg.page_weight | Page speed basics | Excluded |
hyg.img_alt | Image alt text | Excluded |
hyg.html_lang | Page language | Excluded |
hyg.host_consistency | One site address | Excluded |
hyg.soft_404 | Soft 404 pages | Excluded |
hyg.custom_404 | Helpful 404 page | Excluded |
core.topic_target | Topic targeting | Excluded |
core.geo_target | Service + place targeting | Excluded |
core.nap_consistency | Business identity (NAP) consistency | Excluded |
core.local_schema | Local business structured data | Excluded |
corpus.site_structure | Site structure (pages that can rank) | Excluded |
amp.service_pages | Service page coverage | Excluded |
amp.location_pages | Location pages vs doorway risk | Excluded |
core.canonical_conflicts | Canonical signal conflicts | Excluded |
corpus.canonical_targets | Canonical target health | Excluded |
gate.sitemap_quality | Sitemap quality | Excluded |
corpus.sitemap_hygiene | Sitemap vs crawl hygiene | Excluded |
hyg.head_validity | Head section integrity | Excluded |
hyg.url_structure | URL structure | Excluded |
corpus.link_quality | Internal link quality | Excluded |
hyg.redirect_quality | Redirect technique | Excluded |
core.trust_pages | Real-business trust pages | Excluded |
hyg.keyword_stuffing | Keyword stuffing | Excluded |
hyg.hidden_text | Hidden text | Excluded |
corpus.near_duplicate | Near-duplicate pages | Excluded |
hyg.placeholder_text | Placeholder content | Excluded |
core.answer_position | Paragraph placement observations | Excluded |
amp.semantic_tables | Table and list observations | Excluded |
amp.title_rewrite_risk | Title rewrite risk | Excluded |
hyg.favicon | Favicon | Excluded |
amp.site_name | Site name markup | Excluded |
hyg.server_response | Server response and compression | Excluded |
hyg.folklore_flags | SEO folklore on this site | Excluded |
hyg.hsts | HSTS header (security signal) | Excluded |
hyg.nosniff | X-Content-Type-Options (security signal) | Excluded |
hyg.referrer_policy | Referrer-Policy header (privacy signal) | Excluded |
hyg.clickjacking | Clickjacking protection (security signal) | Excluded |
hyg.csp | Content-Security-Policy (security signal) | Excluded |
core.ai_bot_matrix | AI bot policy matrix | Excluded |
core.train_vs_retrieve | AI crawler posture (train vs retrieve) | Excluded |
amp.llms_full_txt | llms-full.txt reference | Excluded |
amp.citable_facts | Numbers and outbound links | Excluded |
amp.passage_structure | Passage structure observations | Excluded |
amp.og_image_valid | Social preview image (og:image) | Excluded |
hyg.twitter_card | X (Twitter) card tags (preview signal) | Excluded |
hyg.meta_charset | Charset declaration position | Excluded |
hyg.multiple_titles | Title element placement | Excluded |
hyg.base_href | Base URL override | Excluded |
amp.robots_directives | Robots directive conflicts and noarchive | Excluded |
corpus.orphan_pages | Orphan pages (sitemap vs internal links) | Excluded |
corpus.redirected_internal_links | Redirected internal links | Excluded |
corpus.url_case_consistency | URL case and trailing-slash consistency | Excluded |
hyg.js_navigation | Crawlable navigation links | Excluded |
hyg.iframe_main_content | Main content inside iframes | Excluded |
corpus.crawl_traps | Crawl traps (parameter and calendar URL explosion) | Excluded |
corpus.sitemap_lastmod | Sitemap lastmod accuracy | Excluded |
hyg.feed_discovery | RSS/Atom feed (syndication signal) | Excluded |
hyg.target_blank_noopener | New-tab link rel=noopener (security etiquette) | Excluded |
core.tel_clicktap | Tap-to-call phone link | Excluded |
core.hours_markup | Opening hours in structured data | Excluded |
core.geo_coordinates | Map-pin data (geo or full address) | Excluded |
hyg.map_presence | Embedded map (convenience signal) | Excluded |
core.schema_visible_parity | Structured data matches the visible page | Excluded |
hyg.img_lazy_strategy | Image lazy-loading strategy | Excluded |
hyg.img_responsive | Responsive images | Excluded |
hyg.img_formats | Modern image formats | Excluded |
hyg.render_blocking_scripts | Render-blocking scripts | Excluded |
hyg.dom_size | Page complexity (DOM size) | Excluded |
hyg.third_party_scripts | Third-party scripts | Excluded |
hyg.font_delivery | Font delivery | Excluded |
hyg.heavy_embeds | Heavy embeds | Excluded |
hyg.inline_data_uris | Inline image payloads | Excluded |
hyg.preconnect_hints | Early connection hints (performance signal) | Excluded |
amp.schema_breadcrumb | Breadcrumb markup validity | Excluded |
amp.schema_article | Article markup quality | Excluded |
amp.schema_product | Product markup quality | Excluded |
amp.schema_merchant_fields | Merchant listing fields | Excluded |
amp.schema_faq | FAQ markup structure | Excluded |
hyg.schema_howto_deprecated | HowTo markup (retired rich result) | Excluded |
amp.schema_person_author | Author markup quality | Excluded |
core.schema_review_integrity | Self-serving review markup | Excluded |
amp.schema_video | Video markup | Excluded |
amp.schema_dates_consistency | Schema date consistency | Excluded |
hyg.cookie_flags | Cookie flags (security signal) | Excluded |
hyg.permissions_policy | Permissions-Policy header (privacy signal) | Excluded |
hyg.coop_corp | Cross-origin isolation headers (security signal) | Excluded |
hyg.server_version_leak | Server version disclosure (security signal) | Excluded |
hyg.sri_third_party | Subresource Integrity on third-party scripts (security signal) | Excluded |
hyg.cache_control_html | Cache-Control on the HTML document (delivery signal) | Excluded |
amp.homepage_proof | Homepage proof sentence | Excluded |
amp.content_staleness | Content age (18-month staleness) | Excluded |
corpus.city_swap | City-swapped template pages | Excluded |
hyg.local_folklore | Local SEO folklore (keyword domains, stuffed names) | Excluded |
corpus.service_dead_ends | Service pages without a next step (conversion signal) | Excluded |
amp.qa_coverage | Q&A markup coverage on question pages (answer-engine signal) | Excluded |
hyg.offsite_profiles | Off-Google platform links (discovery signal) | Excluded |
sec.secrets_exposed | Exposed secret keys in page source | Excluded |
sec.source_maps | Published source maps | Excluded |
sec.vuln_libs | Outdated libraries with known CVEs | Excluded |
sec.https_redirect | HTTP redirects to HTTPS | Excluded |
sec.hsts | HSTS (Strict-Transport-Security) | Excluded |
sec.csp | Content-Security-Policy | Excluded |
sec.clickjacking | Clickjacking protection | Excluded |
sec.nosniff | X-Content-Type-Options: nosniff | Excluded |
sec.referrer_policy | Referrer-Policy | Excluded |
sec.permissions_policy | Permissions-Policy | Excluded |
sec.cors_wildcard | CORS not overly permissive | Excluded |
sec.server_tokens | Server version not disclosed | Excluded |
sec.cookie_flags | Cookie security flags | Excluded |
sec.security_txt | security.txt (RFC 9116) | Excluded |
sec.dotenv_exposed | .env file not exposed | Excluded |
sec.git_exposed | .git folder not exposed | Excluded |
sec.spf | SPF email-authentication record | Excluded |
sec.dmarc | DMARC email-authentication record | Excluded |
sec.sri | Subresource Integrity on third-party scripts | Excluded |
sec.exposed_files | No exposed backup/config artifacts | Excluded |
a11y.form_labels | Form fields labeled (WCAG 1.3.1/3.3.2) | Excluded |
a11y.heading_order | Heading levels not skipped (WCAG 1.3.1) | Excluded |
a11y.link_name | Links have discernible text (WCAG 2.4.4) | Excluded |
a11y.button_name | Buttons have accessible names (WCAG 4.1.2) | Excluded |
a11y.viewport_zoom | Zoom not disabled (WCAG 1.4.4/1.4.10) | Excluded |
a11y.landmarks | Main landmark present (WCAG 1.3.1/2.4.1) | Excluded |
a11y.skip_link | Skip-to-content link (WCAG 2.4.1) | Excluded |
a11y.tabindex_positive | No positive tabindex (WCAG 2.4.3) | Excluded |
a11y.autoplay_media | No uncontrolled autoplay (WCAG 1.4.2) | Excluded |
a11y.video_captions | Video captions track (WCAG 1.2.2) | Excluded |
a11y.table_headers | Data tables have headers (WCAG 1.3.1) | Excluded |
a11y.duplicate_id | Unique element ids (legacy WCAG 4.1.1) | Excluded |
a11y.aria_misuse | ARIA used correctly (WCAG 4.1.2) | Excluded |
a11y.alt_quality | Alt text is meaningful (WCAG 1.1.1) | Excluded |
priv.policy_link | Privacy policy linked (GDPR/CCPA) | Excluded |
priv.cookie_consent | Cookie consent when tracking (ePrivacy) | Excluded |
priv.trackers | Third-party trackers disclosed | Excluded |
priv.google_fonts_cdn | Google Fonts self-hosted (GDPR) | Excluded |
priv.preconsent_cookies | No tracking cookies before consent (ePrivacy) | Excluded |
priv.embed_leaks | No IP-leaking third-party embeds (GDPR) | Excluded |
priv.policy_content | Privacy policy has substance (GDPR Art. 13/14) | Excluded |