An HTML iframe (inline frame) embeds another complete HTML document inside a rectangular window on your current page. Websites commonly use iframes for interactive maps, payment checkout widgets, video players, and live code preview sandboxes.
To embed content safely and accessibly, configure these attributes on your iframe tag:
src: URL of the external page or local HTML file to display.title: Descriptive label required by screen readers so assistive users know what the frame holds before entering it.width and height (or CSS aspect-ratio): Sets dimensions so the page does not jump during loading.loading="lazy": Delays loading off-screen iframes until the visitor scrolls near them.sandbox: Restricts untrusted embedded pages from running scripts, submitting forms, or opening popups unless explicitly permitted.<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>HTML Iframes Example</title>
<style>
.frame-box { border: 1px solid #cbd5e1; border-radius: 8px; width: 100%; max-width: 640px; height: 320px; }
</style>
</head>
<body>
<h2>Sandboxed Embedded Preview</h2>
<iframe
class="frame-box"
srcdoc="<!DOCTYPE html><html><body style='font-family:sans-serif;padding:16px;'><h3>Embedded Document</h3><p>Rendered inside an isolated iframe.</p></body></html>"
title="Live HTML preview sandbox"
sandbox="allow-scripts"
loading="lazy"
></iframe>
</body>
</html>
Many sites send X-Frame-Options: DENY or a strict Content-Security-Policy: frame-ancestors header to prevent clickjacking attacks. When a remote server sets those headers, the browser blocks your iframe from rendering that domain—and no HTML attribute can bypass it.
title attribute: Screen readers announce unlabeled frames merely as "frame", leaving visually impaired visitors guessing.allow-scripts and allow-same-origin on untrusted sandbox frames: Allowing both lets a same-origin iframe remove its own sandbox restriction.loading="lazy" on below-the-fold embeds to protect initial page speed.srcdoc lets you supply inline HTML directly inside the attribute instead of fetching a separate URL, which is ideal for code sandboxes.
Apply CSS width: 100%; aspect-ratio: 16 / 9; height: auto; so the embedded frame scales smoothly with its container.
Sign in to track your learning journey, earn industry-recognized certificates, and join our elite developer community.
Quick Access With
Experiment with the code from this lesson in our interactive playground.
You've completed this section! Take a quick 5-question quiz to check your understanding.