Che cosa controlla il controllo sito RELACON

Il controllo esegue 193 regole in quattro aree. Ogni regola qui sotto spiega che cosa viene misurato, perché conta, come si presenta una correzione e da dove viene il requisito.

Quattro aree

Che cosa viene scaricato

La pagina stessa, le sue varianti http e www, robots.txt, sitemap.xml, llms.txt, security.txt, favicon, manifest dell'app web, un indirizzo inesistente per il test 404, la policy MTA-STS, fino a cinque immagini e l'og:image. La pagina viene scaricata anche una volta come Googlebot e una volta come GPTBot (il nostro controllo si presenta come tale) per rilevare blocchi anti-bot. I record DNS vengono letti tramite DNS-over-HTTPS.

Basi SEO (64 controlli)

HTTPS

CriticoPage loads over HTTPSseo.https.loads
Cosa viene controllato
Whether the page is reachable and ends up being served over HTTPS.
Perché è importante
Browsers flag HTTP pages as not secure and Google prefers HTTPS. Without encryption, third parties can read or alter the content.
Esempio
`https://www.example.com/` instead of `http://www.example.com/`
Fonte
web.dev: Why HTTPS matters
CriticoHTTP redirects to HTTPS with a 301seo.https.redirect
Cosa viene controllato
Whether the `http://` address of the page permanently (301 or 308) redirects to the HTTPS address.
Perché è importante
Old links and typed addresses without `https` would otherwise land on the unencrypted version. A permanent redirect gives search engines one clear main URL.
Esempio
`http://example.com/` → `301` → `https://example.com/`
Fonte
Google Search Central: Redirects and Google Search
CriticoValid TLS certificateseo.https.cert
Cosa viene controllato
Whether the HTTPS connection can be established without certificate errors.
Perché è importante
With an expired or mismatched certificate, browsers show a warning page and crawlers abort the request.
Esempio
Certificate for `example.com` and `www.example.com`, renewed automatically (e.g. Let's Encrypt).
Fonte
MDN: Transport Layer Security
MedioHSTS setseo.https.hsts
Cosa viene controllato
Whether the response includes the `Strict-Transport-Security` header.
Perché è importante
With HSTS, browsers only load the site over HTTPS, even when someone types `http://`. This removes the first unencrypted request.
Esempio
`Strict-Transport-Security: max-age=63072000; includeSubDomains`
Fonte
MDN: Strict-Transport-Security

Reindirizzamenti

Mediowww and non-www consistentseo.redirect.www
Cosa viene controllato
Whether the variant with or without `www` ends up on the same host as the checked page.
Perché è importante
If both variants serve content, search engines see duplicate pages and signals are split across two addresses.
Esempio
`https://www.example.com/` → `301` → `https://example.com/`
Fonte
Google Search Central: Consolidate duplicate URLs
MedioAt most 2 redirect hopsseo.redirect.hops
Cosa viene controllato
How many redirects it takes until the final page answers.
Perché è importante
Every hop adds load time, and crawlers do not follow long chains indefinitely.
Esempio
`http://example.com` → `https://example.com/` in one step instead of via `www` and a language path.
Fonte
Google Search Central: Redirects and Google Search
BassoNo 302 for permanent redirectsseo.redirect.302
Cosa viene controllato
Whether a temporary redirect (302 or 307) occurs on the way to the page.
Perché è importante
A temporary redirect tells search engines the old address will come back. For permanent moves, 301 or 308 is the clearer signal.
Esempio
`HTTP/1.1 301 Moved Permanently` instead of `302 Found`
Fonte
Google Search Central: Redirects and Google Search

Indicizzabilità

CriticoNo noindexseo.index.noindex
Cosa viene controllato
Whether the robots meta tag or the `X-Robots-Tag` header contains `noindex`.
Perché è importante
With `noindex` the page does not appear in search results. It is often left over from a staging site after a relaunch.
Esempio
`<meta name="robots" content="index, follow">` or leave the tag out entirely.
Fonte
Google Search Central: Block indexing with noindex
CriticoNot blocked by robots.txtseo.index.robotsblocked
Cosa viene controllato
Whether a `Disallow` rule in robots.txt blocks the page's path for Googlebot.
Perché è importante
Google cannot read blocked pages. They appear without a description at best, or not at all.
Esempio
`User-agent: *` with `Disallow: /internal/` instead of `Disallow: /`
Fonte
Google Search Central: Introduction to robots.txt

Title

CriticoTitle presentseo.title.present
Cosa viene controllato
Whether the page has a non-empty `<title>` element.
Perché è importante
The title is the basis for the headline in search results and the name in the browser tab.
Esempio
`<title>Tax advice in Graz | Example Ltd</title>`
Fonte
Google Search Central: Influencing your title links
MedioTitle 30–60 charactersseo.title.length
Cosa viene controllato
Whether the title is between 30 and 60 characters long.
Perché è importante
Very short titles say little, very long ones are cut off in search results. Google sets no fixed limit; the range is a guideline.
Esempio
`Tax advice in Graz | Example Ltd` (32 characters)
Fonte
Google Search Central: Influencing your title links
MedioOnly one title elementseo.title.unique
Cosa viene controllato
Whether the HTML contains exactly one `<title>` element.
Perché è importante
With several titles it is unclear which one applies. This often happens when both a theme and a plugin add one.
Esempio
A single `<title>` in the `<head>`.
Fonte
MDN: <title> element
BassoTitle not identical to H1seo.title.h1
Cosa viene controllato
Whether the title and the first H1 are word for word the same.
Perché è importante
Title and H1 do different jobs: the title sells the page in search results, the H1 guides the reader on the page. Two different phrasings make use of both.
Esempio
Title `Tax advice in Graz | Example Ltd`, H1 `Your tax adviser in Graz`
Fonte
Google Search Central: Influencing your title links
MedioTitle has at least two wordsseo.title.words
Cosa viene controllato
The title consists of at least two words.
Perché è importante
A single word tells search engines little about the page.
Esempio
Wrong: “Home”. Right: “Web design for small businesses”.
Fonte
Google Search Central
BassoTitle names more than the brandseo.title.notbrand
Cosa viene controllato
The title contains a topic in addition to the brand name.
Perché è importante
A title with only the company name is rarely clicked in search results.
Esempio
Wrong: “Muster Ltd”. Right: “Tax advice Graz | Muster”.
Fonte
Google Search Central

Meta description

MedioMeta description presentseo.meta.present
Cosa viene controllato
Whether the page has a `<meta name="description">` with content.
Perché è importante
Google often uses the description as the text below the search result. Without it, Google picks an excerpt itself, which does not always fit.
Esempio
`<meta name="description" content="Tax advice for freelancers in Graz. Free first consultation.">`
Fonte
Google Search Central: Control your snippets in search results
BassoMeta description 70–160 charactersseo.meta.length
Cosa viene controllato
Whether the meta description is between 70 and 160 characters long.
Perché è importante
Short descriptions waste space in the search result, long ones are cut off. The range is a guideline, not a Google requirement.
Esempio
Two short sentences: offer, location, next step.
Fonte
Google Search Central: Control your snippets in search results
MedioMeta description is not a placeholderseo.meta.placeholder
Cosa viene controllato
The meta description contains original text instead of a placeholder or CMS default.
Perché è importante
Placeholders appear verbatim in search results and look untrustworthy.
Esempio
Wrong: “Just another WordPress site”. Right: a sentence about the page.
Fonte
Google Search Central
BassoMeta description differs from the titleseo.meta.nottitle
Cosa viene controllato
The meta description and the title are not the same text.
Perché è importante
Two identical texts waste space in the search result.
Esempio
Wrong: title “Muster | Web design” and description “Muster - Web design”.
Fonte
Google Search Central

Canonical

MedioCanonical presentseo.canonical.present
Cosa viene controllato
Whether the page has a `<link rel="canonical">` with an address.
Perché è importante
The same page is often reachable under several addresses (with parameters, with a trailing slash). The canonical says which address belongs in the index.
Esempio
`<link rel="canonical" href="https://example.com/services/">`
Fonte
Google Search Central: Consolidate duplicate URLs
BassoCanonical is absoluteseo.canonical.absolute
Cosa viene controllato
Whether the canonical is a full address with `https://` and the domain.
Perché è importante
Relative values usually work but easily point to the wrong address with copies, proxies or a wrong base URL. Google recommends absolute URLs.
Esempio
`https://example.com/services/` instead of `/services/`
Fonte
Google Search Central: Consolidate duplicate URLs
MedioCanonical points to a reachable pageseo.canonical.self
Cosa viene controllato
Whether the canonical points to the same domain as the checked page.
Perché è importante
A canonical pointing to another domain (such as the old domain or a staging site) moves the page in the index over there.
Esempio
Page `https://example.com/blog/` with canonical `https://example.com/blog/`
Fonte
Google Search Central: Consolidate duplicate URLs
MedioCanonical matches the served URLseo.canonical.matches
Cosa viene controllato
The canonical names the same address the server serves, with trailing slash, letter case and default port normalised.
Perché è importante
If the canonical points elsewhere, Google may index the wrong address.
Esempio
Served: `/contact` → `<link rel="canonical" href="/contact">`.
Fonte
Google Search Central
BassoCanonical without tracking parametersseo.canonical.noquery
Cosa viene controllato
The canonical contains no tracking or session parameters; pagination is allowed.
Perché è importante
Parameters create duplicates of the same page.
Esempio
Wrong: `?utm_source=newsletter`. Right: `/product`.
Fonte
Google Search Central

Titoli

MedioExactly one H1seo.headings.h1
Cosa viene controllato
How many `<h1>` headings the page has.
Perché è importante
One H1 names the main topic of the page. If it is missing or there are several, it is less clear to readers, screen readers and search engines what the page is about.
Esempio
`<h1>Tax advice in Graz</h1>`, followed by `<h2>` sections
Fonte
MDN: <h1>–<h6> elements
BassoHeading order without skipped levelsseo.headings.order
Cosa viene controllato
Whether heading levels follow each other without skipping (e.g. not from H2 straight to H4).
Perché è importante
Screen reader users navigate a page by its headings. An outline without gaps helps them and makes the structure unambiguous for machines.
Esempio
H1 → H2 → H3 → H2
Fonte
MDN: <h1>–<h6> elements
BassoSubheadings (H2) presentseo.headings.h2
Cosa viene controllato
The page structures its content with at least one H2.
Perché è importante
Subheadings help readers, screen readers and search engines grasp the content.
Esempio
`<h2>Services</h2>` below the H1.
Fonte
Google Search Central

Lingua e hreflang

Mediolang attribute on the html elementseo.lang
Cosa viene controllato
Whether the `<html>` element has a `lang` attribute.
Perché è importante
The language setting drives pronunciation in screen readers, hyphenation and automatic translation.
Esempio
`<html lang="en">`
Fonte
MDN: lang attribute
Bassohreflang valid (with x-default)seo.hreflang
Cosa viene controllato
Whether existing `hreflang` entries use valid language codes and include an `x-default`. Single-language sites need none.
Perché è importante
With hreflang, Google shows each user the matching language version. Invalid codes are ignored; `x-default` covers all other languages.
Esempio
`<link rel="alternate" hreflang="en-GB" href="https://example.com/">` and `hreflang="x-default"`
Fonte
Google Search Central: Localized versions of your pages

Open Graph

Medioog:title presentseo.og.title
Cosa viene controllato
Whether the page has a `<meta property="og:title">` with content.
Perché è importante
LinkedIn, Facebook, Slack and messengers show og:title as the headline of the link preview.
Esempio
`<meta property="og:title" content="Tax advice in Graz">`
Fonte
The Open Graph protocol
Medioog:description presentseo.og.description
Cosa viene controllato
Whether the page has a `<meta property="og:description">` with content.
Perché è importante
The description appears below the headline of the link preview and helps decide whether someone clicks.
Esempio
`<meta property="og:description" content="Free first consultation, appointments online too.">`
Fonte
The Open Graph protocol
Medioog:image reachable and at least 1200 px wideseo.og.image
Cosa viene controllato
Whether an og:image is set, whether it can be loaded and whether it is at least 1200 px wide.
Perché è importante
Without an image, a shared page looks plain. Images that are too small are shown as a small tile instead of a large preview.
Esempio
`<meta property="og:image" content="https://example.com/og.jpg">` at 1200×630 px
Fonte
The Open Graph protocol
Bassoog:type presentseo.og.type
Cosa viene controllato
The page declares its content type with `og:type`.
Perché è importante
Social networks present the content more appropriately.
Esempio
`<meta property="og:type" content="website">`
Fonte
Open Graph protocol
Medioog:image is a full HTTPS URLseo.og.imageabsolute
Cosa viene controllato
The preview image is given as a full HTTPS URL.
Perché è importante
Relative addresses and http fail to load a preview on some services.
Esempio
Right: `https://example.com/og.jpg`.
Fonte
Open Graph protocol
Bassoog:url matches the canonicalseo.og.url
Cosa viene controllato
`og:url` names the same address as the canonical, otherwise the served page.
Perché è importante
Mismatched addresses create duplicates when sharing.
Esempio
`<meta property="og:url" content="https://example.com/page">`
Fonte
Open Graph protocol
Bassoog:image with width and heightseo.og.imagesize
Cosa viene controllato
The preview image width and height are declared in the head.
Perché è importante
Without dimensions the preview loads later and is sometimes cropped wrongly.
Esempio
`og:image:width` 1200 and `og:image:height` 630.
Fonte
Open Graph protocol
Bassoog:locale in the de_AT formatseo.og.locale
Cosa viene controllato
The page language is declared in `og:locale` as language_COUNTRY.
Perché è importante
Platforms then show the preview in the right language.
Esempio
`<meta property="og:locale" content="de_AT">`
Fonte
Open Graph protocol

Card di X (Twitter)

Bassotwitter:card presentseo.og.twitter
Cosa viene controllato
Whether the page has a `<meta name="twitter:card">`.
Perché è importante
X (Twitter) uses twitter:card to pick the preview format. With `summary_large_image` the image is shown large.
Esempio
`<meta name="twitter:card" content="summary_large_image">`
Fonte
X Developer Platform: Cards markup
Bassotwitter:card is summary_large_imageseo.twitter.large
Cosa viene controllato
The page uses the large card for X/Twitter.
Perché è importante
Large cards are more visible and get more clicks.
Esempio
`<meta name="twitter:card" content="summary_large_image">`
Fonte
Open Graph protocol
Bassotwitter:image present (or og:image)seo.twitter.image
Cosa viene controllato
An image is provided for X/Twitter, directly or as an og:image fallback.
Perché è importante
Without an image there is no preview card.
Esempio
`<meta name="twitter:image" content="https://example.com/og.jpg">`
Fonte
Open Graph protocol

robots.txt

Mediorobots.txt presentseo.robots.present
Cosa viene controllato
Whether a file is served at `/robots.txt` with status 200.
Perché è importante
Crawlers request robots.txt first. It controls which areas may be read and points to the sitemap.
Esempio
`User-agent: *`, `Allow: /`, `Sitemap: https://example.com/sitemap.xml`
Fonte
RFC 9309: Robots Exclusion Protocol
Bassorobots.txt points to the sitemapseo.robots.sitemap
Cosa viene controllato
Whether robots.txt contains a `Sitemap:` line.
Perché è importante
This way every crawler finds the sitemap, including those you never submitted it to.
Esempio
`Sitemap: https://example.com/sitemap.xml`
Fonte
Google Search Central: Build and submit a sitemap
Bassorobots.txt has a wildcard ruleseo.robots.wildcard
Cosa viene controllato
The robots.txt contains a `User-agent: *` group.
Perché è importante
Without a general rule the default for all unlisted crawlers is missing.
Esempio
`User-agent: *` followed by `Allow: /`.
Fonte
RFC 9309 (robots.txt)

sitemap.xml

Mediositemap.xml presentseo.sitemap.present
Cosa viene controllato
Whether a file is served at `/sitemap.xml` with status 200.
Perché è importante
The sitemap lists every page that should be indexed. New and deeply linked pages are found faster.
Esempio
`<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><url><loc>https://example.com/</loc></url></urlset>`
Fonte
Google Search Central: Build and submit a sitemap
Mediositemap.xml is valid XMLseo.sitemap.valid
Cosa viene controllato
Whether the sitemap starts with an XML declaration, `<urlset>` or `<sitemapindex>`.
Perché è importante
Some servers return an HTML page at `/sitemap.xml` (such as the home page or an error page). Crawlers cannot use that.
Esempio
`<?xml version="1.0" encoding="UTF-8"?>` followed by `<urlset …>`
Fonte
sitemaps.org: Sitemaps XML format
BassoSitemap contains the checked URLseo.sitemap.contains
Cosa viene controllato
Whether the checked page, or at least the domain, appears in the sitemap.
Perché è importante
Pages missing from the sitemap are crawled less often and later.
Esempio
`<url><loc>https://example.com/services/</loc></url>`
Fonte
Google Search Central: Build and submit a sitemap
BassoSitemap contains lastmodseo.sitemap.lastmod
Cosa viene controllato
Whether the sitemap contains `<lastmod>` entries.
Perché è importante
Google uses lastmod to recrawl changed pages sooner, as long as the date is accurate.
Esempio
`<lastmod>2026-10-01</lastmod>` only when the content really changed
Fonte
Google Search Central: Build and submit a sitemap
BassoSitemap and indexability do not contradictseo.sitemap.indexconsistent
Cosa viene controllato
A noindex page is not listed in the sitemap, an indexable page is.
Perché è importante
Contradictory signals confuse search engines and cost trust.
Esempio
Remove the noindex page from the sitemap or drop noindex.
Fonte
sitemaps.org
MedioSitemap contains entriesseo.sitemap.entries
Cosa viene controllato
The sitemap lists at least one address or a child index.
Perché è importante
An empty sitemap does not help search engines.
Esempio
`<urlset><url><loc>https://example.com/</loc></url></urlset>`
Fonte
sitemaps.org
BassoNo legal pages in the sitemapseo.sitemap.nolegal
Cosa viene controllato
Imprint, privacy policy, terms, cookie notices and terms of use are not listed in the sitemap.
Perché è importante
Legal pages exist for visitors, not as search results.
Esempio
Remove `/imprint` and `/privacy` from the sitemap.
Fonte
sitemaps.org

Pagina 404

MedioUnknown URL returns a real 404seo.404.real
Cosa viene controllato
Whether a deliberately non-existent address answers with status 404.
Perché è importante
If an error page returns status 200 (soft 404), Google treats it as real content, and empty or duplicate pages end up in the index.
Esempio
`/does-not-exist` → `HTTP/2 404` with a helpful error page
Fonte
Google Search Central: Soft 404 errors
Basso404 page has contentseo.404.content
Cosa viene controllato
The 404 page explains the situation in a few sentences.
Perché è importante
A bare error message leaves visitors stranded.
Esempio
“This page no longer exists. Here is the home page.”
Fonte
Google Search Central

Struttura degli URL

BassoURL without capitals, underscores or session parametersseo.404.url
Cosa viene controllato
Whether the URL path contains capital letters or underscores and whether session parameters appear in the URL.
Perché è importante
URLs are case-sensitive, which creates duplicate addresses. Google recommends hyphens over underscores, and session parameters create endless variants.
Esempio
`/tax-advice/` instead of `/Tax_Advice/?sid=123`
Fonte
Google Search Central: URL structure best practices
BassoTrailing slash used consistentlyseo.url.trailingslash
Cosa viene controllato
Internal links and the page itself use the trailing slash the same way.
Perché è importante
With and without a slash creates two addresses for one page.
Esempio
Either `/services` everywhere or `/services/` everywhere, not mixed.
Fonte
Google Search Central
BassoURL is readableseo.url.readable
Cosa viene controllato
The path consists of readable words, not IDs or hashes.
Perché è importante
Readable addresses get more clicks and are easier to understand.
Esempio
Good: `/blog/crypto-tax-austria`. Bad: `/p/8f14e45f`.
Fonte
Google Search Central

Meta tag robots

Bassorobots directive presentseo.robotsmeta.present
Cosa viene controllato
The page has a robots meta or an X-Robots-Tag.
Perché è importante
Without it defaults apply; one line documents the intent.
Esempio
`<meta name="robots" content="index, follow, max-snippet:-1, max-image-preview:large">`
Fonte
Google Search Central
MedioNo nofollow in the robots metaseo.robotsmeta.nofollow
Cosa viene controllato
The page does not tell crawlers to ignore its links.
Perché è importante
Page-level `nofollow` devalues every internal link and slows indexing.
Esempio
Wrong: `index, nofollow`. Right: `index, follow`.
Fonte
Google Search Central

Link e navigazione

BassoNavigation element presentseo.nav.present
Cosa viene controllato
The page has a `<nav>` element or `role="navigation"`.
Perché è importante
Semantic navigation is clearer for screen readers and crawlers.
Esempio
`<nav aria-label="Main navigation">…</nav>`
Fonte
W3C: WAI-ARIA

Visibilità IA (38 controlli)

Controllo degli snippet

Mediomax-image-preview:large allowedgeo.snippet.imagepreview
Cosa viene controllato
The robots meta or X-Robots-Tag allows large image previews.
Perché è importante
Without it Google only shows small preview images.
Esempio
`max-image-preview:large`
Fonte
Google: Snippet-Steuerung
MedioNo data-nosnippet on the main contentgeo.snippet.datanosnippet
Cosa viene controllato
Sections with `data-nosnippet` do not cover the main content.
Perché è importante
Text marked this way does not appear in search results and AI answers.
Esempio
Wrong: `<main data-nosnippet>`. Right: mark only small side notes.
Fonte
Google: Snippet-Steuerung
CriticoNo nosnippetgeo.snippet.nosnippet
Cosa viene controllato
Whether the robots meta tag contains `nosnippet`.
Perché è importante
With `nosnippet`, Google may not show any text excerpt, including in AI Overviews. The page can then hardly serve as a source for answers.
Esempio
`<meta name="robots" content="index, follow">` without `nosnippet`
Fonte
Google Search Central: Robots meta tag specifications
Mediomax-snippet not too smallgeo.snippet.maxsnippet
Cosa viene controllato
Whether `max-snippet` in the robots meta tag limits the text excerpt to fewer than 50 characters.
Perché è importante
A very small value leaves hardly any text for search results and AI answers. `-1` allows excerpts of any length.
Esempio
`<meta name="robots" content="max-snippet:-1">`
Fonte
Google Search Central: Robots meta tag specifications

Contenuto pronto per le risposte

MedioContent reachable without JavaScriptgeo.content.noscript
Cosa viene controllato
The page delivers enough text in the HTML or a noscript hint.
Perché è importante
Bots without JavaScript only see the raw HTML; an empty container stays empty.
Esempio
`<noscript><p>Please enable JavaScript …</p></noscript>` plus server-rendered text.
Fonte
Google Search Central
CriticoAt least 300 words of textgeo.content.words
Cosa viene controllato
How many words of visible text the page's HTML contains.
Perché è importante
AI models cite pages that answer a question themselves. With little text there is hardly anything to cite. 300 words is a guideline, not a Google requirement.
Esempio
A service page with a description, process, pricing and common questions
Fonte
Google Search Central: Creating helpful, reliable, people-first content
CriticoContent not rendered by JavaScript onlygeo.content.notjs
Cosa viene controllato
Whether the raw HTML (before JavaScript runs) contains text, and how much text there is compared to inline scripts.
Perché è importante
Many AI crawlers do not run JavaScript. Anything that only appears in the browser stays invisible to them.
Esempio
Server-side rendering or static pages instead of an empty `<div id="root"></div>`
Fonte
Google Search Central: Understand JavaScript SEO basics
BassoQuestion headings with a direct answergeo.content.qa
Cosa viene controllato
Whether headings phrased as questions are followed by more content. Pages without question headings pass.
Perché è importante
AI search likes to quote the answer right below a matching question. A question without an answer below it helps no one.
Esempio
`<h2>How much is a first consultation?</h2><p>The first consultation is free and takes 30 minutes.</p>`
Fonte
Google Search Central: Creating helpful, reliable, people-first content
BassoLists or tables presentgeo.content.lists
Cosa viene controllato
Whether the page contains lists (`<ul>`, `<ol>`) or tables (`<table>`).
Perché è importante
Lists and tables are easy to read and to reuse in answers, such as steps, prices or comparisons.
Esempio
`<ol><li>Send documents</li><li>First meeting</li><li>Quote</li></ol>`
Fonte
MDN: <ul> element
BassoConcrete facts in the textgeo.content.facts
Cosa viene controllato
The text names numbers, years, percentages or names instead of general claims.
Perché è importante
Concrete facts make content quotable for AI answers.
Esempio
“Since 2014 we have served 120 clients in Vienna.”
Fonte
Google Search Central
BassoNo filler textgeo.content.filler
Cosa viene controllato
The text avoids empty phrases and filler.
Perché è importante
Filler dilutes the answer and is not quoted.
Esempio
Wrong: “In today's fast-paced world it is important to note …”.
Fonte
Google Search Central
BassoAuthor identifiablegeo.content.author
Cosa viene controllato
On article pages an author is named, in the schema, a meta tag or visibly.
Perché è importante
AI systems prefer content with clear authorship.
Esempio
`<meta name="author" content="Max Muster">` or `author` in the article schema.
Fonte
Google Search Central

llms.txt

Mediollms.txt presentgeo.llms.present
Cosa viene controllato
Whether a file with content is served at `/llms.txt`.
Perché è importante
llms.txt is a proposed short overview in Markdown: who you are and which pages matter. AI assistants find the right content faster.
Esempio
`# Example Ltd` + `> Tax advice in Graz` + `- [Services](https://example.com/services/)`
Fonte
llmstxt.org: The /llms.txt file
Bassollms.txt with H1 and short descriptiongeo.llms.structure
Cosa viene controllato
Whether llms.txt starts with a `# heading` and contains a descriptive paragraph.
Perché è importante
The format requires only the H1, followed by a short summary. Without it, a model lacks the context for the links.
Esempio
`# Example Ltd` followed by `> Tax advice for freelancers and small businesses in Graz.`
Fonte
llmstxt.org: The /llms.txt file
Bassollms-full.txt present (bonus)geo.llms.full
Cosa viene controllato
Whether a file with the full content is served at `/llms-full.txt`. The file is optional: if it is missing, the check does not count.
Perché è importante
Some tools load llms-full.txt to read all content in one piece instead of fetching every linked page separately.
Esempio
`/llms-full.txt` with the text of every page linked in llms.txt, as Markdown
Fonte
llmstxt.org: The /llms.txt file
Bassollms.txt linked in the headgeo.llms.linked
Cosa viene controllato
The head contains an alternate link with `type="text/plain"` or `text/markdown"` to the llms.txt.
Perché è importante
AI tools find the file without guessing.
Esempio
`<link rel="alternate" type="text/plain" href="/llms.txt">`
Fonte
llmstxt.org
Bassollms.txt starts with name and short descriptiongeo.llms.intro
Cosa viene controllato
The file starts with an H1 and a quoted paragraph describing the company.
Perché è importante
AI tools immediately recognise who runs the site.
Esempio
`# Muster GmbH` and below `> Muster GmbH advises small businesses in Vienna.`
Fonte
llmstxt.org
Bassollms.txt is plain textgeo.llms.plaintext
Cosa viene controllato
llms.txt is served as `text/plain` or `text/markdown` and contains no HTML or JSON.
Perché è importante
Only then can AI tools read the file directly.
Esempio
Response header `Content-Type: text/plain; charset=utf-8`.
Fonte
llmstxt.org
Bassollms.txt under 100 KBgeo.llms.size
Cosa viene controllato
The file is smaller than 100 KB and was read completely.
Perché è importante
Very large files get truncated by tools.
Esempio
Include only the most important pages and sections.
Fonte
llmstxt.org

Crawler IA in robots.txt

BassoAI training botsgeo.crawlers.training
Cosa viene controllato
Whether robots.txt blocks bots that collect content only for training models (Common Crawl's CCBot, Applebot-Extended).
Perché è importante
Blocking is a deliberate choice and costs little: it keeps your texts out of training data, but AI search can still cite your page. Blocked training bots only cause a small deduction.
Esempio
`User-agent: CCBot` with `Disallow: /` blocks Common Crawl only.
Fonte
Common Crawl: CCBot
CriticoOAI-SearchBot is allowedgeo.bots.oaisearchbot
Cosa viene controllato
The rule checks whether robots.txt allows OAI-SearchBot to access the tested page.
Perché è importante
OAI-SearchBot reads pages for search in ChatGPT.
Esempio
User-agent: OAI-SearchBot Allow: /
Fonte
OpenAI / Anthropic Crawler-Dokumentation
CriticoChatGPT-User is allowedgeo.bots.chatgptuser
Cosa viene controllato
The rule checks whether robots.txt allows ChatGPT-User to access the tested page.
Perché è importante
ChatGPT-User fetches pages when someone mentions an address in chat.
Esempio
User-agent: ChatGPT-User Allow: /
Fonte
OpenAI / Anthropic Crawler-Dokumentation
CriticoClaude-User is allowedgeo.bots.claudeuser
Cosa viene controllato
The rule checks whether robots.txt allows Claude-User to access the tested page.
Perché è importante
Claude-User fetches pages on behalf of a user.
Esempio
User-agent: Claude-User Allow: /
Fonte
OpenAI / Anthropic Crawler-Dokumentation
CriticoClaude-SearchBot is allowedgeo.bots.claudesearchbot
Cosa viene controllato
The rule checks whether robots.txt allows Claude-SearchBot to access the tested page.
Perché è importante
Claude-SearchBot builds the search index for Claude.
Esempio
User-agent: Claude-SearchBot Allow: /
Fonte
OpenAI / Anthropic Crawler-Dokumentation
CriticoPerplexityBot is allowedgeo.bots.perplexitybot
Cosa viene controllato
The rule checks whether robots.txt allows PerplexityBot to access the tested page.
Perché è importante
PerplexityBot supplies the sources for Perplexity answers.
Esempio
User-agent: PerplexityBot Allow: /
Fonte
OpenAI / Anthropic Crawler-Dokumentation
BassoGPTBot is allowedgeo.bots.gptbot
Cosa viene controllato
The rule checks whether robots.txt allows GPTBot to access the tested page.
Perché è importante
GPTBot collects content for training OpenAI models.
Esempio
User-agent: GPTBot Allow: /
Fonte
OpenAI / Anthropic Crawler-Dokumentation
BassoClaudeBot is allowedgeo.bots.claudebot
Cosa viene controllato
The rule checks whether robots.txt allows ClaudeBot to access the tested page.
Perché è importante
ClaudeBot collects content for training Anthropic models.
Esempio
User-agent: ClaudeBot Allow: /
Fonte
OpenAI / Anthropic Crawler-Dokumentation
BassoGoogle-Extended is allowedgeo.bots.googleextended
Cosa viene controllato
The rule checks whether robots.txt allows Google-Extended to access the tested page.
Perché è importante
Google-Extended controls whether Google uses content for Gemini.
Esempio
User-agent: Google-Extended Allow: /
Fonte
OpenAI / Anthropic Crawler-Dokumentation

Entità

MedioOrganization/Person JSON-LD presentgeo.entity.identity
Cosa viene controllato
Whether the page contains JSON-LD of type Organization, Person, ProfessionalService or LocalBusiness.
Perché è importante
It tells machines unambiguously who is behind the site. Search engines and AI models then attribute content to the right business.
Esempio
`{"@context":"https://schema.org","@type":"Organization","name":"Example Ltd","url":"https://example.com"}`
Fonte
Google Search Central: Organization structured data
MediosameAs with at least 2 profilesgeo.entity.sameas
Cosa viene controllato
How many profiles (LinkedIn, X, GitHub, company register …) the entity schema links via `sameAs`.
Perché è importante
sameAs connects your website with your other profiles. This helps to tell you apart from others with the same name.
Esempio
`"sameAs": ["https://www.linkedin.com/company/example", "https://github.com/example"]`
Fonte
schema.org: sameAs
BassoknowsAbout in the entity schemageo.entity.knowsabout
Cosa viene controllato
The Organization or Person schema names topics in `knowsAbout`.
Perché è importante
This helps search engines and AI assistants place the entity by topic.
Esempio
`"knowsAbout": ["Taxes", "Accounting"]`
Fonte
Schema.org
BassoServices marked up as Offergeo.entity.offers
Cosa viene controllato
The entity schema describes services with `makesOffer` or `hasOfferCatalog`.
Perché è importante
This tells Google which services are offered.
Esempio
`"makesOffer": [{"@type":"Offer","itemOffered":{"@type":"Service","name":"Consulting"}}]`
Fonte
Google: Strukturierte Daten
BassoPerson links a LinkedIn profilegeo.entity.personlinkedin
Cosa viene controllato
A person in the schema references a personal LinkedIn profile via sameAs.
Perché è importante
The profile substantiates the identity of the person behind the page.
Esempio
`"sameAs": ["https://www.linkedin.com/in/max-muster"]`
Fonte
Schema.org

Aggiornamento

BassoFreshness signal presentgeo.freshness
Cosa viene controllato
Whether the page states a modification date: the `Last-Modified` header, `article:modified_time` or `dateModified`.
Perché è importante
For questions about prices, laws or deadlines, search engines and AI models prefer current sources. Without a date, freshness cannot be told.
Esempio
`<meta property="article:modified_time" content="2026-10-01T09:00:00+02:00">`
Fonte
Google Search Central: Influence the byline date
BassoVisible date on article pagesgeo.content.dateshown
Cosa viene controllato
The article page shows a publication or modification date in the text.
Perché è importante
A visible date makes freshness verifiable.
Esempio
`<time datetime="2026-10-12">12 October 2026</time>`
Fonte
Google Search Central

Dati strutturati (29 controlli)

JSON-LD in generale

MedioAt least one JSON-LD blockstructured.jsonld.present
Cosa viene controllato
The page contains at least one block of structured data as JSON-LD.
Perché è importante
Structured data helps search engines understand content and entities.
Esempio
`<script type="application/ld+json">{"@context":"https://schema.org","@type":"Organization"}</script>`
Fonte
Google: Strukturierte Daten
CriticoAll JSON-LD blocks are parseablestructured.jsonld.parseable
Cosa viene controllato
Every JSON-LD block is valid JSON.
Perché è importante
A syntax error makes every statement in the block unusable.
Esempio
Check the block with a JSON validator.
Fonte
Google: Strukturierte Daten
Medio@context schema.orgstructured.jsonld.context
Cosa viene controllato
The blocks carry `@context: https://schema.org`.
Perché è importante
Without a context the types are ambiguous for search engines.
Esempio
`"@context": "https://schema.org"`
Fonte
Schema.org
Basso@id with an absolute URLstructured.entity.id
Cosa viene controllato
Whether the main entities (Organization, Person, WebSite) carry an @id that is an absolute URL.
Perché è importante
A stable @id makes an entity recognisable across pages. Other blocks can point to it instead of repeating the same details.
Esempio
`{"@type":"Organization","@id":"https://example.com/#organization","name":"Example Ltd"}`
Fonte
W3C JSON-LD 1.1: Node identifiers
BassoinLanguage declaredstructured.inlanguage
Cosa viene controllato
Whether the WebSite, WebPage or article states the content language with inLanguage, and whether it matches the page's lang attribute.
Perché è importante
The language tag helps match the content to the right language version and audience, which matters most on multilingual sites.
Esempio
`{"@type":"WebSite","name":"Example Ltd","url":"https://example.com/","inLanguage":"en-GB"}`
Fonte
schema.org: inLanguage
BassoSchema image URLs are absolutestructured.image.absolute
Cosa viene controllato
Whether every image reference in the JSON-LD (image, logo, thumbnailUrl) is a full http(s) address.
Perché è importante
Structured data is often processed apart from the page. Relative paths or data URIs cannot be resolved reliably there, and the image goes missing from the result.
Esempio
`"logo": "https://example.com/logo.png"` instead of `"logo": "/logo.png"`
Fonte
Google Search Central: General structured data guidelines

WebSite

BassoWebSite schema presentstructured.website.present
Cosa viene controllato
A WebSite schema describes the site as a whole.
Perché è importante
It links pages to name, URL and language.
Esempio
`{"@type":"WebSite","name":"Example","url":"https://example.com"}`
Fonte
Google: Strukturierte Daten
BassoWebSite with name and urlstructured.website.fields
Cosa viene controllato
The WebSite schema contains `name` and `url`.
Perché è importante
Both are required for the markup.
Esempio
`{"@type":"WebSite","name":"Example","url":"https://example.com"}`
Fonte
Google: Strukturierte Daten

Breadcrumb

BassoBreadcrumbList on subpagesstructured.breadcrumb
Cosa viene controllato
Subpages mark up their path as a BreadcrumbList.
Perché è importante
Google can then show the path in search results.
Esempio
`{"@type":"BreadcrumbList","itemListElement":[…]}`
Fonte
Google: Strukturierte Daten
BassoBreadcrumb items have URLsstructured.breadcrumb.urls
Cosa viene controllato
Whether every BreadcrumbList entry except the last one points to an absolute URL through item.
Perché è importante
Google requires the URL for every level except the current page. Without it the trail cannot be shown as a breadcrumb in search results.
Esempio
`{"@type":"ListItem","position":1,"name":"Services","item":"https://example.com/services"}`
Fonte
Google Search Central: Breadcrumb structured data
BassoBreadcrumb with at least two levelsstructured.breadcrumb.levels
Cosa viene controllato
Whether every BreadcrumbList has at least two entries.
Perché è importante
A trail with a single level does not show where the page sits on the site. Google recommends at least two ListItems.
Esempio
Home › Services › Bookkeeping
Fonte
Google Search Central: Breadcrumb structured data

Articoli

MedioArticle schema complete (for articles)structured.article
Cosa viene controllato
Articles name `headline`, `author`, `datePublished` and `image`.
Perché è importante
This is the basis for article rich results.
Esempio
`{"@type":"Article","headline":"…","author":{…},"datePublished":"2026-10-12","image":"https://…"}`
Fonte
Google: Strukturierte Daten

Altri tipi di schema

BassoOther schema types completestructured.other
Cosa viene controllato
FAQPage, Product, LocalBusiness, Event, Review and VideoObject are complete when present.
Perché è importante
Incomplete blocks produce no rich results.
Esempio
Add the required fields per type from the Google documentation.
Fonte
Google: Strukturierte Daten

Organizzazione e persona

BassoOrganization with name, url, address and sameAsstructured.org.fields
Cosa viene controllato
Whether the Organization schema (including subtypes such as LocalBusiness or ProfessionalService) states a name, the website URL, a postal address and sameAs profiles.
Perché è importante
These details let Google tie the page to your company without guessing, for example in the knowledge panel. sameAs links the site to your profiles elsewhere.
Esempio
`{"@type":"Organization","name":"Example Ltd","url":"https://example.com/","address":{"@type":"PostalAddress","streetAddress":"1 Main Street","postalCode":"1010","addressLocality":"Vienna","addressCountry":"AT"},"sameAs":["https://www.linkedin.com/company/example"]}`
Fonte
Google Search Central: Organization structured data
BassoPerson schemastructured.person.present
Cosa viene controllato
Whether the structured data describes a person, for example as an author, an owner or the subject of a profile page. Its absence does not count against you.
Perché è importante
For consultants, authors and sole traders, a Person schema helps search engines and AI assistants attribute content to a specific person.
Esempio
`{"@type":"Person","name":"Anna Example","jobTitle":"Tax adviser","url":"https://example.com/team/anna"}`
Fonte
schema.org: Person

FAQPage

BassoFAQPage schemastructured.faq.present
Cosa viene controllato
Whether the page has a FAQPage schema. Its absence does not count; it only makes sense on pages with real questions and answers.
Perché è importante
Since 2023 Google shows FAQ results only for well-known government and health sites. Clearly marked-up questions and answers still help search engines and AI assistants find and quote your answers.
Esempio
`{"@type":"FAQPage","mainEntity":[{"@type":"Question","name":"What does the first meeting cost?","acceptedAnswer":{"@type":"Answer","text":"The first meeting is free."}}]}`
Fonte
Google Search Central: FAQPage structured data
MedioEvery FAQ question has an answerstructured.faq.answers
Cosa viene controllato
Whether every Question in the FAQPage schema has a name and an acceptedAnswer with text.
Perché è importante
name and acceptedAnswer.text are required. A question without an answer is useless to search engines and makes the markup invalid.
Esempio
`"acceptedAnswer": {"@type":"Answer","text":"We reply within one working day."}`
Fonte
Google Search Central: FAQPage structured data
MedioFAQ content visible on the pagestructured.faq.visible
Cosa viene controllato
Whether each question from the FAQPage schema, and roughly its answer, appears in the visible page text. Text in scripts or hidden with the hidden attribute or display:none does not count.
Perché è importante
Google requires marked-up questions and answers to be visible to visitors. Markup for content nobody can see is treated as misleading and can lead to a manual action.
Esempio
Questions as headings or `<summary>`, with the answer as text right below.
Fonte
Google Search Central: FAQPage structured data

Valutazioni

BassoAggregateRatingstructured.rating.present
Cosa viene controllato
Whether the structured data contains an overall rating (AggregateRating), including one nested in Product, LocalBusiness or similar types. Its absence does not count.
Perché è importante
Genuine ratings can appear as stars in search results. Google only allows this for certain types, and not for ratings a business publishes about itself on its own site.
Esempio
`"aggregateRating":{"@type":"AggregateRating","ratingValue":4.7,"reviewCount":38,"bestRating":5}`
Fonte
Google Search Central: Review snippet structured data
BassoRating with ratingValue and a countstructured.rating.fields
Cosa viene controllato
Whether every AggregateRating has a ratingValue and a count (reviewCount or ratingCount).
Perché è importante
Both are required. Without a count the rating cannot be put in context, and Google shows no stars.
Esempio
`"ratingValue": 4.7, "reviewCount": 38`
Fonte
Google Search Central: Review snippet structured data
BassobestRating declaredstructured.rating.best
Cosa viene controllato
Whether the aggregate rating states its scale with bestRating, and whether ratingValue falls within it.
Perché è importante
Without bestRating Google assumes a scale up to 5. If you rate on another scale, such as out of 10, the value is shown wrongly.
Esempio
`"ratingValue": 9.1, "bestRating": 10, "worstRating": 1`
Fonte
Google Search Central: Review snippet structured data

Eventi

BassoEvent schemastructured.event.present
Cosa viene controllato
Whether the page marks up events as Event (or a subtype such as BusinessEvent). Its absence does not count.
Perché è importante
Google can show marked-up events with date and place in its event search. That is worth it for seminars, webinars and other dates.
Esempio
`{"@type":"Event","name":"Tax update 2027","startDate":"2027-01-20T18:00+01:00","location":{"@type":"Place","name":"Example Ltd","address":"1 Main Street, 1010 Vienna"}}`
Fonte
Google Search Central: Event structured data
BassoEvent with name and startDatestructured.event.fields
Cosa viene controllato
Whether every event has a name and a start date in ISO 8601 format.
Perché è importante
name and startDate are required. A date like "20 January" cannot be read reliably by a machine; with time and time zone the slot is unambiguous.
Esempio
`"startDate": "2027-01-20T18:00+01:00"`
Fonte
Google Search Central: Event structured data
BassoEvent location with addressstructured.event.location
Cosa viene controllato
Whether every event has a location: a Place with an address or, for online events, a VirtualLocation.
Perché è importante
Google requires location. For in-person events the Place needs an address, otherwise the event cannot be matched to local searches.
Esempio
`"location":{"@type":"Place","name":"Seminar room","address":{"@type":"PostalAddress","streetAddress":"1 Main Street","addressLocality":"Vienna","postalCode":"1010","addressCountry":"AT"}}`
Fonte
Google Search Central: Event structured data

Video

BassoVideoObjectstructured.video.present
Cosa viene controllato
Whether videos on the page are marked up as VideoObject. Its absence does not count.
Perché è importante
VideoObject tells Google what a video is about, so it can show it with a thumbnail in search and in the video tab.
Esempio
`{"@type":"VideoObject","name":"How the import works","description":"Two minutes on the CSV import.","thumbnailUrl":"https://example.com/video.jpg","uploadDate":"2026-10-01T09:00:00+02:00"}`
Fonte
Google Search Central: Video structured data
BassoVideo has a namestructured.video.name
Cosa viene controllato
Whether every VideoObject has a title (name).
Perché è importante
name is required. Without a title the video is not shown as a video result.
Esempio
`"name": "How the import works"`
Fonte
Google Search Central: Video structured data
BassoVideo has a descriptionstructured.video.description
Cosa viene controllato
Whether every VideoObject has a description.
Perché è importante
Google recommends a description. It tells search engines and AI assistants what the video shows without playing it.
Esempio
`"description": "Two minutes on importing a CSV from your accounts."`
Fonte
Google Search Central: Video structured data
BassoVideo has a thumbnailUrlstructured.video.thumbnail
Cosa viene controllato
Whether every VideoObject provides a preview image through thumbnailUrl.
Perché è importante
thumbnailUrl is required. Without a thumbnail Google does not show the video as a video result.
Esempio
`"thumbnailUrl": ["https://example.com/video-16x9.jpg"]`
Fonte
Google Search Central: Video structured data
BassoVideo has an uploadDatestructured.video.uploaddate
Cosa viene controllato
Whether every VideoObject has a publication date in ISO 8601 format, ideally with time and time zone.
Perché è importante
uploadDate is required. Google recommends adding the time zone; otherwise the time is read in Googlebot's time zone.
Esempio
`"uploadDate": "2026-10-01T09:00:00+02:00"`
Fonte
Google Search Central: Video structured data

Tecnica (62 controlli)

Mobile

CriticoViewport meta presenttech.viewport
Cosa viene controllato
The page sets `<meta name="viewport">`.
Perché è importante
Without a viewport mobile browsers zoom out and the page looks tiny.
Esempio
`<meta name="viewport" content="width=device-width, initial-scale=1">`
Fonte
Google: Mobile-freundliche Seiten

Header di sicurezza

MedioContent-Security-Policy settech.security.csp
Cosa viene controllato
The `Content-Security-Policy` header is set.
Perché è importante
A CSP limits which scripts and resources may load.
Esempio
`Content-Security-Policy: default-src 'self'`
Fonte
MDN: HTTP headers
BassoX-Content-Type-Options settech.security.xcto
Cosa viene controllato
The `X-Content-Type-Options: nosniff` header is set.
Perché è importante
It stops browsers from interpreting files as another type.
Esempio
`X-Content-Type-Options: nosniff`
Fonte
MDN: HTTP headers
BassoReferrer-Policy settech.security.referrer
Cosa viene controllato
The `Referrer-Policy` header is set.
Perché è importante
It limits which addresses are passed to other sites.
Esempio
`Referrer-Policy: strict-origin-when-cross-origin`
Fonte
MDN: HTTP headers
BassoPermissions-Policy settech.security.permissions
Cosa viene controllato
The `Permissions-Policy` header is set.
Perché è importante
It disables browser features such as camera and microphone.
Esempio
`Permissions-Policy: camera=(), microphone=(), geolocation=()`
Fonte
MDN: HTTP headers
BassoClickjacking protectiontech.security.clickjacking
Cosa viene controllato
The page protects itself with `frame-ancestors` or `X-Frame-Options`.
Perché è importante
Otherwise the page can be embedded invisibly in another site.
Esempio
`frame-ancestors 'none'` in the CSP or `X-Frame-Options: DENY`.
Fonte
MDN: HTTP headers
BassoCross-Origin-Opener-Policy settech.security.coop
Cosa viene controllato
The `Cross-Origin-Opener-Policy` header is set.
Perché è importante
It isolates browsing contexts and makes window-based attacks harder.
Esempio
`Cross-Origin-Opener-Policy: same-origin`
Fonte
MDN: HTTP headers
BassoCross-Origin-Embedder-Policy settech.security.coep
Cosa viene controllato
The `Cross-Origin-Embedder-Policy` header is set.
Perché è importante
It prevents embedding foreign resources without permission.
Esempio
`Cross-Origin-Embedder-Policy: credentialless` (or `require-corp` if no third-party resources are needed)
Fonte
MDN: HTTP headers
BassoCross-Origin-Resource-Policy settech.security.corp
Cosa viene controllato
The `Cross-Origin-Resource-Policy` header is set.
Perché è importante
It limits who may embed your files.
Esempio
`Cross-Origin-Resource-Policy: same-site`
Fonte
MDN: HTTP headers

Cache e compressione

MedioBrotli or gzip enabledtech.caching.compression
Cosa viene controllato
Text responses are compressed with Brotli, gzip or zstd.
Perché è importante
Compression saves transfer time and bandwidth.
Esempio
The response header states `content-encoding: br` or `gzip`.
Fonte
MDN: HTTP caching
BassoCache-Control for static filestech.caching.cachecontrol
Cosa viene controllato
Static files carry a long-lived `Cache-Control`.
Perché è importante
Repeat visits then load the files from cache.
Esempio
`Cache-Control: public, max-age=31536000, immutable`
Fonte
MDN: HTTP caching
BassoHTML size under 500 KBtech.caching.htmlsize
Cosa viene controllato
The HTML response stays under 500 KB.
Perché è importante
Large HTML documents delay rendering and parsing.
Esempio
Move inline CSS and JS into separate files.
Fonte
web.dev
MedioCache-Control on the main responsetech.caching.main
Cosa viene controllato
The HTML response carries a `Cache-Control` header.
Perché è importante
Without it, browsers and CDNs decide inconsistently.
Esempio
`Cache-Control: public, max-age=0, must-revalidate`
Fonte
MDN: HTTP caching
BassoPublic page is cacheabletech.caching.public
Cosa viene controllato
The response does not forbid caching unnecessarily.
Perché è importante
`no-store` or `private` slow down CDN and browser.
Esempio
`Cache-Control: public, max-age=300` instead of `no-store`
Fonte
MDN: HTTP caching
BassoETag presenttech.caching.etag
Cosa viene controllato
The response carries an `ETag`.
Perché è importante
Crawlers then avoid re-downloading unchanged pages.
Esempio
`ETag: "5f3c9a"`
Fonte
MDN: HTTP caching

Immagini

Medioalt on all content imagestech.images.alt
Cosa viene controllato
All content images have an `alt` attribute.
Perché è importante
Screen readers and image search need the alternative text.
Esempio
`<img src="team.jpg" alt="Team in a consultation">`
Fonte
Google: Bilder
BassoModern image formats (WebP/AVIF)tech.images.format
Cosa viene controllato
Raster images are served as WebP or AVIF; SVG is exempt.
Perché è importante
Modern formats are much smaller at the same quality.
Esempio
`team.webp` instead of `team.jpg`.
Fonte
Google: Bilder
Bassowidth and height settech.images.dimensions
Cosa viene controllato
Images declare `width` and `height`.
Perché è importante
This reserves space and prevents layout shifts.
Esempio
`<img src="team.webp" width="800" height="600" alt="…">`
Fonte
web.dev
Bassoloading=lazy below the foldtech.images.lazy
Cosa viene controllato
Below-the-fold images use `loading="lazy"`.
Perché è importante
This saves bandwidth on the first load.
Esempio
`<img src="…" loading="lazy" alt="…">` from the second image onwards.
Fonte
web.dev
BassoHero image is not lazy-loadedtech.images.herolazy
Cosa viene controllato
The most important visible image loads immediately; an image with fetchpriority=high must not be lazy either.
Perché è importante
A lazy-loaded hero image delays the visible paint (LCP).
Esempio
`<img src="hero.jpg" fetchpriority="high">` without `loading="lazy"`.
Fonte
web.dev
BassoHero image uses fetchpriority=hightech.images.fetchpriority
Cosa viene controllato
The first content image carries `fetchpriority="high"`, directly or via a preload in the head.
Perché è importante
The browser then loads it before other resources.
Esempio
`<img src="hero.jpg" fetchpriority="high">` or `<link rel="preload" as="image" href="hero.jpg" fetchpriority="high">`.
Fonte
web.dev
MedioAlt texts describe the imagetech.images.altquality
Cosa viene controllato
Alt texts describe the image and repeat neither file names nor placeholders.
Perché è importante
Descriptive alt texts help screen readers and image search.
Esempio
Wrong: `alt="IMG_1234.jpg"`. Right: `alt="Team in a consultation"`.
Fonte
Google: Bilder
BassoImages under 200 KBtech.images.weight
Cosa viene controllato
The sampled images are smaller than about 200 KB.
Perché è importante
Large images slow the page, especially on mobile.
Esempio
Compress images or serve smaller variants via srcset.
Fonte
web.dev

Tempi di caricamento

MedioTime to First Byte under 800 mstech.load.ttfb
Cosa viene controllato
The server responds in less than 800 ms.
Perché è importante
A fast first byte speeds up every following step.
Esempio
Caching, a CDN or less work in the backend.
Fonte
web.dev
BassoBlocking scripts in the headtech.load.blockingscripts
Cosa viene controllato
The head contains no blocking scripts without `async` or `defer`.
Perché è importante
Blocking scripts hold up the first paint.
Esempio
`<script src="app.js" defer></script>`
Fonte
web.dev
BassoCSS included in the headtech.load.cssinhead
Cosa viene controllato
Stylesheets appear as `<link rel="stylesheet">` or `<style>` in the head.
Perché è importante
CSS in the body delays the first paint and can shift content.
Esempio
`<link rel="stylesheet" href="/style.css">` in the `<head>`.
Fonte
web.dev
MedioResponse time under 3 secondstech.load.responsetime
Cosa viene controllato
The server responds in less than three seconds.
Perché è importante
Slow responses cost rankings and visitors.
Esempio
Cache the home page at the network edge (CDN).
Fonte
web.dev

MX e SPF

MedioSPF present and strict enoughtech.email.spf
Cosa viene controllato
The domain has an SPF record ending in `-all` or `~all`.
Perché è importante
SPF prevents foreign servers from sending mail in your name.
Esempio
`v=spf1 include:… -all`
Fonte
Google Search Central
BassoMX records presenttech.email.mx
Cosa viene controllato
The domain has at least one MX record.
Perché è importante
Without MX the domain cannot receive email.
Esempio
`example.com MX 10 mx1.mailprovider.com.`
Fonte
Google Search Central

DMARC

MedioDMARC with p=quarantine or rejecttech.email.dmarc
Cosa viene controllato
The DMARC record is set to `p=quarantine` or `p=reject`.
Perché è importante
This protects the domain's reputation against spam and spoofing.
Esempio
`v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com`
Fonte
Google Search Central
BassoDMARC with a reporting addresstech.email.dmarc_rua
Cosa viene controllato
The DMARC record states `rua=` for reports.
Perché è importante
Without reports the policy's effect stays invisible.
Esempio
`rua=mailto:dmarc@example.com`
Fonte
Google Search Central

DKIM

BassoDKIM foundtech.email.dkim
Cosa viene controllato
A DKIM record is reachable on a common selector.
Perché è importante
DKIM signs outgoing mail and proves its origin.
Esempio
`<selector>._domainkey` as TXT with `v=DKIM1; p=…`.
Fonte
Google Search Central
BassoDKIM with a public keytech.email.dkim_key
Cosa viene controllato
The DKIM record contains a key (`p=`).
Perché è importante
Without a key no signature can be verified.
Esempio
`v=DKIM1; k=rsa; p=MIIBIjANBg…`
Fonte
Google Search Central

MTA-STS

BassoMTA-STS presenttech.email.mtasts
Cosa viene controllato
An MTA-STS policy is published on the host `mta-sts.<domain>`.
Perché è importante
It requires encrypted delivery between mail servers.
Esempio
`https://mta-sts.example.com/.well-known/mta-sts.txt` with `version: STSv1`.
Fonte
RFC 8461 (MTA-STS)
BassoMTA-STS in enforce modetech.email.mtasts_mode
Cosa viene controllato
The MTA-STS policy is set to `mode: enforce`.
Perché è importante
Only then do mail servers enforce encrypted delivery.
Esempio
`mode: enforce`
Fonte
RFC 8461 (MTA-STS)
Basso_mta-sts is announcedtech.email.mtasts_dns
Cosa viene controllato
A `_mta-sts` TXT record announces the policy.
Perché è importante
Without it mail servers do not find the policy.
Esempio
`_mta-sts.example.com TXT "v=STSv1; id=20261018"`
Fonte
RFC 8461 (MTA-STS)
BassoMTA-STS with max_agetech.email.mtasts_maxage
Cosa viene controllato
The policy states `max_age`.
Perché è importante
It determines how long mail servers cache the policy.
Esempio
`max_age: 604800`
Fonte
RFC 8461 (MTA-STS)

security.txt

Bassosecurity.txt with Contact and Expirestech.trust.securitytxt
Cosa viene controllato
`/.well-known/security.txt` contains `Contact` and `Expires`.
Perché è importante
Security researchers know where to send reports.
Esempio
`Contact: mailto:security@example.com` and `Expires: 2027-12-31T23:59:59.000Z`.
Fonte
RFC 9116 (security.txt)
Bassosecurity.txt with a valid Expirestech.trust.securitytxt_expires
Cosa viene controllato
`Expires:` lies in the future.
Perché è importante
An expired Expires makes the file invalid per RFC.
Esempio
`Expires: 2027-12-31T23:59:59.000Z`
Fonte
RFC 9116 (security.txt)
Bassosecurity.txt with Canonicaltech.trust.securitytxt_canonical
Cosa viene controllato
`Canonical:` names the file location.
Perché è importante
Multiple copies remain unambiguous.
Esempio
`Canonical: https://example.com/.well-known/security.txt`
Fonte
RFC 9116 (security.txt)
Bassosecurity.txt with Preferred-Languagestech.trust.securitytxt_languages
Cosa viene controllato
`Preferred-Languages:` names the security team's languages.
Perché è importante
Reporters know which language they can use.
Esempio
`Preferred-Languages: en, de`
Fonte
RFC 9116 (security.txt)

Fiducia

Analytics e consenso

BassoAnalytics detectedtech.analytics.detected
Cosa viene controllato
The page includes Google Analytics, Tag Manager or a privacy-friendly tool.
Perché è importante
Without measurement, decision data is missing; this is a hint, not an error.
Esempio
`gtag.js` with a measurement ID or a Tag Manager container.
Fonte
Google Search Central
MedioConsent is set before analyticstech.analytics.consentfirst
Cosa viene controllato
The default consent appears in the HTML before the analytics loader.
Perché è importante
Otherwise data is collected without consent (GDPR risk).
Esempio
`gtag('consent','default',{ad_storage:'denied',…})` before gtag.js loads.
Fonte
Google Search Central
BassoAnalytics does not block renderingtech.analytics.async
Cosa viene controllato
Analytics scripts use `async` or `defer`, or the Tag Manager loads them later.
Perché è importante
A blocking script delays the first paint.
Esempio
`<script async src="…/gtag/js">`
Fonte
web.dev
MedioAll four consent types start as deniedtech.analytics.denied
Cosa viene controllato
`ad_storage`, `analytics_storage`, `ad_user_data` and `ad_personalization` start as `denied`.
Perché è importante
This is the privacy-friendly default; `granted` before consent is a risk.
Esempio
`gtag('consent','default',{ad_storage:'denied',analytics_storage:'denied',ad_user_data:'denied',ad_personalization:'denied'});`
Fonte
Google Search Central

Favicon e icone

BassoFavicon presenttech.icons.favicon
Cosa viene controllato
The page links an icon or serves `/favicon.ico`.
Perché è importante
The icon appears in tabs and bookmarks.
Esempio
`<link rel="icon" href="/favicon.ico">`
Fonte
Google Search Central
BassoSVG favicon linkedtech.icons.svg
Cosa viene controllato
An icon with `type="image/svg+xml"` is linked.
Perché è importante
SVG stays sharp at any size and is small.
Esempio
`<link rel="icon" href="/icon.svg" type="image/svg+xml">`
Fonte
Google Search Central
Bassoapple-touch-icon linkedtech.icons.apple
Cosa viene controllato
An apple-touch-icon is linked.
Perché è importante
iOS uses it when adding to the home screen.
Esempio
`<link rel="apple-touch-icon" href="/apple-touch-icon.png">`
Fonte
Google Search Central

Manifest dell'app web

BassoWeb manifest linkedtech.manifest.present
Cosa viene controllato
The page links a web app manifest.
Perché è importante
The manifest describes name, icons and app start behaviour.
Esempio
`<link rel="manifest" href="/site.webmanifest">`
Fonte
MDN: Web app manifest
BassoManifest is reachable and validtech.manifest.reachable
Cosa viene controllato
The linked manifest responds with 200 and valid JSON.
Perché è importante
A broken link causes errors and no app metadata.
Esempio
`{"name":"Example","icons":[…]}` as the manifest response.
Fonte
MDN: Web app manifest
BassoManifest with a maskable icontech.manifest.maskable
Cosa viene controllato
At least one icon in the manifest has `purpose` containing `maskable`.
Perché è importante
Android otherwise crops icons awkwardly.
Esempio
`{"src":"/icon-512.png","purpose":"any maskable"}`
Fonte
MDN: Web app manifest
Bassotheme-color settech.themecolor
Cosa viene controllato
The page sets `theme-color`.
Perché è importante
Mobile browsers tint the address bar to match the brand.
Esempio
`<meta name="theme-color" content="#123456">`
Fonte
MDN: Web app manifest

Accessibilità

BassoInteractive elements have accessible namestech.a11y.arianames
Cosa viene controllato
Links, buttons and elements with an ARIA role have an accessible name from text, aria-label, aria-labelledby, title, image alt or SVG title.
Perché è importante
Screen readers cannot announce nameless elements.
Esempio
`<button aria-label="Open menu"><svg></svg></button>`
Fonte
W3C: WAI-ARIA
BassoNo focusable content under aria-hiddentech.a11y.ariahidden
Cosa viene controllato
Elements with `aria-hidden="true"` contain no focusable children unless excluded with tabindex=-1, disabled or inert.
Perché è importante
Otherwise keyboard focus lands on invisible elements.
Esempio
`<div aria-hidden="true" inert>` for menus that are only visually hidden.
Fonte
W3C: WAI-ARIA

DNS (CAA)

BassoCAA record settech.email.caa
Cosa viene controllato
The domain authorises certificate authorities via CAA.
Perché è importante
CAA prevents foreign authorities from issuing certificates.
Esempio
`example.com CAA 0 issue "letsencrypt.org"`
Fonte
Google Search Central

Accesso dei bot

CriticoPage reachable without a bot challengetech.bots.no_challenge
Cosa viene controllato
Whether our request gets the page content or a firewall block page (Cloudflare, Sucuri, Akamai, DataDome, PerimeterX, Imperva).
Perché è importante
Search engines and AI assistants fetch pages without a browser. If the firewall shows them a block page, the content is neither read nor cited.
Esempio
Configure the bot protection to let known crawlers (verified bots) through, for example allow "Verified Bots" in Cloudflare.
Fonte
Google Search Central: Overview of Google crawlers
CriticoNo JavaScript challenge or CAPTCHA before the contenttech.bots.no_captcha
Cosa viene controllato
Whether a CAPTCHA (reCAPTCHA, hCaptcha, Turnstile) or a check that needs JavaScript stands in front of the content.
Perché è importante
Crawlers do not solve CAPTCHAs and often do not run JavaScript. A CAPTCHA in front of the whole page locks them out; inside a form it is fine.
Esempio
Use the CAPTCHA only in the form, not as an entry page.
Fonte
Google Search Central: JavaScript SEO basics
CriticoGooglebot gets the contenttech.bots.googlebot
Cosa viene controllato
We also fetch the page with the Googlebot token in the user agent (marked as a RELACON probe) and compare the result with our normal request.
Perché è importante
Some firewalls block anything that calls itself Googlebot but does not come from Google's addresses; others let only Googlebot through. The comparison shows whether crawlers are treated differently.
Esempio
Use URL inspection in Search Console to test whether the real Googlebot can fetch the page.
Fonte
Google: Verifying Googlebot
MedioAI crawlers get the contenttech.bots.ai
Cosa viene controllato
We fetch the page with the GPTBot token in the user agent (marked as a RELACON probe) and compare the result with our normal request.
Perché è importante
Many bot protection services block AI crawlers by default, even when robots.txt allows them. Then the permission in robots.txt does not help.
Esempio
Allow AI crawlers in the firewall too, in Cloudflare under "AI Crawl Control".
Fonte
OpenAI: Overview of OpenAI crawlers
Mediorobots.txt readable despite the firewalltech.bots.robots
Cosa viene controllato
Whether /robots.txt is served as text and not as a firewall block page.
Perché è importante
If a crawler gets a block page or a server error instead of robots.txt, Google treats the whole site as blocked to be safe.
Esempio
Exempt `/robots.txt` from the bot protection.
Fonte
Google: How Google interprets robots.txt

Domande frequenti

Il controllo salva la mia pagina?

Non viene salvato alcun contenuto oltre al rapporto. Il rapporto contiene l'URL, i risultati e l'ora del controllo.

Perché una regola mostra n/d?

n/d significa che la regola non si applica a questa pagina, per esempio le regole sui video in una pagina senza video. n/d non costa mai punti.

Altro sul controllo del sito

Avvia il controllo

Che cosa controlla il controllo sito RELACON | RELACON