Original data from our own scans

Website security statistics: what we found on 93 real websites

Most security statistics come from surveys or vendor reports. These come from the websites people checked with our free tools. Every number here is aggregated, and no site is named.

By the Bug Circuit security team · Last updated

What did we find? Of 49 websites that returned a normal page to our free passive check, 88% were missing at least one of six standard security headers and 39% were missing all six. Of 67 registered domains, 30% had no DMARC record, which makes mail forged in their name much more likely to reach an inbox. Half of the domains had 10 or more subdomains in public records. The sample is 93 domains checked between 17 July and 16 October 2026. It does not include our paid manual audits.

The numbers at a glance

Each row has its own sample, because not every check works on every domain. A site that blocked us has no header data, and a subdomain has no DMARC record of its own. The last column is how we usually rate the issue in a written audit report when it is the only problem. Real severity depends on the site.

Most common issues found by Bug Circuit's free passive checks, July to October 2026
IssueSites affectedShareSampleHow we usually rate it
Missing at least one of six security headers43 of 4988%Sites that returned a normal pageLow to medium
Missing all six security headers19 of 4939%Sites that returned a normal pageMedium
No Content-Security-Policy35 of 4971%Sites that returned a normal pageLow to medium
No Strict-Transport-Security (HSTS)25 of 4951%Sites that returned a normal pageLow
No DMARC record20 of 6730%Registered domains with working DNSMedium
DMARC not set to block forged mail13 of 1872%Domains checked with the email spoofing toolLow to medium
10 or more public subdomains31 of 6250%Domains where public sources returned resultsInformational
50 or more public subdomains11 of 6218%Domains where public sources returned resultsInformational

Security headers: the most common gap

Security headers are short instructions a website sends with every page. They tell the browser to use HTTPS only, to refuse to load the page inside another site, and which scripts it may run. Most cost nothing and take minutes to add, yet they were the most common gap in our data. We checked six headers on the home page of each site, using the list from the OWASP Secure Headers Project.

Share of 49 websites missing each security header
HeaderWhat it doesMissing onShare
Permissions-PolicyLimits which browser features (camera, location and so on) the page can use37 of 4976%
Content-Security-PolicyControls which scripts and content can load, a strong defence against cross-site scripting35 of 4971%
Referrer-PolicyControls how much of your page address is shared with other sites34 of 4969%
X-Content-Type-OptionsStops the browser guessing file types31 of 4963%
X-Frame-OptionsStops other sites framing yours to trick clicks29 of 4959%
Strict-Transport-SecurityForces HTTPS on every later visit25 of 4951%

How many headers each site was missing

The spread matters more than the average. Most sites were either nearly complete or nearly empty.

Distribution of missing security headers across 49 websites
Headers missing (of 6)SitesShare
None: all six present612%
1 to 3 missing1224%
4 or 5 missing1224%
All six missing1939%

The median site was missing 5 of the 6. Shares are rounded, so they add up to 99%.

A CDN does not fix it for you

16 of the 49 sites ran behind Cloudflare. 5 of those 16 were still missing all six headers, against 14 of the 33 sites that were not behind Cloudflare. A content delivery network can add some headers, but only when someone turns those settings on.

By platform

We detect the platform from signatures on the home page, so a site that hides its platform lands in “other or not detected”. The groups are small, so read this table as a direction, not a ranking.

Average number of missing security headers by platform
Platform detectedSitesAverage headers missing (of 6)
WordPress65.2
Laravel94.9
Other or not detected243.9
Next.js102.2

Two things stand out. Sites built on Next.js were missing far fewer headers on average. And WordPress made up only 6 of 49 sites, far below its share of the web as a whole. Our sample leans towards custom-built sites, so do not read it as a picture of WordPress security. Our WordPress audit page covers what we look for there.

Email: who can pretend to be you

SPF lists the servers allowed to send your mail. DMARC, defined in RFC 7489, tells receiving mail servers what to do with mail that fails those checks, and it is the record that protects the From address people actually see. Without it, it is much easier for anyone to send an invoice or a password reset that appears to come from your exact domain.

  • SPF was common. More than 9 in 10 of the 67 domains published an SPF record.
  • DMARC was not. 20 of 67 domains (30%) had no DMARC record at all.
  • Few blocked forged mail. For 18 domains we also read the DMARC policy. 5 used p=reject, which blocks forged mail. 6 used p=quarantine, which sends it to spam. 7 had p=none or no record, so forged mail could reach the inbox.

You can check your own domain with the free email spoofing checker. It reads the same records.

Subdomains: more doors than most owners remember

Every subdomain (shop, staging, mail, old-admin and so on) is a separate thing an attacker can find and test. We count them from public sources only: certificate transparency logs, passive DNS datasets, web archives and DNS lookups of common names.

  • The median domain had about 10 subdomains in public records. The median number still resolving was about 8.
  • Half of the 62 domains (31) had 10 or more.
  • 11 domains (18%) had 50 or more.

A long list is not a flaw by itself. The risk is the forgotten one: a test site with real data, or an old tool nobody patches. The free subdomain finder shows you yours.

What these checks cannot see

Everything above is visible from outside without logging in or sending a single attack. That is also its limit. A passive check cannot tell you:

  • Whether your plugins, themes or libraries are out of date in ways that matter.
  • Whether an admin panel, backup file or test page is reachable somewhere other than the home page.
  • Whether a logged-in user can see or change another user’s data.
  • Whether forms, logins and payments can be abused.
  • How your TLS (HTTPS) settings hold up in detail.

Those are the findings that tend to rate high or critical, and they need a person testing the site with permission. That is what our manual audit report covers. See manual vs automated testing for the difference.

What this means for a small business

The common problems in this data are cheap to fix. In order of effort:

  • Add the security headers. Most hosts and CDNs let you set them in a settings screen. Start with HSTS, X-Content-Type-Options and X-Frame-Options, then write a Content-Security-Policy. Check the result with the free security headers checker.
  • Publish DMARC. Start with p=none and a report address, read the reports for a few weeks, then move to quarantine and finally reject.
  • List your subdomains and delete what you do not use. Old staging and test sites are a common way in.
  • Then test the parts a scanner cannot see. The headers and DNS records are the visible tip. If your site has logins, customer data or payments, have a person test it.

Method and sample

  • Source. Bug Circuit’s free passive check and free tools. They read public information only: the home page response, DNS records and public subdomain sources.
  • Window. Domains first checked between 17 July and 16 October 2026. Data pulled on 16 October 2026. Each domain is counted once, using the latest result of each check.
  • Sample. 93 distinct domains, after removing our own domains, staff test entries, temporary preview and sandbox hosts, dynamic DNS hosts and entries marked as spam. 42 (45%) were .com domains and 18 (19%) were Sri Lankan .lk domains.
  • Headers. 49 sites whose home page returned HTTP 200. Sites that blocked us, timed out or did not respond are left out rather than counted as missing everything.
  • Email. 67 registered domains with working DNS. Subdomains are left out because SPF and DMARC are published on the main domain. The DMARC policy was read for the 18 domains checked with the email spoofing tool.
  • Subdomains. 62 domains where at least one public source returned results.
  • Bias. These are domains people chose to check, not a random sample of the web. Some will be the checker’s own site, so the group may be more security-aware than average, or more worried.
  • Privacy. No domain names, no finding details and no group smaller than 5 are published. Our paid manual audits are not included yet: there are still too few to publish without a risk of pointing at a customer.

How to cite: Bug Circuit, “Website security statistics 2026”, bugcircuit.com/guides/website-security-statistics, data as of 16 October 2026.

Frequently asked questions

What percentage of websites are missing security headers?
In our sample, 43 of 49 websites (88%) were missing at least one of six standard security headers, and 19 of 49 (39%) were missing all six. Only 6 of 49 (12%) sent all six. The sample is the sites that returned a normal page to our free passive check between 17 July and 16 October 2026.
What percentage of domains have no DMARC record?
Of 67 registered domains we checked, 20 (30%) published no DMARC record at all. Where we also read the DMARC policy (18 domains), only 5 used p=reject, the setting that actually blocks forged mail. More than 9 in 10 domains did publish SPF, which on its own does not protect the From address people see.
Are these numbers from your paid manual audits?
No. They come from the free passive check and free tools on bugcircuit.com, which only read public information: the home page response headers, DNS records and public subdomain sources. We have not yet completed enough manual audits to publish their results without a risk of pointing at a customer, so they are left out.
Does using Cloudflare add security headers for me?
Not on its own. In our sample, 5 of the 16 sites behind Cloudflare were still missing all six headers. Cloudflare can add some headers, but only if you switch those settings on. Content-Security-Policy in particular has to be written for your own site.
Which security header is missing most often?
Permissions-Policy (missing on 76% of sites) and Content-Security-Policy (71%). Strict-Transport-Security, which forces HTTPS, was missing on 51%. X-Content-Type-Options and HSTS are the quickest to add; a good Content-Security-Policy takes more care.
How many subdomains does a typical small website have?
In public records, the median domain in our sample had about 10 subdomains. The median number still resolving was about 8. Half of the 62 domains had 10 or more, and 11 (18%) had 50 or more. Each one is something an attacker can find and someone has to keep patched.
Can I use these statistics in my article or report?
Yes. Please cite Bug Circuit and link to this page, and include the data date (16 October 2026) and the sample size for the number you use, so readers can judge it.

Keep reading

See where your site sits in these numbers

Run the free passive check on your domain. No login, no cost, no impact on your site.

Ready for the full manual audit? See pricing