Documentazione Analyzer SiteScan

Riferimento completo di tutti i 32 analyzer e 311 controlli che alimentano l'analisi SEO di SiteScan.

32
Analyzers
311
Checks
5
Departments

Web Development

Server configuration, HTTP protocols, encoding, responsive design

001

HTTP Error Status Checker

4xx/5xx

Identifies pages returning 4xx (client errors) and 5xx (server errors) HTTP status codes, and maps which internal pages link to them.

Code Severity Description
E01 ERROR HTTP 5xx server error pages
W01 WARNING HTTP 4xx client error pages (404, 403, etc.)
I01 INFO Pagine HTTP 410 Gone: rimozioni intenzionali, riportate come informazione e non contate come errori o avvisi
I02 INFO Pagine che non hanno inviato nessuna risposta HTTP (connessione rifiutata, timeout, errore DNS o TLS): stato sconosciuto, riportate come informazione e non contate come errori o avvisi
002

Soft 404 Detection

Soft404

Detects pages that return HTTP 200 but behave like error pages (soft 404s) using multi-signal scoring: reference matching, phrase detection, and statistical anomaly.

Code Severity Description
W01 WARNING Page detected as soft 404 (score above threshold)
W02 WARNING A livello di sito: gli URL inesistenti non restituiscono 404 (reindirizzati alla homepage o a un altro URL, oppure serviti con HTTP 200), rilevato con un URL di prova casuale
003

Redirect Chain Analyzer

Redir

Analyzes HTTP redirect chains, detecting excessive hops, external redirects, and structural link rot from internal pages pointing to redirected URLs.

Code Severity Description
E01 ERROR Redirect chain exceeds 5 hops (Google recommended max)
W01 WARNING Redirect detected (1-5 hops)
W02 WARNING Problematic redirect: internal referrers point to different final URL
W03 WARNING External redirect: final URL on different domain
W04 WARNING Host canonicalization missing: www and non-www both serve content on different hosts (no 301 between them)
009

Character Encoding Checker

Charset

Comprehensive character encoding analysis: missing charset declarations, mismatches between HTTP and HTML charset, mojibake patterns, BOM presence, and double-encoding.

Code Severity Description
E01 ERROR No charset declaration found (HTTP or HTML)
E02 ERROR HTTP Content-Type charset differs from HTML meta charset
E03 ERROR U+FFFD replacement characters detected in content
E04 ERROR Mojibake patterns detected (UTF-8 misread as Latin-1/CP1252)
E05 ERROR Encoding corruption in SEO fields (title, description, H1)
E06 ERROR Invalid or unrecognized charset name
W01 WARNING Non-UTF-8 charset declared
W02 WARNING UTF-8 BOM present
W03 WARNING Double-encoded UTF-8 detected
W04 WARNING NBSP mojibake pattern detected
W05 WARNING Charset declared only in HTML meta, not HTTP header
012

Robots.txt Analyzer

Robots

Analyzes robots.txt format, directives, and effectiveness. Checks for missing or malformed files, overly restrictive rules, sitemap presence, and crawl budget impact.

Code Severity Description
E01 ERROR Invalid format: RTF, HTML, PDF, XML, or binary content
E02 ERROR UTF-8 BOM present in robots.txt
E03 ERROR Wrong Content-Type (not text/plain)
E04 ERROR HTTP error response (4xx/5xx)
E05 ERROR Blocks all crawlers (Disallow: / for *)
W01 WARNING Missing robots.txt file
W02 WARNING Empty robots.txt file
W03 WARNING File too large (>500 KiB, Google truncates)
W04 WARNING Blocks major crawlers (Googlebot, Bingbot, GPTBot, ClaudeBot)
W05 WARNING Sitemap trovata in una posizione standard ma non dichiarata nel robots.txt
W06 WARNING Restrictive crawl budget (<0.5 pages/day)
W07 WARNING Blocks static resources (/images/, /css/, /js/)
W08 WARNING Orphaned rules (before any User-agent)
W09 WARNING Deprecated noindex directive
W10 WARNING Sitemap URL is relative, not absolute
W11 WARNING Nessuna sitemap dichiarata nel robots.txt e nessuna trovata nelle posizioni standard (sitemap.xml, sitemap_index.xml, wp-sitemap.xml, ...): la sitemap non è individuabile, il che non prova che non esista
I12 INFO Sitemap in attesa di pubblicazione: pagine scansionate ora ma assenti dalla sitemap pubblicata, già incluse nella sitemap generata da questa scansione. Non conteggiato
W13 WARNING Sitemap declared or found but unreachable
W14 WARNING Sitemap XML malformed (no <urlset> or <sitemapindex>)
W15 WARNING Sitemap URLs that return 4xx/5xx
W16 WARNING Sitemap incomplete: crawled pages missing from the published sitemap (pages left out on purpose and pages already in the sitemap generated by the scan are excluded)
W17 WARNING Most sitemap lastmod dates are older than the configured number of years
I18 INFO All sitemap URLs share the same <priority> (Google ignores the field)
I19 INFO All sitemap URLs share the same <changefreq> (Google ignores the field)
I20 INFO Sitemap index coverage: child sitemaps read, skipped and failed (W16 and I12 are not evaluated when coverage is partial)
013

Responsive/Viewport Checker

Mobile

Checks viewport meta tag presence and configuration for mobile-friendly design. Detects missing viewports, disabled zoom, fixed-width layouts, and inconsistent viewport coverage.

Code Severity Description
E01 ERROR Missing viewport meta tag
W01 WARNING Viewport issues (user-scalable=no, fixed width, missing initial-scale)
W02 WARNING Partial viewport coverage: inconsistent across pages
W03 WARNING Missing apple-touch-icon (only when require_touch_icon is enabled; off by default)
028

Meta Directives Analyzer

MetaDir

Detects meta robots directives (noindex, nofollow) and meta refresh redirects across all pages. Flags critical issues like noindex on homepage, sitemap conflicts, and HTML-level redirects.

Code Severity Description
E01 ERROR Homepage has noindex (entire site may be deindexed)
E02 ERROR Page in sitemap.xml has noindex (conflicting signals)
E03 ERROR Homepage uses meta refresh redirect (should use HTTP 301)
E04 ERROR Page has meta refresh with delay > 0 (accessibility + SEO issue)
E05 ERROR URL disallowed in robots.txt but has meta noindex — conflicting signals, Google cannot see noindex and may index URL without snippet
W01 WARNING Non-homepage page has noindex directive
W05 WARNING Page has instant meta refresh (delay=0) — should use HTTP 301
W06 WARNING Meta refresh redirects to external domain
W07 WARNING Meta refresh target differs from canonical URL
I02 INFO Pagine con direttiva robots nofollow: i motori di ricerca non seguono i loro link in uscita (spesso voluto, riportato come informazione)
030

HTTP Response Headers Analyzer

Hdrs

Per-URL analysis of HTTP response headers captured by the crawler: cookie security flags, server fingerprint, X-Frame-Options / X-Content-Type-Options / HSTS coverage across all pages, ETag inode leak, TTFB statistics. Complements 014 (homepage-only score) with site-wide coverage.

Code Severity Description
E01 ERROR Cookie set on HTTPS page without Secure flag (MITM cookie theft)
W01 WARNING Cookie without HttpOnly flag (XSS cookie theft)
W02 WARNING Cookie without SameSite attribute (CSRF risk)
W03 WARNING Server banner exposes version (fingerprint)
W04 WARNING X-Powered-By header leaks backend stack
W05 WARNING Missing X-Frame-Options header (per-URL)
W06 WARNING Missing X-Content-Type-Options: nosniff (per-URL)
W07 WARNING Missing Strict-Transport-Security on HTTPS URL (per-URL)
W08 WARNING ETag exposes Apache inode number (fingerprint)
I01 INFO Distribuzione dei banner del server: quali valori dell'header Server restituisce il sito sugli URL scansionati
I02 INFO Statistiche TTFB: mediana, p90 e p99 del tempo al primo byte sugli URL scansionati, con gli URL più lenti
I03 INFO Contenuti non aggiornati: URL con header Last-Modified più vecchio della soglia configurata (in giorni)
034

Consent Mode & CMP Integration

CMP

Verifies that the cookie banner (CMP) actually gates Google Tag Manager, gtag and other marketing tags: known CMP vendor detection, script order and Consent Mode v2 defaults, Cookie-Script account configuration, double-loading through GTM, site-wide coverage — plus a runtime check with a headless browser proving whether Google tag hits carry consent state.

Code Severity Description
E01 ERROR Google/marketing tags are present but no consent banner (CMP) was detected, neither in the pages nor inside the GTM container — tracking runs without user consent
E02 ERROR The CMP script is placed after the GTM/gtag snippet with no inline consent default before it — Google tags fire before any consent state is registered
E03 ERROR The "Google Consent Mode" option is disabled in the Cookie-Script account configuration — the banner is shown but sends no consent signals to Google tags
E04 ERROR Runtime proof (headless browser on the homepage): Google tags fired without any Consent Mode state (no gcs parameter) — the banner does not gate the tags
E05 ERROR Consent probe (pagina caricata senza accettare il banner): il tag Google è partito senza alcuno stato di consenso, quindi il Consent Mode non è applicato, né Base né Avanzato
E06 ERROR Banner probe a runtime (pagina caricata due volte, consenso rifiutato e poi accettato): non compare alcun banner cookie, eppure i tag Google partono, quindi i visitatori vengono tracciati senza che venga chiesto loro nulla. Esclude anche un banner sviluppato in proprio senza firma riconoscibile
E07 ERROR Struttura del container GTM, segnalata solo con prove di stato di consenso mancante (storico notturno recente o scansione in corso): la CMP è caricata da un tag HTML personalizzato o da un template del fornitore che non imposta il consenso predefinito, nessun tag del container lo imposta prima del primo tag Google e quel tag parte su un evento di pagina standard. Il predefinito arriva solo dopo lo script esterno e il tag Google gareggia con lui
E08 ERROR Consent probe (homepage caricata senza accettare il banner): il primo hit Google riportava già ad_storage e/o analytics_storage CONCESSI prima di qualsiasi interazione. Il banner non controlla quei segnali: il predefinito è concesso, oppure lo strumento di consenso li concede al caricamento
E09 ERROR Controllo runtime: una richiesta dello strumento di consenso è fallita in homepage (script o configurazione dell'account 404/403, errore di rete, bloccata dalla Content Security Policy). Il sito ha uno strumento di consenso, ma in produzione è rotto: va sistemata l'installazione
W01 WARNING The CMP is loaded twice: once inside the GTM container and once standalone in the page (double banner, conflicting consent states possible)
W02 WARNING The CMP script precedes the Google tag but is loaded with async/defer — execution order not guaranteed, tags may fire before the consent default is set
W03 WARNING The inline consent default lacks the Consent Mode v2 signals ad_user_data and ad_personalization (required since March 2024)
W04 WARNING A marketing tag is hardcoded in the page without any CMP blocking mechanism — it runs regardless of consent
W05 WARNING The CMP script is present on part of the site but missing on some pages — no banner is shown there and tags run ungated
W06 WARNING More than one CMP detected on the site — two banners can appear and their consent states conflict
W07 WARNING Google tags are present and no CMP was detected in the pages; the GTM container could not be checked, so verify manually that a consent banner exists
W08 WARNING A cookie banner-like markup was found but it matches no known CMP (custom banner) — static analysis cannot verify it gates the tags
W09 WARNING The very same CMP script file is included more than once in the page markup (duplicate initialization possible)
W10 WARNING Banner probe a runtime: il banner cookie c'è ma i tag Google non riportano alcuno stato di consenso, quindi il banner non è collegato al Google Consent Mode. La soluzione è attivare il Consent Mode nello strumento di consenso esistente, non installare un nuovo banner
W11 WARNING Consent probe: Consent Mode Base, nessuna richiesta raggiunge Google fino al consenso, quindi chi rifiuta non viene misurato affatto
W12 WARNING Gli script hanno attributi di blocco della CMP (data-cookiescript, data-cookiecategory, ...) ma nessuna CMP viene caricata, né nelle pagine né nel container GTM: un residuo di uno strumento di consenso rimosso o rotto, quegli script partono comunque
W13 WARNING Struttura del container GTM: un tag Google parte su Consent Initialization, l'evento riservato all'impostazione del consenso predefinito; segnalato solo con prove di stato di consenso mancante
W14 WARNING Storico notturno: nelle ultime 14 notti il primo hit Google aveva lo stato del Consent Mode in alcune notti e in altre no: il predefinito non è garantito prima del tag Google (una gara)
W15 WARNING Il consenso predefinito imposta un wait_for_update poco plausibile: sotto i 100 ms (il valore è in millisecondi, quindi l'attesa finisce prima che lo strumento di consenso risponda) o sopra i 10 s (i tag Google trattengono il primo hit per tutto quel tempo)
I02 INFO GTM installato senza l'iframe di riserva <noscript> (riguarda solo i visitatori senza JavaScript)
I03 INFO CMP caricata solo tramite il container GTM: l'analisi statica non può verificare che parta con l'attivatore Consent Initialization
I04 INFO Più ID di container GTM nella pagina (a volte voluto, ma i container duplicati fanno scattare i tag due volte)
I05 INFO The Cookie-Script account configuration could not be fetched, or its "Google Consent Mode" state could not be determined
I06 INFO Cookie-Script "Google Consent Mode" option verified as enabled
I07 INFO Cookie-Script account option disabled, but the CMP loads through the official GTM template which sets the consent defaults itself
I08 INFO Runtime check passed: Google tag hits carry Consent Mode state (gcs parameter present)
I09 INFO Consent probe: con il banner non accettato il tag Google invia comunque un ping senza cookie (Consent Mode avanzato, che è anche l'impostazione predefinita di GTM)
I10 INFO Controllo runtime: rilevato un banner cookie in homepage (confronto fra la pagina con consenso rifiutato e con consenso accettato, quindi anche i banner sviluppati in proprio)
I11 INFO Sequenza temporale delle richieste a runtime: le richieste rilevanti per il consenso in ordine cronologico (documento, script della CMP, caricatori GTM/gtag, hit Google), così "Google ha ricevuto dati prima del consenso" è una sequenza osservata, non una deduzione
I13 INFO La CMP è presente ma caricata a runtime (di solito da GTM): nessuna firma del fornitore nell'HTML statico, il browser headless ha visualizzato il suo banner
I14 INFO Banner cookie che non corrisponde a nessuna CMP nota, con i tag Google che a runtime partono con lo stato del Consent Mode
I15 INFO Tag Google visto solo a runtime: nessun caricatore GTM/gtag nell'HTML statico (incluso in un bundle o iniettato da un plugin), il browser headless l'ha visto caricare. I controlli statici sull'ordine di caricamento non si applicano, quelli a runtime sì
I16 INFO Storico notturno (ultime 60 notti): in quante notti il primo hit Google riportava lo stato del Consent Mode, la ripartizione nelle ultime 14 notti e gli esiti del banner. Il riferimento dietro i controlli della singola scansione
I17 INFO Collegamento con il GTM Audit: l'ultimo GTM Audit salvato per il dominio, con data, conteggi di errori/avvisi/note e classe di consenso, segnalato come superato se il container è cambiato o l'audit ha più di 90 giorni. Riportato, mai conteggiato
I18 INFO Collegamento con il GTM Audit: il sito usa un container GTM ma per il dominio non è ancora stato eseguito alcun GTM Audit
I19 INFO Il consenso predefinito imposta wait_for_update (valore e dove è impostato): i tag Google che partono prima della risposta dello strumento di consenso attendono fino a quel tempo. Una mitigazione della gara CMP/tag, non un sostituto dell'ordine di caricamento
I20 INFO Il consenso predefinito è limitato ad alcune regioni: al di fuori il sito non imposta alcun predefinito e Google applica il proprio. Indica se l'Italia, da cui partono i controlli a runtime, è coperta
035

Broken CMS Forms

FormErr

Rileva le pagine che rispondono HTTP 200 ma in cui un componente form del CMS non viene renderizzato: al posto del form il visitatore vede il messaggio d'errore del plugin (es. Contact Form 7 "Error: Contact form not found." in una delle sue traduzioni ufficiali) oppure il testo grezzo dello shortcode. La pagina si carica correttamente per ogni check HTTP, ma la sua funzione chiave — contatto o download — è morta. Match deterministico sulle stringhe del testo crawlato, nessuna richiesta aggiuntiva.

Code Severity Description
E01 ERROR Il messaggio d'errore del plugin viene mostrato ai visitatori al posto del form (form cancellato o shortcode con ID errato)
W01 WARNING Uno shortcode di form grezzo è visibile nel testo della pagina (plugin disattivato o shortcode fuori posto) — il form non viene renderizzato
037

GTM Audit

GTMAudit

Esamina il container Google Tag Manager pubblico del sito con gli stessi controlli del servizio GTM Audit, così i risultati compaiono nel report, nelle scansioni programmate, nell'instradamento delle email e nei confronti fra scansioni. Controlli statici sul container pubblicato: ID di misurazione condivisi da più tag, Universal Analytics dismesso, tag in pausa, HTML personalizzato, template della community, tag senza attivatore, consenso predefinito, ID dinamici. Controlli a runtime: la homepage viene caricata in un browser headless con il consenso negato e poi con il consenso concesso, per vedere le richieste a Google e ad altri tracker prima del consenso, i segnali di consenso concessi per impostazione predefinita, gli ID di misurazione non dichiarati, i container aggiuntivi e i cookie scritti prima del consenso. I rilievi che richiedono l'accesso al container tramite l'API di Google Tag Manager (codici A) vengono dall'ultimo GTM Audit salvato con accesso API. Gira in ogni scansione; un sito senza container GTM risulta semplicemente ok.

Code Severity Description
D1 WARNING Lo stesso ID di misurazione (G-/AW-/UA-) è usato da più tag: di solito una configurazione duplicata che conta due volte
D4 WARNING Live Universal Analytics tags (UA-): UA stopped processing data in July 2023 (July 2024 for UA 360) and its properties were deleted in July 2024; the tags still load and send hits that nothing collects
D4b INFO Paused Universal Analytics tags: harmless, can be deleted
D5 WARNING Una quota elevata dei tag configurati è in pausa (avviso sopra la soglia, informazione sotto): configurazione non aggiornata
H1 WARNING Tag HTML personalizzati, ciascuno con il suo attivatore, i tracker riconosciuti nel codice e l'eventuale controllo di consenso aggiuntivo. Avviso se c'è uno strumento di consenso e almeno un tag non ha il controllo; informazione negli altri casi
H2 INFO Tag da template della community (galleria dei template): codice di terze parti, elencati per una verifica
H3 WARNING Tag senza attivatore: non partono mai, configurazione inutile
H4 ERROR Tag HTML personalizzati che caricano uno script noto di analisi o pubblicità (Matomo, Meta, TikTok, LinkedIn, Hotjar, Clarity, Pinterest, Criteo...) senza controllo di consenso aggiuntivo: GTM li fa partire qualunque cosa scelga il visitatore. Errore se il sito ha uno strumento di consenso, avviso altrimenti
C1 INFO Il container imposta da sé il consenso predefinito (quali segnali e con quale attivatore)
X1 INFO Tag il cui ID di misurazione è una variabile (dinamico): i controlli statici non possono dire a quale proprietà inviano
A1 ERROR Dall'ultimo GTM Audit con accesso API: tag senza requisiti di consenso con impostazioni di consenso "non impostato" benché il sito abbia uno strumento di consenso (riportato come nota, gravità originale nel titolo)
A1b INFO From the last saved audit with API access: template tags whose consent behaviour could not be determined (template code not returned)
A1c INFO From the last saved audit with API access: Google tags never reviewed for consent ("Not set"; they honour analytics_storage/ad_storage natively)
A3 WARNING Dall'ultimo GTM Audit con accesso API: nessun attivatore Consent Initialization nel container
A4 INFO From the last saved audit with API access: live tags with blocking triggers (exceptions), listed for review
A5 WARNING Dall'ultimo GTM Audit con accesso API: modifiche non pubblicate in un'area di lavoro
A7 INFO Dall'ultimo GTM Audit con accesso API: utenti con accesso al container
R1 ERROR Runtime: richieste ai tracker inviate con consenso negato e senza segnale di consenso (richieste Google senza gcs, tracker di terze parti)
R2 ERROR Runtime: richieste Google senza alcun segnale di consenso
R3 WARNING Runtime: segnali di consenso concessi per impostazione predefinita prima di qualsiasi scelta dell'utente
R4 WARNING Runtime: ID di misurazione visti nelle richieste che il container non dichiara (informazione se il container usa ID dinamici)
R5 WARNING Runtime: container GTM aggiuntivi caricati dalla pagina oltre a quelli citati nell'HTML
R6 INFO Runtime: segnali di consenso concessi con consenso negato (ciò che la pagina ha concesso comunque)
R7 INFO Runtime: sequenza delle richieste (documento, CMP, caricatore GTM, hit Google) così come osservata
R8 WARNING Runtime: il container GTM non è citato dalla homepage (avviso) oppure è stato trattenuto fino al consenso (informazione)
R9 ERROR Runtime: cookie di tracciamento scritti prima del consenso (errore); cookie di terze parti sconosciuti (avviso); cookie tecnici/della CMP o nessuno (informazione)
R10 WARNING Runtime: the CMP grants non-essential categories without an answer, or records an answer by itself without any interaction (warning); only essential categories granted (info)
R11 INFO Runtime: script di tracciamento trattenuti dalla CMP fino al consenso
R12 ERROR Runtime, sampled inner pages (GTM Audit): tracking requests the homepage did not show (error when they leave without consent state or with an identifier and a CMP is present, otherwise warning)
R13 ERROR Runtime, sampled inner pages (GTM Audit): tracking cookies set before consent that the homepage did not write (warning when no CMP is present)
R14 INFO Runtime, sampled inner pages (GTM Audit): pages observed with consent denied and what each one sent
R16 ERROR Runtime: i comandi di consenso nel dataLayer (consent default/update, con i tempi) messi a confronto con il primo hit Google. Errore se l'hit è partito prima che il predefinito fosse dichiarato; avviso se un aggiornamento precede il predefinito o più predefiniti sono in conflitto; informazione negli altri casi
R17 INFO Runtime, consenso concesso (secondo caricamento): richieste di tracciamento che partono solo dopo il consenso, cioè quelle che il banner controlla davvero
R18 WARNING Runtime, consenso concesso: nessuna richiesta di tracciamento è partita dalla homepage nemmeno con il consenso, benché il container abbia dei tag (tag che partono solo su eventi successivi, o un'integrazione del consenso che continua a bloccare dopo l'accettazione)
R19 INFO Runtime, consenso concesso: non è stato possibile concedere il consenso automaticamente (né i cookie dello strumento di consenso né un pulsante di accettazione hanno funzionato): il secondo passaggio non è conclusivo
R20 INFO Runtime, consenso concesso: le stesse richieste di tracciamento (o nessuna) con consenso negato e concesso, cioè il consenso non cambia ciò che la pagina invia
R21 INFO Runtime, consent granted: the consent-denied and consent-granted loads landed on different hosts (a redirect that changes with consent cookies or language), so the comparison is inconclusive and no causal consent conclusion is drawn
S1 INFO Cambiamenti rispetto al precedente audit salvato del dominio: rilievi nuovi e risolti per codice, versione del container e inventario dei tag, ID di misurazione, richieste di tracciamento e cookie comparsi o scomparsi a runtime. Differenze osservate, non giudizi

SEO & Visibility

Search engine optimization, structured data, metadata, linking

004

Heading Structure Checker

Hdg

Validates H1-H6 heading hierarchy, checking for missing H1, multiple H1 tags, and heading level skips that harm SEO and accessibility.

Code Severity Description
E01 ERROR Missing H1: page has zero H1 headings
W01 WARNING Multiple H1: page has more than one H1 heading
W02 WARNING Hierarchy skip: heading level skipped (e.g., H1 to H3)
005

Duplicate H1/Title/Description Checker

Dupl

Finds pages sharing identical H1 headings, title tags or meta descriptions, which dilutes SEO value and confuses search engines.

Code Severity Description
E01 ERROR Duplicate title: same title tag appears on multiple pages (counted as an error: duplicated titles are the strongest duplicate-content signal)
W01 WARNING Duplicate H1: same H1 text appears on multiple pages
W03 WARNING Duplicate meta description: same description text appears on multiple pages
W04 WARNING Meta description troncata: estratto generato automaticamente interrotto a metà frase (termina con due punti, virgola, punto e virgola, puntini di sospensione o una preposizione/articolo)
W05 WARNING Possibile refuso nello slug dell'URL: lo slug differisce di 1-2 caratteri dall'H1 della pagina (es. /paradontologia/ invece di Parodontologia)
W06 WARNING Missing title tag on HTML pages
W07 WARNING Missing meta description on HTML pages
008

Heading Length Checker

HdgLen

Checks heading text length for SEO optimization. Headings that are too short provide little SEO value, while overly long headings may be truncated.

Code Severity Description
W02 WARNING H1 o H2 troppo lungo: più di 70 caratteri (H2: 80), oppure più di 12 parole nell'H1
I01 INFO H1 troppo corto: una sola parola
I02 INFO H3-H6 troppo lunghi: oltre il limite di caratteri per livello (riportato come informazione: i principali strumenti SEO non controllano la lunghezza dei titoli sotto l'H2)
011

Language, Canonical & Hreflang Checker

Lang

Validates HTML lang attributes, canonical URLs, and hreflang implementations for multilingual SEO. Checks for missing, invalid, or conflicting declarations.

Code Severity Description
E01 ERROR Missing lang attribute in HTML tag
E02 ERROR Missing or invalid canonical URL
E03 ERROR Missing reciprocal hreflang (A links to B but B does not link to A)
E04 ERROR Hreflang href is not absolute URL
E05 ERROR Canonical conflicts with hreflang
W01 WARNING Missing x-default hreflang entry (only when require_x_default is enabled; off by default)
W02 WARNING Canonical URL issues (relative, non-self, trailing slash mismatch)
W03 WARNING HTTPS page but hreflang/canonical uses HTTP
E06 ERROR L'hreflang punta a una pagina non indicizzabile (stato 4xx/5xx o noindex)
E07 ERROR Voce hreflang duplicata: lo stesso codice lingua è dichiarato due volte nella stessa pagina
E10 ERROR L'hreflang punta a un URL che reindirizza (3xx) invece che alla pagina finale (esclusi i redirect della sola barra finale)
W05 WARNING L'attributo lang dell'HTML non corrisponde alla lingua dell'hreflang con cui la pagina si autoreferenzia
015

Open Graph & Twitter Cards Checker

OG

Validates Open Graph meta tags and Twitter Cards for social sharing. Checks required tags, content quality, consistency with page metadata, and duplicate detection.

Code Severity Description
E02 ERROR Missing required OG tags (og:title, og:description)
E03 ERROR og:url is a relative URL (must be absolute per the Open Graph specification)
W01 WARNING Missing og:image tag
W02 WARNING OG tag quality issues (too long, too short, HTTP image, non-standard og:type, og:locale not in ll_CC format)
W03 WARNING Missing or invalid Twitter Card
W04 WARNING Duplicate OG tags across pages
W05 WARNING OG metadata inconsistent with page title/description/canonical, or og:locale language different from the HTML lang
W06 WARNING Immagine demo del tema o di stock usata come og:image (es. percorsi demo del tema): un residuo del sito di staging
W07 WARNING Pages with no Open Graph tags at all (one warning for the scan, pages listed)
W08 WARNING og:image is a relative URL (social platforms cannot resolve it)
W09 WARNING Most pages use the same og:image (site-wide default image)
W10 WARNING URL variants that differ from their canonical page in Open Graph presence
018

Image ALT Quality

ALT

Evaluates image ALT text coverage and quality. Detects missing ALT attributes, empty ALT text, untranslated ALT for multilingual sites, and overly long descriptions.

Code Severity Description
E01 ERROR Image without an alt attribute, or with an empty alt that could not be checked in the page HTML (an empty alt="" confirmed in the HTML is listed as decorative, info only)
W01 WARNING Image ALT quality issue (untranslated, longer than 125 characters)
021

Structured Data Validator

JSON-LD

Validates JSON-LD structured data blocks against Schema.org specifications. Checks syntax, required fields per type, URL format, and type recognition.

Code Severity Description
E01 ERROR JSON-LD syntax error: a block in the page (head or body) is not valid JSON; the report gives the cause (typographic quotes, line break inside a string...) and an excerpt
E02 ERROR Missing @type property
E03 ERROR Required fields missing for Schema.org type
W01 WARNING URL fields are not absolute URLs
W02 WARNING Recommended fields missing
I03 INFO Unknown or unrecognized Schema.org @type (listed, not counted)
023

Internal Link Analysis

IntLnk

Analyzes internal linking structure using BFS from homepage. Detects orphan pages, deep pages (>4 clicks), generic anchor text, and self-linking patterns.

Code Severity Description
E01 ERROR Pagina orfana della sitemap: URL dichiarato nella sitemap pubblicata, nessuna pagina scansionata lo collega e compare ancora nella sitemap generata da questa scansione (una pagina attuale, non appena rimossa)
W01 WARNING Deep page: reachable only with more than 4 clicks from homepage
W02 WARNING Testo del link generico (clicca qui, leggi tutto, ecc.) o URL nudo usato come testo del link
W03 WARNING href malformato: spazio o carattere di controllo (TAB/CR/LF o %09/%0A/%0D) dentro l'href, che si presenta come un falso dominio internazionalizzato
W04 WARNING Dead-end page: no outgoing internal links (blocks PageRank flow, excludes whitelisted terminals like contact/privacy)
W05 WARNING Link segnaposto href="#": voce di menu o invito all'azione la cui destinazione non è mai stata inserita (raggruppati per testo del link)
W06 WARNING Link tel: senza prefisso internazionale (+CC/00CC): non funziona per chi chiama dall'estero
W07 WARNING La sitemap pubblicata non dichiara alcun URL sull'host coperto da questa scansione: appartiene a un altro sito, oppure il sito scansionato ne è una copia di staging
W08 WARNING Copertura sitemap/scansione troppo bassa per giudicare le pagine orfane: sotto la soglia, un URL della sitemap assente dalla scansione significa che la scansione non l'ha raggiunto, non che nessuna pagina lo collega
I02 INFO Confronto delle pagine orfane non eseguito, con il motivo e i numeri che lo giustificano (nessuna sitemap leggibile, indice di sitemap non espanso, host diverso, copertura insufficiente)
I03 INFO Sitemap in attesa di pubblicazione: URL ancora presente nella sitemap pubblicata ma già assente da quella generata da questa scansione; pubblicarla chiude la differenza. Non conteggiato
031

Sitemap Diff Analyzer

SitemapDiff

Compares the just-generated sitemap.xml with the previous scan's snapshot. Detects URL count spikes/drops (vs 7-day baseline) and suspicious new URLs (webshell paths, spam keywords, exotic charsets). Replaces the daily sitemap watchdog: the customer's sitemap.xml is SiteScan output, so meaningful diffs only happen between consecutive scans, not day-by-day.

Code Severity Description
E01 ERROR Suspicious URLs added (an_sm_03): webshell paths /wp-content/uploads/*.php, double-extension, spam keywords pharma/casino/replica, cyrillic/CJK/arabic chars
W01 WARNING URL count spike (an_sm_02): +30% AND +50 absolute URLs vs previous snapshot
W02 WARNING URL count drop (an_sm_04): -30% AND -50 absolute URLs vs previous snapshot (de-indexing or content removal)
032

Structured Data Coherence

SD-Coherence

Verifies that the homepage's JSON-LD structured data actually describes the real business, by comparing it against the AI-derived site profile (context_llm.json). Parses the whole document (head+body), so it catches body-injected JSON-LD that 021 misses. Two layers: deterministic NAP match (name/phone/email/locality) + neutral AI semantic judgement (Gemini) that also flags moved/empty/parked sites, language drift, or a different business — without presuming the cause. Homepage-only.

Code Severity Description
E01 ERROR Structured data (JSON-LD) describe a different entity than the business — 2+ NAP contradictions (e.g. agency placeholder name/address)
E02 ERROR Homepage incoherent with the expected business per AI: site moved/parked/empty, different activity, or different main language
E03 ERROR Contenuto nascosto con link esterni e segni di iniezione (titoli propri, o uno script diverso da quello della pagina): invisibile ai visitatori, pienamente indicizzabile. Misurato nel browser
W01 WARNING Single NAP discrepancy between JSON-LD and the business profile
W02 WARNING Minor semantic discrepancy between live homepage and expected profile (AI)
W03 WARNING Contenuto nascosto con link esterni, senza gli altri segni di iniezione: può essere legittimo (finestra modale chiusa, menu fuori schermo), segnalato per una verifica
I02 INFO Blocco nascosto con molto testo e nessun link esterno (menu mobile, pannello a schede, fisarmonica). Elencato per una verifica, non conteggiato
036

Similar Titles

SimTitle Experimental

Trova i title di pagina quasi uguali (per esempio lo stesso titolo in due versioni linguistiche con solo una parola di collegamento tradotta, o lo stesso titolo con un separatore o maiuscole diverse), a complemento del 005, che trova solo i duplicati esatti. I titoli si confrontano parola per parola, mai lettera per lettera. Nessuna richiesta aggiuntiva, nessuna AI. Sperimentale: opzionale finché le soglie non saranno calibrate su siti reali.

Code Severity Description
W01 WARNING Titoli quasi identici: tag title diversi che diventano uguali togliendo il suffisso/prefisso del sito e normalizzando maiuscole e punteggiatura (i numeri contano: "Magazine 2023" e "Magazine 2024" sono pagine diverse)
W02 WARNING Titoli che differiscono solo per parole vuote (and, und, with, &...): quasi sempre lo stesso argomento, spesso un titolo non tradotto in un'altra versione linguistica
I01 INFO Titoli che differiscono per una sola parola di contenuto (es. "Superior Double Room" e "Superior Triple Room"): elencati per una verifica, non conteggiati. Di solito varianti legittime

Security

HTTP security headers, JS vulnerabilities, mixed content

010

External Links Checker

ExtLnk

Validates all external links: detects broken links (4xx/5xx), connection failures, slow responses, HTTP-only links, and suspicious URL shorteners.

Code Severity Description
E01 ERROR Critical error: 403, 404, 500, 502, 503, 504, any other failed HTTP response, or no response at all (host not found, timeout, TLS error, connection refused)
W02 WARNING Warning: 401, 408, 429 status (even though the request failed), slow response, HTTP not HTTPS, or suspicious shortener
014

HTTP Security Headers

Security

Evaluates 10 HTTP security headers using Mozilla Observatory methodology. Grades from A+ to F based on CSP, HSTS, cookie flags, CORS, X-Frame-Options, and more.

Code Severity Description
E01 ERROR Critical security header missing or misconfigured (score impact >= -20)
W01 WARNING Security header improvement recommended (score impact -1 to -19)
016

JavaScript CVE Vulnerability Scanner

JSVuln

Checks the JavaScript libraries loaded by the homepage against the OSV vulnerability database (libraries identified by CDN URL, file banner or Retire.js fingerprint). Reports severity (Critical/High/Medium/Low), affected versions and available fixes; libraries whose database lookup failed are listed as not verified. Scripts that appear only on other pages are not checked.

Code Severity Description
E01 ERROR Critical or High CVE vulnerability (CVSS >= 7.0)
W01 WARNING Medium or Low CVE vulnerability (CVSS < 7.0)
025

HTTPS Mixed Content Detector

HTTPS

Detects mixed content on HTTPS sites: HTTP scripts and stylesheets (blocked by browsers), HTTP images in OG tags, HTTP canonical/internal links, protocol-relative resource URLs, and unsafe cross-origin links.

Code Severity Description
E01 ERROR Script loaded via HTTP (active mixed content, blocked by browsers)
E02 ERROR Stylesheet loaded via HTTP (active mixed content, blocked by browsers)
W01 WARNING og:image uses HTTP on HTTPS site
W02 WARNING Canonical URL uses http:// on HTTPS site
W03 WARNING og:url uses http:// on HTTPS site
W04 WARNING Internal links with explicit http:// protocol
W05 WARNING Resource loaded via protocol-relative URL (//...) instead of explicit https://
W06 WARNING Cross-origin link with target="_blank" missing rel="noopener" (tab-nabbing risk)
W07 WARNING Script che bloccano il rendering nell'<head>: la pagina ha almeno il numero soglia di script senza async/defer prima di </head> (gli script prima di </body> non sono conteggiati)
W08 WARNING External CDN script missing SRI integrity hash (MITM tampering surface)
W09 WARNING Script type=module without crossorigin attribute (CORS/typed errors)
029

Server Security Scanner

SecTest Authorization required

Active pentest-style server security testing: TRACE/XST, host header injection, dangerous HTTP methods, sensitive file exposure, directory listing, TLS weakness, CRLF injection, verbose errors, path traversal, backup file discovery, security.txt compliance.

Code Severity Description
T01 WARNING TRACE method enabled (Cross-Site Tracing risk)
T02 WARNING Host header injection accepted
T03 ERROR Dangerous HTTP methods enabled (PUT, DELETE, MKCOL, PROPFIND)
T04 ERROR Sensitive file accessible (.env, .git/HEAD, .htpasswd, phpinfo.php)
T05 WARNING Directory listing enabled
T06 WARNING Weak TLS version supported (TLS 1.0/1.1)
T07 ERROR CRLF injection possible
T08 WARNING Verbose error pages expose server information
T09 ERROR Path traversal possible
T10 WARNING X-Forwarded-Host injection accepted
T11 WARNING Default virtual host exposure via direct IP access
T12 ERROR Backup file accessible (.bak, .old, .swp)
T13 INFO security.txt (RFC 9116) missing or non-compliant
T14 ERROR CORS reflects arbitrary Origin with credentials (cross-origin data theft)
T15 ERROR CORS allows null Origin (exploitable via sandboxed iframes)
T16 WARNING CORS validates Origin with prefix/substring match instead of exact match
T17 ERROR CONNECT method accepted — server acts as open proxy
T18 ERROR X-Original-URL header overrides request path (access control bypass)
T19 ERROR X-Rewrite-URL header overrides routing (access control bypass)
T20 WARNING HTTP method override headers accepted (method restriction bypass)
T21 ERROR Extended sensitive file accessible (.env.local, phpinfo variants, .npmrc)
T22 ERROR SSL certificate expired, expiring soon, self-signed, or hostname mismatch
T23 ERROR Weak cipher suite accepted (RC4, DES, 3DES, NULL, EXPORT)
T24 WARNING crossdomain.xml allows access from any domain (wildcard)
T25 INFO Dependency files exposed (composer.json, package.json, requirements.txt)
T26 ERROR Admin panel publicly accessible (phpMyAdmin, Adminer, wp-admin)
T27 WARNING Session cookie missing security attributes (HttpOnly, Secure, SameSite)
T28 WARNING Information disclosure via response headers (X-Debug-Token, X-Backend-Server)
T29 INFO Missing modern security headers (Permissions-Policy, COOP, COEP)
T30 WARNING Dynamic page (sets cookies) missing Cache-Control no-store/private

Content & Quality

Grammar, image ALT text, accessibility, content quality

007

Heading Accessibility Checker

A11y

Checks heading accessibility: empty headings, headings hidden via CSS, and image-only headings that screen readers cannot interpret.

Code Severity Description
E01 ERROR Empty heading: no text content and no image with alt text (whitespace-only headings included)
E02 ERROR Hidden H1: H1 with a CSS class that hides it from everyone (hidden, d-none, invisible...). Screen-reader-only classes (sr-only, visually-hidden) and responsive classes are not reported
W01 WARNING Hidden heading: H2-H6 with a CSS class that hides it from everyone (same rule as E02)
W02 WARNING Image-only heading without alt text: the heading contains only images and none has alt text or an aria-label, so it has no accessible name
017

Grammar & Linguistic Quality

Grammar

Analyzes grammar, spelling, and linguistic quality across all site languages using AI (Claude/Gemini). Reports errors, warnings, and suggestions with corrected text.

Code Severity Description
E01 ERROR Grammar or spelling error (misspelling, wrong agreement, wrong word)
I02 INFO Grammar warning (spacing, capitalization, consistency): listed in the report, not counted
I01 INFO Stylistic suggestion (readability, rephrasing)
033

Pre-Go-Live Editorial Audit

Staging QA On-demand

Pre-launch editorial QA for staging sites, run on demand: re-reads the already-crawled corpus (no live fetch), runs six deterministic gap-checks not covered by the other analyzers, then an AI editorial synthesis produces content findings and a go-live verdict.

Code Severity Description
E01 ERROR Unrendered template variables left in the pages ({{var}}, <%= %>, [% %], ${var}, %%VAR%%)
E02 ERROR Absolute links, canonical, og:url or hreflang still pointing to a staging host instead of the live domain
E03 ERROR Leftover placeholder / lorem-ipsum / TODO text, or near-empty pages (headings with no real content)
W01 WARNING Brand name written inconsistently across pages (case, spacing, accents)
W02 WARNING Conflicting founding / "since" year between pages (to confirm with the client)
W03 WARNING Copyright year in the past, or an expired "valid until" date
E04 ERROR Staging or technical host indexable (pages without noindex); also inconsistent per-page robots overrides
E05 ERROR Images from placeholder services (placehold.co, dummyimage, picsum...)
E06 ERROR Placeholder alt text (alt="alt", alt="image"...): the attribute is present, so the alt coverage check looks clean
E07 ERROR Empty pages, net of the site boilerplate
E08 ERROR Call to action pointing to an empty page
E09 ERROR Privacy or cookie policy not reachable anywhere: no page, link or document
W04 WARNING CMS version exposed in the generator meta tag
W05 WARNING Admin or author username exposed (twitter:data, meta author, /author/<slug>/ URLs)
W06 WARNING Inconsistent brand suffix in <title> across pages ("Brand 2026" vs "Brand")
W07 WARNING Junk meta description: all caps, too short, or a copy of the H1
W08 WARNING Double-capital typo in visible text, buttons included ("REquest")
W09 WARNING Diverging contact details: the same mailbox on different domains, or a freemail address next to the institutional one
W10 WARNING Interface strings in another language than the page ("Read More" on an Italian site), in text and buttons
W11 WARNING Inconsistent menu: a link present on at least 80% of the pages is missing on a few (stale cache)
W12 WARNING Reserved area publicly reachable and indexable
W13 WARNING Privacy or cookie policy published only as a downloadable document (PDF, DOC...), with no HTML page

Performance

Page load, static resources, browser diagnostics

026

Homepage Browser Scan

HP

Browser-based homepage analysis using headless Chrome. Reports JavaScript console errors, failed network requests, third-party domains, and page load performance metrics.

Code Severity Description
E01 ERROR JavaScript console error or failed network request
E02 ERROR Widget captcha di terze parti in stato di errore (es. reCAPTCHA "Invalid domain for site key"): ogni visitatore vede l'errore e i form protetti dal captcha non si possono inviare. Il testo dell'errore viene letto dentro l'iframe del fornitore
W01 WARNING JavaScript console warning
W02 WARNING Le risorse che bloccano il rendering nell'<head> superano il budget di byte del percorso critico (predefinito 170 KB trasferiti), misurato nel browser
I01 INFO Misura del blocco del rendering: richieste e byte prima del primo disegno, divisi fra CSS e JS, blocchi inline nell'<head>, First Contentful Paint
027

Static Resources Checker

Res

Checks the downloadable files your pages link to — images, PDFs, Office documents, audio, video, fonts and archives: detects broken resources (4xx/5xx), oversized files, redirects and malformed URLs. Stylesheets and scripts are not covered by this check.

Code Severity Description
E01 ERROR Broken resource: the linked file is not there — 4xx client error (404 Not Found, 403 Forbidden, 410 Gone)
E02 ERROR Oversized file: larger than the size limit for its own type (default 5 MB; higher for audio and video, lower for fonts)
E03 ERROR Server error: the linked file exists but the server fails to deliver it (5xx) — an infrastructure problem, not a broken link
W01 WARNING Redirected resource: the link answers with a 3xx and the file is actually served from a different URL
W02 WARNING Malformed URL: the link contains path traversal segments (/../) and had to be normalized before checking
W03 WARNING Unreachable resource: no response at all — the request timed out or the connection failed

Ready to scan your site?

Sign up for free and run your first scan in under a minute.

Auto-generated on 2026-06-10 from analyzer_registry.json