On this page
aspect-ratio & object-fit
CSS aspect-ratio and object-fit: Responsive Media Made Easy
Focus keyword: CSS aspect-ratio. Images, videos and cards need consistent proportions across screen sizes. Before modern CSS we used the padding-top hack. Today aspect-ratio and object-fit solve this cleanly. In this lesson you will learn how to reserve space, prevent layout shift, crop images smartly and build avatars, thumbnails and video embeds.
Trending keywords covered in this lesson
aspect-ratio 16/9, aspect-ratio square, object-fit cover vs contain, object-position, padding-top hack, prevent layout shift, CLS Core Web Vitals, responsive images, width and height attributes, video embed responsive, avatar circle, card thumbnail, object-view-box, image cropping, loading lazy, picture element.
1. The aspect-ratio Property
Aspect ratio is width divided by height. With aspect-ratio: 16 / 9, a box keeps that shape whenever its width changes. You only need to define one dimension (usually width) and the browser calculates the other.
aspect-ratio: 1 / 1for squares (avatars, gallery tiles).aspect-ratio: 4 / 3for classic photos.aspect-ratio: 16 / 9for video and hero banners.aspect-ratio: 3 / 4or9 / 16for portrait images and stories.aspect-ratio: auto 16 / 9uses the intrinsic ratio of an image when it has one, and 16 / 9 as fallback before it loads.
Rules and limits
- Works when at least one of width or height is automatic. If you set both width and height, the ratio is ignored.
- Content can push the box taller than the ratio because of the default
min-height: auto. Setmin-height: 0oroverflow: hiddenif you need a strict box. - It works on any box: div, img, video, iframe, canvas and grid items.
2. The Old padding-top Hack
Older code used padding-top: 56.25% on a wrapper and an absolutely positioned child to keep a 16:9 shape (9 divided by 16 is 0.5625). It is now legacy. Replace it with aspect-ratio and remove the extra wrapper.
3. The object-fit Property
Replaced elements (img, video, canvas) have their own intrinsic size. When you force a width and height, object-fit decides how the media fits inside the box:
fill(default): stretches and distorts.contain: scales down to fit fully, keeps ratio, may show empty bars (letterbox).cover: fills the whole box, keeps ratio, crops the overflow. Best for thumbnails and hero images.none: no resizing, original size, cropped if larger.scale-down: the smaller result of none or contain.
4. object-position
object-position moves the media inside its box, like background-position. Default is 50% 50% (centered). For portraits use object-position: top or 50% 20% so faces are not cropped. Always choose a focal point for cover images.
5. aspect-ratio and object-fit Together
The perfect combination for cards is: img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }. Every card image gets the same shape, whatever the source size is. For avatars add border-radius: 50% and aspect-ratio: 1.
6. Preventing Layout Shift (CLS)
When an image loads after text, the page jumps. This hurts the Cumulative Layout Shift score, one of Google Core Web Vitals. To prevent it:
- Always add
widthandheightattributes to images. Browsers use them to calculate an automatic aspect ratio before the file loads. - Add
img { max-width: 100%; height: auto; }in your reset so images stay responsive. - Use
aspect-ratioon containers for embeds, ads and lazy-loaded media. - Use
loading='lazy'on images below the fold andfetchpriority='high'on the main hero image.
7. Responsive Video and Iframe Embeds
Set width: 100% and aspect-ratio: 16 / 9 on the iframe or video. Remove the fixed height attribute or override it with height: auto.
8. Different Ratios per Screen
Change the ratio with media queries or container queries, for example a wide 21 / 9 hero on desktop and a taller 4 / 5 hero on mobile. Combine with the picture element for art direction when crops must be different files.
9. Accessibility Notes
- Cropping with cover can hide important content, so check focal points and keep alt text meaningful.
- Do not put text inside images that may be cropped.
- Decorative images should have an empty alt attribute.
10. Common Mistakes
- Setting width, height and aspect-ratio together and wondering why the ratio is ignored.
- Using object-fit on a div (it only works on replaced elements like img and video).
- Forgetting width and height attributes on images and causing layout shift.
- Stretching images with object-fit fill.
- Using cover without choosing object-position for faces.
Key Takeaways
Use aspect-ratio to reserve and control shape, use object-fit to decide how media fills that shape, and use object-position to choose the focal point. Together they replace old hacks and improve performance and design consistency.
Press Run to execute.
Press Run to execute.
Press Run to execute.
Press Run to execute.
Press Run to execute.
Press Run to execute.
Press Run to execute.
Make all images in the gallery the same 1 / 1 square using aspect-ratio and object-fit cover, even though their sources have different sizes.
Press Run to execute.
Show expected output
Images use aspect-ratio: 1 / 1 and object-fit: cover so all tiles are equal squaresThis is a self-check — compare your result with the expected output above.
Turn the fixed size video placeholder into a responsive 16 / 9 box that never exceeds 720px width and keeps its shape on small screens.
Press Run to execute.
Show expected output
Video box uses width: 100%, max-width: 720px and aspect-ratio: 16 / 9 with no fixed heightThis is a self-check — compare your result with the expected output above.
Was this page helpful?