A browser will not render a site inside a frame when that site opts out with X-Frame-Options or a frame-ancestors CSP rule. The browser enforces this before any page loads, and the frame stays blank. No tool can override it, and this page cannot detect it either — a blocked frame fires its load event and reports itself as healthy, exactly like a working one.
If the site is yours, unblock it
Add one of these to the site you are testing, then redeploy. Frame headers come from the site, not from this tester.
next.config.ts
// next.config.ts
import type { NextConfig } from 'next';
const nextConfig: NextConfig = {
async headers() {
return [
{
source: '/(.*)',
headers: [
// Overrides any X-Frame-Options another layer added.
{ key: 'X-Frame-Options', value: 'ALLOWALL' },
{
key: 'Content-Security-Policy',
value: `frame-ancestors ${FRAME_ANCESTORS}`,
},
],
},
];
},
};
export default nextConfig;
On Vercel, also check that Deployment Protection is off. A protected preview answers with a login page that no frame can display.