Iframe in HTML
The <iframe> (inline frame) element embeds another HTML page inside the current page. It creates a nested browsing context - a separate window within your page. Common uses: embedding YouTube videos, Google Maps, social media posts, or other third-party content.
Basic Usage
<iframe src="https://example.com" width="600" height="400"></iframe> The src attribute specifies the URL of the page to embed.
Minimal attributes:
<iframe src="page.html" title="Embedded content"></iframe> The title attribute is important for accessibility - it tells screen reader users what the iframe contains.
Common examples
<!-- YouTube video -->
<iframe
width="560" height="315"
src="https://www.youtube.com/embed/dQw4w9WgXcQ"
title="YouTube video"
allowfullscreen>
</iframe>
<!-- Google Maps location -->
<iframe
width="600" height="450"
src="https://www.google.com/maps/embed?pb=!1m18!1m12!1d3..."
title="Map of location"
allowfullscreen>
</iframe>
<!-- Twitter/X post -->
<iframe
src="https://platform.twitter.com/widgets/tweet_button.html"
title="Twitter share button">
</iframe> srcdoc Attribute
The srcdoc attribute contains inline HTML to render inside the iframe, instead of loading from a URL:
<iframe
srcdoc="<h1>Hello from inside the iframe!</h1><p>This content is inline.</p>"
width="400" height="200"
title="Inline content example">
</iframe> If both srcdoc and src are present, srcdoc takes precedence (and src is used as a fallback for older browsers).
sandbox Attribute
The sandbox attribute applies security restrictions to the iframe content. With no value, all restrictions are applied:
<iframe src="untrusted-page.html" sandbox title="Restricted iframe"></iframe> Restrictions applied (all enabled by default with empty sandbox):
- Forms cannot be submitted
- Scripts cannot run
- Plugins are blocked
- Navigation of the parent page is blocked
- Popups are blocked
- Same-origin access is blocked
Enabling specific features
Pass space-separated values to selectively allow features:
<!-- Allow scripts and forms -->
<iframe
src="page.html"
sandbox="allow-scripts allow-forms"
title="Sandboxed page">
</iframe> | Value | Allows |
|---|---|
allow-scripts |
JavaScript execution |
allow-forms |
Form submission |
allow-same-origin |
Access to parent’s origin (use with caution) |
allow-popups |
Popup windows |
allow-modals |
alert(), confirm(), etc. |
allow-top-navigation |
Navigate the parent page |
allow-downloads |
File downloads |
allow-presentation |
Presentation mode |
Security best practice: Use sandbox when embedding untrusted content. Start with all restrictions and allow only what is necessary.
allow Attribute
The allow attribute specifies permissions policies for the iframe - what browser features the embedded content can access:
<iframe
src="https://example.com/camera-app"
allow="camera; microphone; geolocation"
title="Camera demo">
</iframe> Common permission values:
| Permission | Description |
|---|---|
camera |
Access the user’s camera |
microphone |
Access the user’s microphone |
geolocation |
Access the user’s location |
fullscreen |
Request fullscreen mode |
autoplay |
Autoplay media |
payment |
Payment Request API |
clipboard-read |
Read clipboard |
clipboard-write |
Write to clipboard |
accelerometer |
Access accelerometer sensor |
gyroscope |
Access gyroscope sensor |
Referrer Policy
The referrerpolicy attribute controls what referrer information is sent when the iframe makes requests:
<iframe
src="https://other-site.com"
referrerpolicy="no-referrer"
title="External content">
</iframe> | Value | Behaviour |
|---|---|
no-referrer |
Never send referrer |
no-referrer-when-downgrade |
Send full URL except to HTTP (default) |
origin |
Send only the origin (domain) |
origin-when-cross-origin |
Full URL for same origin, origin for cross-origin |
same-origin |
Send only for same origin |
strict-origin-when-cross-origin |
Strict + protocol downgrade check |
unsafe-url |
Always send full URL (not recommended) |
Detailed Table with Tag, attributes and attribute values
| Attribute | Values | Description |
|---|---|---|
src |
URL | Page to embed |
srcdoc |
HTML code | Inline content (overrides src) |
width |
pixels | Frame width (default 300) |
height |
pixels | Frame height (default 150) |
name |
text | Frame name (for targeting links/forms) |
sandbox |
space-separated allow values | Security restrictions |
allow |
space-separated feature names | Permissions policy for features |
allowfullscreen |
(boolean) | Allow fullscreen mode |
referrerpolicy |
no-referrer, origin, same-origin, strict-origin-when-cross-origin, etc. |
Referrer information |
loading |
eager (default), lazy |
Lazy loading behaviour |
title |
text | Frame description (accessibility) |
importance |
auto, high, low |
Loading priority hint |