HTML Iframes: Complete Guide to the <iframe> Element
The HTML <iframe> element is used to embed another HTML document or web resource inside the current web page. The word iframe means inline frame. It creates a separate browsing context within a page, allowing content from another source to appear without replacing the current page.
Iframes are commonly used to embed videos, maps, online documents, advertisements, social media posts, forms, dashboards, payment interfaces, and other external content.
For example, a YouTube video can be displayed inside a blog post using an iframe rather than building a video player from scratch.
What Is an HTML Iframe?
An HTML iframe is an element that displays another webpage or document inside the current webpage.
The basic syntax is:
<iframe src="https://example.com"></iframe>
The src attribute specifies the URL of the content that the iframe should load.
A simple iframe may look like this:
<iframe
src="https://example.com"
width="600"
height="400">
</iframe>
Here:
<iframe>starts the iframe.srcspecifies the content to display.widthcontrols the width.heightcontrols the height.</iframe>closes the element.
An iframe does not merge the embedded document with the surrounding HTML. Instead, the browser creates a separate browsing context for it.
Why Are Iframes Used?
Iframes are useful when a website needs to display content that already exists somewhere else.
Common examples include:
- YouTube videos
- Google Maps
- Online forms
- PDF documents
- Advertisements
- Social media posts
- Analytics dashboards
- Payment widgets
- Online calculators
- External applications
- Interactive charts
- Learning platforms
- Third-party tools
For example, instead of creating a complete map application yourself, you can embed a map provided by a mapping service.
Basic HTML Iframe Example
<!DOCTYPE html>
<html>
<head>
<title>HTML Iframe Example</title>
</head>
<body>
<h2>Embedded Web Page</h2>
<iframe
src="https://example.com"
width="800"
height="450">
</iframe>
</body>
</html>
The browser will attempt to display the specified webpage inside the iframe.
However, whether an external website can actually be embedded depends on that website’s security policies. Some websites prevent iframe embedding.
The src Attribute
The src attribute specifies the URL of the document or resource that should be loaded inside the iframe.
Example:
<iframe src="https://example.com"></iframe>
You can also embed a local HTML file:
<iframe src="about.html"></iframe>
The src value can be an absolute URL or, depending on your project, a relative URL.
Absolute URL
<iframe src="https://example.com/page.html"></iframe>
Relative URL
<iframe src="page.html"></iframe>
Using an external URL can introduce security, privacy, performance, and compatibility considerations, so only embed resources from sources you trust.
The width Attribute
The width attribute specifies the width of the iframe.
<iframe
src="https://example.com"
width="700">
</iframe>
You can also use CSS instead of the HTML width attribute:
<iframe
src="https://example.com"
class="embedded-page">
</iframe>
.embedded-page {
width: 100%;
}
For modern responsive websites, CSS is generally more flexible.
The height Attribute
The height attribute specifies the height of the iframe.
<iframe
src="https://example.com"
width="700"
height="400">
</iframe>
You can also control height using CSS:
iframe {
width: 100%;
height: 400px;
}
For responsive layouts, CSS is usually preferable because different screen sizes require different dimensions.
Responsive Iframes
A fixed-size iframe may look fine on a desktop computer but overflow on a smartphone.
For example:
<iframe
src="https://example.com"
class="responsive-iframe">
</iframe>
.responsive-iframe {
width: 100%;
height: 500px;
border: 0;
}
The width: 100% rule allows the iframe to use the available width of its container.
For videos and other content with a known aspect ratio, you can use CSS aspect-ratio:
.video-frame {
width: 100%;
aspect-ratio: 16 / 9;
height: auto;
border: 0;
}
HTML:
<iframe
class="video-frame"
src="https://www.youtube.com/embed/VIDEO_ID"
title="Embedded video">
</iframe>
This approach is especially useful for responsive video embeds.
The title Attribute
The title attribute provides a text description of the iframe.
Example:
<iframe
src="https://example.com"
title="Example website">
</iframe>
Adding a meaningful title is important for accessibility because assistive technologies can use it to help users understand what the iframe contains.
Avoid vague titles such as:
title="iframe"
A better title would be:
title="Company location map"
or:
title="Product demonstration video"
The loading Attribute
The loading attribute can tell the browser when iframe content should be loaded.
Example:
<iframe
src="https://example.com"
loading="lazy"
title="Embedded content">
</iframe>
The lazy value allows the browser to defer loading until the iframe is closer to the user’s viewport.
This can improve initial page loading performance when a page contains several iframes.
For important content visible immediately when the page loads, lazy loading may not always be appropriate.
The name Attribute
The name attribute gives the iframe a browsing-context name.
Example:
<iframe
src="about.html"
name="contentFrame"
title="Content frame">
</iframe>
The name can be useful as a target for links.
<a href="page2.html" target="contentFrame">
Open Page 2
</a>
The linked document can then open inside the named iframe.
The sandbox Attribute
The sandbox attribute adds restrictions to the content loaded inside an iframe.
Example:
<iframe
src="https://example.com"
sandbox=""
title="Sandboxed content">
</iframe>
An empty sandbox attribute applies a broad set of restrictions.
You can selectively allow certain capabilities.
For example:
<iframe
src="https://example.com"
sandbox="allow-scripts"
title="Sandboxed application">
</iframe>
Possible sandbox permissions include:
allow-downloadsallow-formsallow-modalsallow-orientation-lockallow-popupsallow-popups-to-escape-sandboxallow-presentationallow-same-originallow-scriptsallow-top-navigationallow-top-navigation-by-user-activation
The exact combination should be based on what the embedded application actually needs.
Why Is sandbox Important?
Third-party content should not automatically receive more permissions than necessary.
A sandbox can reduce the capabilities available to embedded content.
However, sandboxing is not a substitute for a complete security strategy. You should also consider Content Security Policy, origin isolation, trusted sources, and other browser security controls.
The allow Attribute
The allow attribute can control certain features or permissions available to the embedded document.
For example:
<iframe
src="https://example.com"
allow="fullscreen"
title="Embedded content">
</iframe>
An iframe may require permissions for particular browser features, depending on the service being embedded.
You may encounter permissions such as:
allow="fullscreen; autoplay"
or:
allow="geolocation"
Only grant permissions that the embedded content actually needs.
The allowfullscreen Attribute
The allowfullscreen attribute indicates that the iframe may be permitted to use fullscreen mode.
Example:
<iframe
src="https://example.com/video"
allowfullscreen
title="Video player">
</iframe>
This is frequently seen in video embeds.
Modern iframe permission handling can also involve the allow attribute.
The referrerpolicy Attribute
The referrerpolicy attribute controls what referrer information the browser sends when requesting the iframe resource.
Example:
<iframe
src="https://example.com"
referrerpolicy="no-referrer"
title="Embedded page">
</iframe>
Different policies provide different levels of referrer information.
Common values include:
no-referrerno-referrer-when-downgradeoriginorigin-when-cross-originsame-originstrict-originstrict-origin-when-cross-originunsafe-url
The appropriate value depends on the application’s privacy and compatibility requirements.
The srcdoc Attribute
The srcdoc attribute allows you to place HTML directly inside the iframe instead of loading it from a URL.
Example:
<iframe
srcdoc="<h2>Hello</h2><p>This content is inside the iframe.</p>"
title="Inline HTML document">
</iframe>
A more readable example can use HTML entities:
<iframe
srcdoc="<h2>Welcome</h2><p>This is embedded HTML.</p>"
title="Welcome message">
</iframe>
The srcdoc attribute is useful for small, self-contained embedded documents.
For larger content, a separate document is usually easier to maintain.
The src and srcdoc Attributes
Both can be used to provide iframe content, but they serve different purposes.
src loads a resource from a URL:
<iframe src="page.html"></iframe>
srcdoc provides HTML directly:
<iframe srcdoc="<p>Hello World</p>"></iframe>
When both are specified, the srcdoc content is used as the document source, while the src can act as a fallback in relevant situations.
Embedding a YouTube Video
One of the most common uses of iframes is embedding videos.
A typical embed looks like:
<iframe
width="560"
height="315"
src="https://www.youtube.com/embed/VIDEO_ID"
title="YouTube video player"
allowfullscreen>
</iframe>
Replace VIDEO_ID with the appropriate video identifier.
For responsive websites:
<iframe
class="video-frame"
src="https://www.youtube.com/embed/VIDEO_ID"
title="YouTube video"
allowfullscreen>
</iframe>
.video-frame {
width: 100%;
aspect-ratio: 16 / 9;
border: 0;
}
Always use the official embed URL supplied by the video platform rather than manually constructing unsupported URLs.
Embedding Google Maps
Maps are another common iframe use case.
A map provider may provide an embed code similar to:
<iframe
src="MAP_EMBED_URL"
width="600"
height="450"
style="border:0;"
loading="lazy"
allowfullscreen
referrerpolicy="no-referrer-when-downgrade"
title="Location map">
</iframe>
The actual embed URL and recommended attributes should come from the map provider.
Embedding a PDF
Some browsers can display PDF documents inside an iframe.
Example:
<iframe
src="document.pdf"
width="100%"
height="600"
title="PDF document">
</iframe>
However, PDF rendering behavior can vary between browsers, devices, and embedded viewers.
For important documents, it is often a good idea to provide a normal download or open-document link as an alternative.
<a href="document.pdf">Open the PDF document</a>
Embedding an Online Form
An iframe can be used to display an externally hosted form.
<iframe
src="https://example.com/form"
width="100%"
height="600"
title="Online contact form">
</iframe>
This can be useful when the form provider handles submission, validation, storage, and other functionality.
Embedding Advertisements
Advertising networks commonly use iframes to isolate advertisements from the main webpage.
A simplified example is:
<iframe
src="ad.html"
title="Advertisement"
loading="lazy">
</iframe>
Real advertising systems usually use more sophisticated infrastructure and security policies.
Iframes and Security
Security is one of the most important topics when using iframes.
An iframe creates a separate browsing context, but embedding external content does not automatically make that content trustworthy.
Before embedding an external resource, consider:
- Who controls the resource?
- Is the source trustworthy?
- Does it use HTTPS?
- What permissions does it need?
- Does it require JavaScript?
- Can it navigate the parent page?
- Does it need access to the user’s location, camera, microphone, or other capabilities?
- What information might be shared with the third-party service?
Same-Origin Policy and Iframes
Browsers use the same-origin policy to restrict how documents from different origins interact.
An origin generally consists of:
- Scheme
- Host
- Port
For example:
https://example.com
and:
https://another-example.com
have different origins.
A page cannot freely access the DOM of a cross-origin iframe.
For example, this can be restricted by the browser:
const frame = document.querySelector("iframe");
frame.contentWindow.document.body.innerHTML = "Hello";
If the iframe is cross-origin, the browser’s same-origin security rules normally prevent direct DOM access.
Same-Origin vs Cross-Origin Iframes
A same-origin iframe can generally have more direct interaction with its parent page, subject to browser security rules.
A cross-origin iframe is more restricted.
Cross-origin communication can be handled through mechanisms such as window.postMessage().
For example, the parent page can send a message:
const frame = document.querySelector("#myFrame");
frame.contentWindow.postMessage(
{ message: "Hello iframe" },
"https://example.com"
);
The receiving document can listen for messages:
window.addEventListener("message", (event) => {
if (event.origin !== "https://example.com") {
return;
}
console.log(event.data);
});
Always validate the message origin and design the communication carefully.
What Is Clickjacking?
Clickjacking is a type of attack where a user is tricked into clicking something different from what they think they are clicking.
Iframes can be involved in clickjacking attacks because an attacker may attempt to place a legitimate webpage or interface beneath another visual layer.
Websites can protect themselves using security mechanisms such as:
Content-Security-Policyframe-ancestorsX-Frame-Options
For example, a site can use a Content Security Policy to control which origins are allowed to frame it.
X-Frame-Options
X-Frame-Options is an HTTP response header that can help control whether a page can be displayed in a frame.
Common values historically include:
X-Frame-Options: DENY
and:
X-Frame-Options: SAMEORIGIN
These headers are sent by the website being embedded, not normally by the parent page.
Modern applications should also consider the frame-ancestors directive in Content Security Policy, which provides more flexible control.
Content Security Policy and Iframes
Content Security Policy, or CSP, is an important web security mechanism.
For example, a website can use:
Content-Security-Policy: frame-src https://example.com
This can restrict which sources the page is allowed to load in frames.
A site can also control which pages are allowed to embed it using:
Content-Security-Policy: frame-ancestors 'self'
The exact CSP policy should be designed for the application’s requirements.
Why an Iframe May Not Load
Sometimes an iframe appears blank or fails to load.
Possible reasons include:
- The URL is incorrect.
- The external server is unavailable.
- The external site blocks iframe embedding.
- The resource requires authentication.
- Browser security rules prevent an operation.
- The content is blocked by a Content Security Policy.
- Mixed-content restrictions are involved.
- Network or firewall restrictions exist.
- The embedded service has changed its URL.
- The content requires special permissions.
A common problem is a response header that prevents the page from being framed.
For example, the embedded website may send:
X-Frame-Options: DENY
In that case, changing the iframe HTML on your page will not override the site’s policy.
HTTPS and Iframes
If your website uses HTTPS, embedded resources should also generally use HTTPS.
Avoid:
<iframe src="http://example.com"></iframe>
on an HTTPS page when the resource does not support secure loading.
Prefer:
<iframe src="https://example.com"></iframe>
Modern browsers may block insecure active content for security reasons.
Iframe Borders
Browsers may display iframe borders depending on styling and context.
Modern CSS can be used to remove the border:
iframe {
border: 0;
}
Example:
<iframe
src="https://example.com"
class="frame"
title="Embedded page">
</iframe>
.frame {
width: 100%;
height: 400px;
border: 0;
}
Iframes and Accessibility
Accessibility should not be ignored when using iframes.
The most important practice is to provide a meaningful title.
Good:
<iframe
src="map.html"
title="Map showing our office location">
</iframe>
Less useful:
<iframe
src="map.html"
title="iframe">
</iframe>
If the iframe contains important information, make sure users can access that information through another appropriate method when possible.
For example, if a map is embedded, you may also provide the address as text.
Iframes and SEO
An iframe is generally not a replacement for normal page content.
If important information exists only inside a third-party iframe, you should not assume that search engines will treat that content as if it were ordinary content on your page.
For SEO, important information should normally be available in the main document in accessible HTML where practical.
For example, if a business embeds a map, the page should still contain useful information such as:
- Business name
- Address
- Opening hours
- Contact information
- Services
- Relevant descriptive content
An iframe should enhance the page rather than become the only source of important information.
Iframes and Page Speed
Iframes can affect website performance because they may load additional:
- HTML
- CSS
- JavaScript
- Images
- Fonts
- Network requests
- Third-party services
A page containing several large third-party embeds may become slower.
Using:
loading="lazy"
can help defer off-screen iframe loading.
Example:
<iframe
src="https://example.com"
loading="lazy"
title="Embedded content">
</iframe>
You should still test performance because lazy loading is only one part of optimization.
Iframes and Privacy
Third-party iframe content can potentially involve third-party requests, cookies, analytics, advertising, or other forms of data processing.
Before embedding third-party services, consider:
- What data the service receives.
- Whether cookies are used.
- Whether tracking occurs.
- Whether the service needs user consent.
- Whether the service has privacy documentation.
- Whether your website’s privacy policy needs to mention the service.
Privacy requirements can vary by country and by the type of information involved.
Iframes and Cookies
Cookies associated with embedded third-party content can be affected by browser privacy policies and cookie rules.
Modern browsers increasingly restrict cross-site tracking and third-party cookie behavior.
Therefore, a third-party application that worked in an iframe in the past may behave differently in modern browsers.
Developers should test embedded applications in current browsers and follow the requirements of the third-party service.
Iframes and JavaScript
JavaScript can interact with an iframe, but access depends heavily on origin and browser security rules.
To select an iframe:
const iframe = document.querySelector("iframe");
You can access its window:
const iframeWindow = iframe.contentWindow;
But accessing the document of a cross-origin iframe is normally restricted.
For cross-origin communication, use postMessage() rather than trying to bypass browser security.
Detecting Iframe Load Events
You can listen for an iframe’s load event:
<iframe
id="myFrame"
src="https://example.com"
title="Example page">
</iframe>
<script>
const frame = document.getElementById("myFrame");
frame.addEventListener("load", () => {
console.log("Iframe loaded");
});
</script>
The event indicates that the iframe’s document has completed its load process as observed by the browser.
It does not necessarily mean that every application-level operation inside the embedded page has completed successfully.
Iframe Fallback Content
You can place fallback content inside an iframe element.
Example:
<iframe
src="https://example.com"
title="Embedded page">
<p>Your browser does not support iframes.</p>
</iframe>
Modern browsers generally support iframes, so this fallback is less important than it once was. Still, it can provide a useful fallback in certain circumstances.
Iframe vs Object and Embed
HTML provides several ways to include external content.
Iframe
<iframe src="page.html"></iframe>
An iframe creates a nested browsing context and is widely used for webpages and third-party applications.
Object
<object data="document.pdf" type="application/pdf"></object>
The <object> element can embed external resources, including some document and media types.
Embed
<embed src="document.pdf" type="application/pdf">
The <embed> element is another way to embed external content.
For embedding another webpage or web application, <iframe> is generally the appropriate semantic choice.
Iframe vs HTML Frames
Modern <iframe> elements should not be confused with the old HTML <frameset> and <frame> system.
Old frame-based layouts divided the browser window into multiple frames.
For example, older HTML used:
<frameset>
<frame src="menu.html">
<frame src="content.html">
</frameset>
This approach is obsolete in modern HTML.
The <iframe> element is still supported and useful because it embeds content inside a normal document.
Common Iframe Mistakes
1. Using fixed dimensions everywhere
This can cause problems on small screens.
Instead, use responsive CSS where appropriate.
2. Forgetting the title
A missing or meaningless title can reduce accessibility.
Use:
title="Product demonstration video"
rather than:
title="frame"
3. Embedding untrusted content
Do not blindly embed content from unknown websites.
4. Giving excessive permissions
Avoid unnecessary values in the allow attribute.
5. Ignoring sandboxing
If third-party content does not require unrestricted functionality, consider whether sandbox can provide useful restrictions.
6. Expecting to bypass security headers
If another website blocks framing, your HTML cannot simply override its server-side security policy.
7. Using insecure URLs
Prefer HTTPS resources on HTTPS pages.
8. Adding too many third-party iframes
Every embedded service can add network requests and JavaScript.
9. Making essential information iframe-only
Important information should remain available in normal page content when possible.
10. Forgetting mobile users
Test embedded content on phones and tablets, not only desktop screens.
Best Practices for HTML Iframes
For reliable and accessible iframe implementations:
- Use HTTPS whenever possible.
- Give every meaningful iframe a descriptive
title. - Make iframes responsive when appropriate.
- Use
loading="lazy"for suitable off-screen content. - Use
sandboxwhen it provides meaningful security benefits. - Grant only necessary permissions through
allow. - Embed content only from trusted sources.
- Keep important information outside the iframe when practical.
- Test on multiple browsers and screen sizes.
- Consider the privacy implications of third-party content.
- Monitor page performance.
- Use secure communication methods for cross-origin messaging.
- Validate
postMessage()origins. - Do not rely on iframes as an SEO strategy.
- Provide alternatives for important embedded content when practical.
Complete Practical Example
Here is a more complete responsive iframe:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Responsive Iframe</title>
<style>
.iframe-container {
width: 100%;
max-width: 900px;
margin: 0 auto;
}
.iframe-container iframe {
width: 100%;
aspect-ratio: 16 / 9;
border: 0;
display: block;
}
</style>
</head>
<body>
<main>
<h2>Embedded Content</h2>
<div class="iframe-container">
<iframe
src="https://example.com"
title="Embedded example website"
loading="lazy"
referrerpolicy="strict-origin-when-cross-origin">
</iframe>
</div>
</main>
</body>
</html>
This example demonstrates several modern practices:
- Responsive width
- Aspect-ratio control
- Descriptive iframe title
- Lazy loading
- Referrer policy
- CSS-based styling
- A semantic
<main>element
HTML Iframe Attributes at a Glance
| Attribute | Purpose |
|---|---|
src | Specifies the URL of the embedded resource |
srcdoc | Provides HTML directly inside the iframe |
width | Specifies iframe width |
height | Specifies iframe height |
name | Gives the iframe browsing context a name |
title | Provides an accessible description |
loading | Controls loading behavior such as lazy loading |
sandbox | Restricts capabilities of embedded content |
allow | Controls permissions for certain browser features |
allowfullscreen | Allows fullscreen capability where permitted |
referrerpolicy | Controls referrer information sent with requests |
Is <iframe> a Void Element?
No.
The <iframe> element is not a void element.
It normally has both an opening and closing tag:
<iframe src="page.html"></iframe>
This is different from void elements such as:
<img src="image.jpg" alt="Example">
and:
<br>
Is <iframe> an HTML5 Element?
Yes. The iframe element is part of modern HTML and remains widely used.
Its modern use focuses on embedding another browsing context inside a page.
Some older iframe-related practices and attributes may be obsolete or discouraged, so developers should follow current HTML and browser documentation rather than relying on old tutorials.
Can an Iframe Be Styled With CSS?
Yes.
For example:
iframe {
width: 100%;
height: 500px;
border: 0;
display: block;
}
You can also style its container:
.iframe-wrapper {
width: 100%;
max-width: 1000px;
margin: auto;
}
However, styling the contents of a cross-origin iframe from the parent page is normally restricted by the same-origin policy.
Can CSS Change the Content Inside an Iframe?
Usually, only when the iframe content is accessible under the applicable same-origin rules.
For a cross-origin iframe, you generally cannot simply do this from the parent page:
iframe.contentDocument.body.style.background = "red";
The browser’s security model prevents unauthorized cross-origin DOM access.
If you control both applications, you can design a safe communication mechanism, often using postMessage().
Can an Iframe Access the Parent Page?
It depends on the origins and browser security rules.
A same-origin iframe may have significant access to its parent document.
A cross-origin iframe has restricted access.
For cross-origin communication, window.postMessage() is the standard mechanism for exchanging messages between browsing contexts.
Advantages of Iframes
Iframes provide several practical benefits.
Easy integration
External services can often be embedded with a small amount of HTML.
Isolation
The embedded document runs in its own browsing context.
Reusable third-party services
Developers can use external video players, maps, forms, and applications without rebuilding them.
Useful for complex applications
A separately hosted application can be integrated into another website.
Independent content
The embedded document can have its own HTML, CSS, and JavaScript.
Disadvantages of Iframes
Iframes also have limitations.
Performance overhead
Embedded content may create additional network requests and JavaScript execution.
Security considerations
Third-party content must be handled carefully.
Accessibility challenges
Poorly implemented embeds can create confusing experiences for assistive technology users.
Responsive design problems
Fixed-size embeds may not fit small screens.
SEO limitations
Content inside third-party frames should not be treated as a substitute for important page content.
Cross-origin restrictions
JavaScript cannot freely manipulate cross-origin iframe content.
Privacy concerns
Third-party embeds can involve external requests and tracking technologies.
Frequently Asked Questions
What is an iframe in HTML?
An iframe is an HTML element that embeds another document or browsing context inside the current webpage.
What does iframe stand for?
Iframe stands for inline frame.
Which HTML tag is used for an iframe?
The <iframe> tag is used.
Is iframe still used?
Yes. Iframes remain widely used for videos, maps, forms, advertisements, documents, dashboards, and third-party web applications.
Is iframe safe?
An iframe can be safe when used carefully, but embedding third-party content introduces security, privacy, and performance considerations. Features such as sandbox, restrictive permissions, HTTPS, CSP, and trusted sources can improve security.
Can I embed any website using an iframe?
No. A website can prevent itself from being embedded by using browser security policies such as X-Frame-Options or CSP frame-ancestors.
How do I make an iframe responsive?
A common approach is to use CSS:
iframe {
width: 100%;
aspect-ratio: 16 / 9;
height: auto;
}
What is the difference between iframe and frame?
<iframe> embeds a browsing context inside a normal HTML document. The old <frame> element was part of the obsolete frameset-based layout system.
Should every iframe have a title?
For accessibility, meaningful iframes should have a descriptive title that explains their purpose or content.
What is iframe sandboxing?
Iframe sandboxing uses the sandbox attribute to restrict capabilities available to embedded content.
What is loading="lazy" in an iframe?
It allows the browser to defer loading the iframe until it is closer to being needed, which can reduce unnecessary initial loading work.
Final Thoughts
The HTML <iframe> element is a powerful way to integrate external or separately hosted content into a webpage. It is commonly used for videos, maps, forms, documents, advertisements, dashboards, and web applications.
However, a good iframe implementation involves more than simply adding a src attribute. Developers should think about security, accessibility, privacy, performance, responsiveness, permissions, and cross-origin communication.
For most modern projects, a strong iframe implementation will use a descriptive title, HTTPS, responsive CSS, appropriate loading behavior, limited permissions, and sandboxing where appropriate. Important information should also remain available in the main webpage whenever practical.
Used thoughtfully, iframes can make websites more powerful and easier to integrate with external services without unnecessarily rebuilding functionality that already exists elsewhere.