snag.page

Every check

What snag.page looks at on a site, why each matters, and how to fix it.

Security

75 checks

HTTPS

6 checks
  • HTTPS

    Whether https:// answers, without a loop or a redirect somewhere unsafe.

  • Redirect to HTTPS

    Whether http:// sends visitors to https://, permanently.

  • No downgrade

    Whether any redirect goes from https:// back to http://.

  • HSTS

    The Strict-Transport-Security header, and whether it lasts a year.

  • www and the bare domain

    Whether both example.com and www.example.com answer over HTTPS, and lead to the same address.

  • Certificate renewal

    The newest certificate for the site in Certificate Transparency logs, and how much of its life is left: flagged with under a quarter, or 14 days.

Headers

10 checks
  • Bot challenge

    Whether Cloudflare answered with a bot challenge instead of the site.

  • Content-Security-Policy

    The Content-Security-Policy header, and whether it limits scripts.

  • Framing

    CSP frame-ancestors, or X-Frame-Options.

  • nosniff

    X-Content-Type-Options: nosniff.

  • Referrer policy

    Referrer-Policy, for values that leak full addresses.

  • Software versions

    Server, X-Powered-By and similar headers, for version numbers.

  • End-of-life software

    The versions in the Server and X-Powered-By headers and the generator tag: PHP, Apache, nginx, IIS, OpenSSL and Drupal.

  • CORS

    Whether the home page echoes another site's Origin in Access-Control-Allow-Origin, with credentials.

  • Permissions-Policy

    The Permissions-Policy header.

  • Cross-Origin-Opener-Policy

    The Cross-Origin-Opener-Policy header.

Cookies

3 checks

Page contents

6 checks
  • Mixed content

    Files the home page loads over http://.

  • Forms over HTTPS

    Forms on the home page that post to http://.

  • Libraries with known flaws

    Versions of jQuery, jQuery UI, Bootstrap, AngularJS, Lodash and Moment.js named in script addresses.

  • Integrity on CDN files

    Scripts and stylesheets from public CDNs without an integrity hash.

  • Generator tag

    A generator meta tag that names a version.

  • Script hosts

    The hosts the home page loads scripts from: whether each still exists, and whether it's one of the polyfill.io network's.

DNS

8 checks
  • Private addresses

    Whether the domain resolves to an address inside a private network.

  • IPv6

    Whether the domain has an AAAA record.

  • DNSSEC

    Whether answers about the domain validate with DNSSEC.

  • CAA

    CAA records at the name or above it.

  • Domain expiry

    When the domain's registration ends, from its registry over RDAP: flagged within a month, and urgently within a week.

  • Transfer lock

    Whether the registry shows the domain locked against transfer (clientTransferProhibited), for generic TLDs such as .com, whose registries all keep the status.

  • Subdomain takeover

    Whether the host's CNAME points at a name that doesn't exist, or at a GitHub Pages, Heroku, S3, Azure, Netlify or similar name no one has claimed.

  • Subdomain takeover

    Up to 25 subdomains named in Certificate Transparency logs: whether any has a CNAME to a name that no longer exists, or to a service that says no one has claimed it.

Email

7 checks
  • SPF

    The SPF record: just one, ending in ~all or -all.

  • SPF lookups

    How many DNS lookups checking the SPF record takes, its includes followed down, and whether each include has an SPF record.

  • DMARC

    The DMARC record and its policy.

  • MTA-STS

    An MTA-STS record, where the domain takes email.

  • TLS reporting

    A TLS-RPT record at _smtp._tls, for a domain that takes email.

  • Mail servers

    Whether each server the MX records name resolves.

  • DKIM

    DKIM keys under the selectors most providers use: google, selector1, selector2, k1 and others.

Security contact

1 check
  • security.txt

    /.well-known/security.txt with a Contact line, not expired.

Exposed files

28 checks

Open services

5 checks
  • Open services

    What Shodan's InternetDB, from its weekly scans, has seen open on up to four of the site's addresses: databases, remote access and container APIs, and the known flaws it lists.

  • Open databases

    Ports 6379 (Redis), 27017 (MongoDB), 9200 (Elasticsearch), 5984 (CouchDB), 11211 (Memcached), 3306 (MySQL), 5432 (PostgreSQL), 1433 (SQL Server), 1521 (Oracle), 9300 (Elasticsearch nodes), 9042 (Cassandra), 8086 (InfluxDB), 7474 (Neo4j), 5672 (RabbitMQ), 9092 (Kafka), 2181 (ZooKeeper).

  • Open remote access

    Ports 3389 (Remote Desktop), 5900 (VNC), 5901 (VNC), 23 (Telnet), 445 (Windows file sharing), 5985 (WinRM), 5986 (WinRM), 139 (NetBIOS), 21 (FTP).

  • Open container APIs

    Ports 2375 (Docker), 2379 (etcd), 10250 (Kubelet), 10255 (Kubelet read-only), 2376 (Docker over TLS), 6443 (Kubernetes).

  • Known flaws

    The CVEs Shodan's InternetDB matched to the software versions the site's addresses announce.

Reputation

1 check
  • Google Safe Browsing

    Whether Google Safe Browsing lists the home page, or the site's own pages it links to, as malware, phishing, unwanted software or harmful apps. Advisory provided by Google.

Quality

35 checks

HTML

1 check
  • Valid HTML

    The home page's first 512 KB against the HTML standard, as the Nu Html Checker does.

Loading

7 checks
  • Compression

    Whether the home page comes back with gzip or Brotli when asked for them.

  • Blocking scripts

    Scripts in the head without async, defer or type="module".

  • Image dimensions

    Images without both width and height attributes.

  • Lazy images

    Whether a page with six or more images loads any of them lazily.

  • Page weight

    The size of the home page's HTML, over 300 KB.

  • Redirects

    How many redirects https:// takes to reach the home page.

  • Script caching

    The Cache-Control and Expires headers on the site's own scripts.

Search

8 checks
  • Page title

    Whether the page has a <title>, under 65 characters.

  • Meta description

    Whether the page has a meta description.

  • noindex

    A robots meta tag or X-Robots-Tag header saying noindex on the home page.

  • robots.txt

    Whether robots.txt says Disallow: / to every user agent.

  • Sitemap

    A Sitemap line in robots.txt, or /sitemap.xml.

  • Main heading

    Whether the page has an h1.

  • Canonical link

    A canonical link, and whether it points at this site.

  • Missing pages

    The status a page that doesn't exist answers with.

Sharing

4 checks
  • Open Graph

    og:title, og:description and og:image.

  • X card

    A twitter:card meta tag.

  • Structured data

    JSON-LD blocks, and whether they parse.

  • Icon

    A link rel="icon" or rel="apple-touch-icon" in the page.

Accessibility

10 checks
  • Language

    A lang attribute on the html element.

  • Alt text

    Images on the home page without an alt attribute.

  • Zoom

    A viewport meta tag with user-scalable=no, or a maximum-scale under 2.

  • Form labels

    Form fields with no label, aria-label, aria-labelledby or title.

  • Viewport

    A viewport meta tag.

  • Heading order

    Whether heading levels skip, such as an h2 followed by an h4.

  • Link names

    Links with no words, no aria-label and no image with alt text inside.

  • Button names

    Buttons with no words and no aria-label.

  • Link text

    Links whose words are only "click here", "read more" or the like.

  • Frame titles

    Iframes without a title.

Readability

1 check
  • Readability

    The page's paragraphs and lists: Flesch reading ease and grade for English, LIX for other languages.

Privacy

1 check
  • Trackers

    Scripts on the home page from known analytics and advertising trackers.

AI and agents

2 checks
  • llms.txt

    A Markdown /llms.txt.

  • AI crawlers

    What robots.txt says to GPTBot, ClaudeBot, Google-Extended, CCBot and other AI crawlers, and any Content-Signal line.