11 / 12

Difference between <iframe> and <embed>?

<iframe> vs <embed>

Both <iframe> and <embed> are used to include external content in a webpage, but they serve different purposes and behave differently.

Key Differences
  1. 1

    <iframe> (Inline Frame):

  2. 2
    • Embeds another HTML document inside the current page.
  3. 3
    • Loads a full web page, including HTML, CSS, and scripts.
  4. 4
    • Supports attributes like src, width, height, sandbox, allowfullscreen, and loading.
  5. 5
    • Can be sandboxed for security, limiting what the embedded content can do.
  6. 6

    <embed>:

  7. 7
    • Embeds external content such as PDFs, audio, video, or Flash (legacy).
  8. 8
    • Does not load a full HTML page; generally used for media or plugins.
  9. 9
    • Void element (no closing tag) and has attributes like src, type, width, and height.
  10. 10
    • Less flexible than <iframe> and does not support fallback content inside the tag.
Example Usage

In short: Use <iframe> to embed full web pages with interaction and sandboxing options. Use <embed> to include specific external media files or plugins with minimal interaction.

Difficulty: 5/10
Topics: HTML Semantics, Web Security, Embedded Content

Scenario Questions

0-2 years experience
  1. 1

    We need to display a static PDF menu on our restaurant's website. How would you choose between using an <iframe> and an <embed> tag to display this PDF, and what happens if a user's browser doesn't support PDF viewing?

  2. 2

    Imagine you're adding a third-party weather widget to a blog. The widget provider gives you both an <iframe> and an <embed> snippet. Which one would you prefer if you want to make sure the widget can't maliciously access the parent page's cookies, and how would you configure it?

2-5 years experience
  1. 1

    We are building a dashboard where users can preview untrusted HTML templates submitted by other users. A developer suggested using <embed> because it's simpler, but we have security concerns. Why is <iframe> with a sandbox attribute a better choice here, and what specific vulnerabilities are we mitigating?

  2. 2

    We've integrated a third-party payment form. When using <embed>, we noticed we can't easily handle fallback content or detect when the external resource fails to load. How does switching to an <iframe> help us handle loading states, errors, and responsive resizing?

5-8 years experience
  1. 1

    We're designing a portal that hosts micro-applications developed by external partners. What are the architectural implications of using <iframe> versus <embed> regarding memory footprint, CSS/JS isolation, and Content Security Policy (CSP) overhead?

  2. 2

    Our media-heavy site embeds dozens of interactive PDF reports and external charts. We're seeing massive performance degradation on initial page load. How would you optimize this using <iframe> attributes like loading="lazy" and intersection observers, and why would <embed> limit your options here?

8+ years experience
  1. 1

    Our enterprise application historically used <embed> and <object> tags to load legacy interactive components and documents. We are migrating to a modern, zero-trust security architecture. How would you design a migration path to transition these to secure <iframe> contexts or native web components, and how do you handle cross-origin communication challenges at scale?

  2. 2

    You are architecting an SDK that our enterprise clients will install on their sites to render our complex checkout flow. We must choose between delivering this via an <iframe> or an <embed> element. What are the long-term implications on browser compatibility, cookie deprecation, and client-side performance that would drive your architectural decision?

Follow-up Questions

  • How does the sandbox attribute on an iframe restrict script execution and form submission?
  • If you must communicate between the parent window and an iframe on a different domain, how would you implement that securely?
  • How do third-party cookie deprecations affect state management inside an iframe compared to an embed?