Blog Post

52% of Websites Block iframes: What We Found Testing 184 Sites

By Emilia Veras, Founder & Product Designer at OverlayQA. Last updated: August 11, 2026

Quick answer: 52% of websites block iframe embedding. We measured 184 domains that real users submitted to our free responsive tester between June 8 and August 11, 2026. Half refused to render in a frame at every viewport. Blocking is all or nothing: no site loaded at some widths and failed at others.

The Finding

Every tool that previews, proofs, or annotates a website in the browser has the same hidden dependency: it assumes the site will render inside an iframe. That assumption fails on half the web.

Our free responsive tester loads a submitted URL into five viewports at once and records how many frames loaded and how many were refused. Over roughly nine weeks that produced 523 scans across 184 distinct domains, submitted by real users testing their own sites.

MeasureResult
Distinct domains tested184
Domains that blocked embedding96
Share that blocked52.2%
Total scans523
WindowJune 8 to August 11, 2026

We took the most recent scan per domain, so a site that was fixed mid-session counts as fixed. Using the looser rule instead, counting any domain that ever blocked, moves the number to 55.4%. The finding is not sensitive to that choice.

Blocking Is All or Nothing

Of the 184 domains, 96 blocked every single viewport and 88 loaded every single viewport. Not one domain was partial.

That rules out the obvious objection. If these were flaky network failures or slow frames timing out, we would expect a spread: some sites loading three of five viewports, others loading four. Instead the distribution is perfectly binary. Embedding refusal is a property of the site, decided by a response header, not an artifact of the test.

How Sites Block: X-Frame-Options vs CSP frame-ancestors

Our pre-flight check records why a frame was refused. Among the 50 blocked URLs where it captured a specific reason, 34 (68%) used the legacy X-Frame-Options header and 16 (32%) used the modern Content-Security-Policy: frame-ancestors directive. This is a subset of all blocked domains, so treat the split as indicative rather than exact.

MechanismStatusIn our sampleWhat it does
X-Frame-OptionsLegacy, standardised in RFC 7034 (2013)34 URLs (68%)Blanket DENY or SAMEORIGIN. No per-origin allowlist.
CSP: frame-ancestorsCurrent standard, supersedes the above16 URLs (32%)Accepts an allowlist of origins that may frame the page.

Both exist to stop clickjacking. Per MDN, frame-ancestors takes precedence over X-Frame-Options where both are present. The original header is specified in RFC 7034, and MDN documents the current behaviour.

The point is not that sites are wrong to send these headers. The point is that two thirds of the blocking we saw comes from a blanket header with no allowlist, so there is no origin a review tool could ask to be added to.

What This Breaks

If a product renders customer websites in an iframe, roughly half of prospective customers will see a blank panel on their first attempt. That includes website preview widgets, visual feedback and proofing tools, responsive testers, screenshot services built on frames, and any onboarding flow that says "paste your URL to get started."

What To Use Instead of an iframe

ApproachWorks on blocked sitesStays interactiveTrade-off
Browser extensionYesYesRequires an install, and the user must be able to reach the page themselves.
Server-side proxyYesYesYou fetch and re-serve the page, so you carry the bandwidth, the rewriting, and the abuse surface.
Static snapshotYesNoYou capture the DOM or a screenshot once. Nothing after that click works.
iframeNoYesFree and simple, and it fails on about half of sites.

This is why OverlayQA is built as two paths rather than one. Public URLs open directly in the dashboard through a server-side proxy, with no install. Localhost, staging, and login-gated pages use the Chrome extension, which runs inside the page the reviewer is already looking at and never needs permission to frame it.

Limitations

This is a sample of sites people chose to paste into a free responsive tester, not a random sample of the web. It skews toward indie sites, staging environments, agency client work, and hosted platform builds. We would expect a crawl of the top 10,000 domains to return a different and probably higher number.

Can I check whether my own site blocks embedding?

Yes, in two ways. Load your URL in our free responsive tester, which tells you immediately if the frames are refused. Or inspect the response headers directly with curl -sI https://yoursite.com | grep -i "x-frame-options\|content-security-policy". If either header is present with DENY, SAMEORIGIN, or a frame-ancestors list that excludes the tool you are using, the frame will be refused.

Should I remove these headers so review tools work?

No. They are a legitimate clickjacking defence and removing them to accommodate a QA tool trades a real security control for convenience. Choose a tool that does not need the frame instead. If you do need to allow one specific origin, frame-ancestors supports an allowlist and X-Frame-Options does not.

Related Resources