Make an Iframe Responsive With CSS

An iframe with a fixed width will eventually stick out of a narrow layout. Setting width: 100% fixes one half of the problem; the other half is keeping the embedded video or map at the right aspect ratio.

For a 16:9 embed, a wrapper with percentage padding does the job:

<style>
  .iframe-container {
    position: relative;
    overflow: hidden;
    padding-top: 56.25%;
  }

  .iframe-container iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
  }
</style>

<div class="iframe-container">
  <iframe
    src="https://www.youtube.com/embed/abc123"
    title="Example video"
    allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"
    allowfullscreen
  ></iframe>
</div>

The wrapper’s padding-top: 56.25% creates a 16:9 box because 9 / 16 is 0.5625. The absolutely positioned iframe fills that box as its width changes.

This older padding technique works well and does not need JavaScript. In modern CSS, aspect-ratio: 16 / 9 is clearer, but the wrapper remains useful when older browser support matters. Whichever version you use, give the iframe a useful title; responsive layout should not come at the expense of accessibility.