109 automated checks on every scan
No magic: here is exactly what we look at, pillar by pillar. Every passed check shows ✓, every issue comes with severity, a plain-language explanation and a fix prompt.
Security
35 checksEncrypted transport, protection headers, secrets forgotten in the code and exposed backends: where quickly-built (especially AI-built) sites really get hurt.
- Automatic HTTPS redirect. The http:// version must immediately lead to https://, or traffic can travel in the clear.
- TLS certificate validity. Expired or invalid certificate = “not secure” browser warning and visitors running away.
- Mixed HTTP content on HTTPS pages. Scripts or images loaded in the clear inside an encrypted page open the door to tampering.
- HSTS (Strict-Transport-Security). Tells the browser to always use HTTPS, even on the first visit.
- TLS certificate expiry. We warn you if the certificate expires within 30 days: on expiry the site suddenly blocks for everyone.
- SPF record (email anti-spoofing). Without SPF anyone can send email in your domain’s name, and yours lands in spam.
- Domain DMARC policy. Tells mail servers what to do with forged email: missing or monitor-only, spoofing gets through.
- JS libraries with known CVEs. jQuery, Bootstrap, Lodash and others in versions with publicly documented vulnerabilities (with CVE ids).
- End-of-life (EOL) JS libraries. Unsupported libraries (AngularJS, Vue 2): new flaws will never receive a patch.
- Content-Security-Policy. The main defense against injected scripts (XSS): without it, a hostile script can do anything.
- Clickjacking protection (X-Frame-Options). Prevents your site from being framed inside scam pages to steal clicks.
- MIME sniffing (X-Content-Type-Options). Stops the browser from “guessing” file types and executing content it should not.
- Referrer-Policy. Controls how much navigation information you leak to third-party sites.
- Permissions-Policy. Restricts access to camera, microphone and sensors by third-party scripts.
- Server software version disclosure. Advertising your server or framework version hands attackers the list of exploits to try.
- .env file publicly reachable. The file with passwords and API keys downloadable by anyone: one of the worst (and most common) mistakes.
- .git folder publicly reachable. An exposed .git folder lets anyone download your entire source code, secrets included.
- Source maps exposed in production. Debug maps reveal the original code, often with comments and secrets.
- AWS keys in public code. An AWS access key in the JavaScript bundle = someone else running up your cloud bill.
- Stripe secret keys in public code. An exposed Stripe secret key allows refunds, charges and access to payment data.
- Exposed Google API keys. Unrestricted Google keys can generate costs and abuse on your services.
- Supabase service-role key exposed. The service-role key bypasses every database security rule: in the frontend it is a disaster.
- Supabase Row Level Security. Tables readable without login: we verify RLS rules actually protect your data (the fact only, never the data).
- Firebase database access rules. Realtime Database with open rules = every user’s data public. We check without downloading anything.
- Content-Security-Policy strength. A CSP with ’unsafe-inline’ or open sources looks like protection but stops nothing: false safety is worse than none.
- Window isolation (Cross-Origin-Opener-Policy). Stops a page opened from your site from keeping control of your tab.
- Cookie security flags (Secure, HttpOnly, SameSite). Without these flags a session cookie is readable by JavaScript and attached to other sites’ requests: account theft and CSRF.
- Third-party script integrity (SRI). If the CDN hosting a library is compromised (it happened to polyfill.io, 100k+ sites), without integrity the browser runs the swapped code.
- Form submission over encrypted connection. A form posting to http:// from an https:// page sends data in the clear, and the browser warns the user on submit.
- Protected external links (rel="noopener"). Without noopener the page you open can change your tab’s address while the user is looking elsewhere.
- DKIM email signing. Without DKIM your mail authenticates worse and lands in spam more often; with it, recipients can verify the message is really yours.
- DMARC reporting (rua). A DMARC policy with no reporting address is blind: you cannot see who writes in your name, and you can never tighten it.
- Enforced encryption between mail servers (MTA-STS). TLS between mail servers is optional: without MTA-STS an attacker can force plaintext delivery and read mail in transit.
- DNSSEC. Signs the domain's DNS answers: without it, visitors can be redirected to a server that is not yours.
- CAA record. Declares which authorities may issue certificates for your domain. Without it, any CA in the world can issue one in your name.
Legal / GDPR
8 checksThe compliance basics that regulators (and your users) expect from any European site.
- Cookie consent banner. If you use non-technical cookies you need a consent banner: its absence is the most visible violation.
- Reachable privacy policy. A linked, readable privacy policy is mandatory if you process any personal data.
- Trackers active before consent. Analytics and pixels firing before the “Accept” click violate GDPR: we detect them.
- Cookie policy as a separate document. EU guidance requires a standalone cookie notice with the list, lifetimes and third parties: a paragraph inside the privacy policy is not enough.
- Reachable terms and conditions. Mandatory if you sell; for everyone else they are the only document defining what you promise and what you do not.
- Company details in the footer (VAT number, legal name). EU and Italian law require them online too, and it is the first thing anyone checks before trusting you.
- Fonts loaded without sending data to Google. Google Fonts from the CDN sends every visitor’s IP to the US without consent: the violation behind thousands of EU demand letters.
- Privacy consent in data collection forms. A form asking for email or phone with no checkbox and no notice collects data with no provable legal basis.
Reliability & UX
15 checksWhat a visitor (or customer) actually runs into: broken links, errors, dead ends.
- Broken links. Links leading to pages that do not exist: trust down, SEO penalized.
- JavaScript console errors. Console errors often mean broken features nobody noticed.
- Visible stack traces or technical errors. Raw error messages on the page scare users and reveal internals.
- HTTP 404 status on non-existent pages. Answering 200 on an address that does not exist (soft 404) makes Google index empty, made-up pages.
- Custom 404 page. The bare server 404 is a dead end: no message, no link back into the site.
- Reachable contact channel. Email, form or contact page: without one, the site loses credibility (and customers).
- Favicon present. The icon in the browser tab and in search results: missing, the site looks unfinished.
- Server response time. Slow responses frustrate users before the page even loads.
- User journeys without dead ends. We simulate the main navigation: buttons leading nowhere, broken flows.
- The domain receives the email addresses published on the site. @yourdomain addresses on the site but no MX record: those messages bounce and customer requests are lost.
- IPv6 reachability. Several mobile networks are now IPv6-only: with no AAAA record they reach you through translators, adding latency and failures.
- Name server redundancy. A single name server is one point of failure for site and email together. The standard asks for at least two.
- Domain expiry. An expired domain takes down site and mail, and after the grace period anyone can register it instead of you.
- Images that actually load. Images answering with an error leave empty boxes: on a product page it is the most immediate abandonment signal.
- HTTP/2 or newer protocol. On HTTP/1.1 the browser queues requests one at a time: on a page with dozens of files that is a delay on every visit.
Visibility (SEO)
22 checksThe fundamentals to be found on Google and look good when your link gets shared.
- Page <title> tag. The title is the first thing Google shows: missing or empty, you are invisible.
- Meta description. The description under the title in search results: without it, Google decides for you.
- H1 heading structure. One clear H1 per page: zero or too many confuse search engines.
- Heading hierarchy (h1 → h2 → h3). Headings must not skip levels: the correct hierarchy is the map Google and screen readers use to understand the page.
- Canonical URL. Prevents the same page from appearing as duplicated, diluting your ranking.
- robots.txt file. Tells search engines what they may crawl: its absence signals neglect.
- robots.txt does not block search engines. A "Disallow: /" left over from staging erases the site from Google, and you cannot see it from the page.
- Sitemap declared in robots.txt. The Sitemap: directive is how a crawler that does not know you finds every page right away.
- XML sitemap. The site map helps Google find and index all your pages.
- JSON-LD structured data (schema.org). Tells Google and AI assistants what you are: without it, no rich results in the SERP.
- JSON-LD structured data format. A JSON-LD block with a syntax error or no @context/@type is silently discarded: useless markup.
- Social preview (Open Graph). Without Open Graph, a shared link looks bare on social and chat: no image, no title.
- Declared page language. The lang attribute helps search engines and screen readers understand the content.
- Mobile viewport. Without the viewport meta the site looks tiny on phones: instant mobile penalty.
- Search engine indexability. A forgotten noindex (common on generated sites) erases you from Google.
- AI crawler access (ChatGPT, Claude, Perplexity). If robots.txt blocks them — often a CDN default — your site cannot be cited in assistant answers.
- Business identity in structured data. The Organization or LocalBusiness node tells engines (and AIs) who you are: without it they summarise you without citing you.
- Title length in search results. Past 65 characters Google truncates, below 25 it rewrites: either way the title you chose is not the one users read.
- Meta description length. Too short and Google replaces it, too long and it gets cut mid-sentence: it is your only free ad space.
- Social preview completeness (image, text, URL). Partial Open Graph = crippled preview: without og:image the shared link renders as a text-only box.
- X/Twitter preview (Twitter Card). Without twitter:card the link on X goes out bare instead of with the large preview.
- Alternate language declaration (hreflang). On a multilingual site, a wrong hreflang makes versions compete and lands users in the wrong language.
Performance
15 checksThe speed your users actually perceive, measured with Google PageSpeed.
- Mobile loading performance. Core Web Vitals via PageSpeed (mobile strategy, the measure Google uses for ranking): a slow site loses visitors and positions.
- Desktop loading performance. Same measure with the desktop strategy: on a big screen, speed expectations are even higher.
- Modern image formats (WebP/AVIF). Images in JPEG/PNG where modern formats would weigh far less at the same quality.
- Image weight and sizing. Images poorly compressed or served larger than displayed: useless weight on every visit.
- Unused JavaScript. Code downloaded and processed that the page never uses: slows down precisely the slowest devices.
- Render-blocking resources. Synchronous CSS and scripts keeping the page blank while content is already there.
- Text compression (gzip/brotli). Without compression HTML, CSS and JS weigh double: the fix is one server configuration line.
- Static asset caching. Assets re-downloaded on every visit instead of read from cache: punishes returning visitors.
- Total page weight. Beyond 3MB, loading is felt on any non-perfect connection.
- Real-user Core Web Vitals. CrUX data from the site's real Chrome users: the measure Google actually uses in ranking.
- CDN delivery. With no CDN every visitor downloads everything from the origin server, and a traffic spike has no buffer.
- Text visible while fonts load. Without font-display the browser keeps text invisible for up to three seconds: a laid-out but wordless page.
- Deferred image loading. Without loading="lazy" the browser also fetches bottom-of-page images right away, stealing bandwidth from what is on screen.
- Declared image dimensions. With no width and height the content jumps as images arrive: the leading cause of the layout instability Google penalises.
- JavaScript and CSS minification. Code shipped with indentation and comments is dead weight on every visit: one build step fixes it.
Accessibility
14 checksThe European Accessibility Act has applied since 28 June 2025: accessibility is a legal obligation whose deadline has already passed. These checks read the page markup and find the most common barriers.
- Alternative text on images. With no alt, whoever cannot see the image loses the information: it is the first criterion checked in any conformance review.
- Labels on form fields. An unlabelled field is announced as "text box" and nothing more: on a payment form that is a full barrier.
- Accessible name on icon-only buttons and links. Hamburger, close X, cart: without aria-label they are read out as "button" and nothing else.
- Descriptive title on iframes. Maps and embedded videos with no title are announced as "frame", without saying what is inside.
- Headers in data tables. Without <th> a price list becomes a sequence of unlabelled numbers for anyone listening to it.
- Zoom allowed on mobile. user-scalable=no stops users from enlarging the page: people with low vision cannot read it on a phone.
- Page structure (main, nav, header). Landmarks are the map that lets people jump to the content instead of crossing the whole menu.
- "Skip to content" link. Without it, keyboard users cross the header and the menu on every page change.
- Consistent tab order. A positive tabindex builds a sequence of its own that does not match what is on screen.
- Controllable autoplaying audio and video. Audio that starts by itself talks over the screen reader's voice and cannot be stopped.
- Captions on videos. Without captions, speech is only available to those who can hear it — and to the majority watching with the sound off.
- Correct use of ARIA attributes. Invented roles or aria-hidden on still-focusable elements make things worse rather than better.
- Link text that makes sense out of context. A list of "click here" tells apart nothing, neither for a screen reader nor for Google.
- Accessibility statement. The document declaring how far conformance has got and how to report a barrier. For many organisations it is mandatory.
Scan your site for free → (109 )
Find out how secure your site is. Right now.
The scan is free and takes less than a minute. No installation, no credit card.