Khi xây dựng website hiện đại, một trong những yếu tố quan trọng để đảm bảo trải nghiệm người dùng tốt chính là khả năng hiển thị hình ảnh linh hoạt trên mọi thiết bị. Tối ưu responsive image không chỉ giúp cải thiện tốc độ tải trang mà còn đảm bảo hình ảnh được hiển thị rõ nét, đúng tỷ lệ, tránh tình trạng vỡ hình hay lệch bố cục trên các loại màn hình khác nhau.
Một hình ảnh không được responsive có thể dẫn đến nhiều hệ quả tiêu cực như:
Theo thống kê từ HTTP Archive (2024), hình ảnh chiếm trung bình 42% dung lượng tải trang. Do đó, việc tối ưu responsive image không chỉ là điều nên làm, mà là bắt buộc nếu bạn muốn website hoạt động hiệu quả trên desktop, tablet lẫn mobile.
Tóm lại, tối ưu responsive image giúp:

Muốn tối ưu hình ảnh cho đa thiết bị hiệu quả, bạn cần chuẩn bị kiến thức nền tảng về các thẻ HTML5, thuộc tính responsive, cũng như công cụ hỗ trợ kiểm tra hiệu suất hiển thị. Dưới đây là những yếu tố cốt lõi bạn cần nắm rõ trước khi bắt tay vào triển khai.
srcset là thuộc tính mở rộng của thẻ , cho phép bạn chỉ định nhiều phiên bản hình ảnh với độ phân giải hoặc kích thước khác nhau. Trình duyệt sẽ chọn ảnh phù hợp nhất dựa vào kích thước màn hình và độ phân giải thiết bị.
Ví dụ:
="default.jpg"
srcset="image-480w.jpg 480w, image-800w.jpg 800w"
sizes="(max-width: 600px) 480px, 800px"
alt="Mô tả ảnh">
Thuộc tính sizes giúp trình duyệt biết trước vùng ảnh sẽ hiển thị chiếm bao nhiêu không gian trên layout. Việc này giúp trình duyệt lựa chọn ảnh phù hợp ngay từ đầu, giảm tình trạng tải thừa dung lượng.
Thẻ hữu ích khi bạn muốn kiểm soát ảnh hiển thị theo điều kiện cụ thể (ví dụ: dùng ảnh WebP trên trình duyệt hỗ trợ, fallback sang JPEG nếu không hỗ trợ).
Ví dụ:
>
="image.webp" type="image/webp">
="image.jpg" type="image/jpeg">
="image.jpg" alt="Hình ảnh tối ưu">
>
loading="lazy" là một thuộc tính gọn nhẹ, giúp trì hoãn việc tải ảnh cho đến khi chúng gần hiển thị trong vùng nhìn thấy (viewport), nhờ đó giảm thời gian tải ban đầu.
="image.jpg" loading="lazy" alt="Hình ảnh tải chậm">
Việc nắm vững các công cụ và thuộc tính trên là bước chuẩn bị không thể thiếu trước khi thực hiện tối ưu responsive image trong phần tiếp theo.
Để hình ảnh hiển thị đẹp và chuẩn xác trên mọi thiết bị, bạn cần thực hiện đầy đủ từng bước từ chuẩn bị ảnh đến tối ưu mã HTML. Việc bỏ sót một khâu nhỏ có thể khiến hình ảnh tải chậm, hiển thị sai hoặc gây layout shift. Dưới đây là hướng dẫn cụ thể theo trình tự chuẩn.
Trước hết, bạn cần xác định các kích thước ảnh phù hợp với từng loại thiết bị (mobile, tablet, desktop). Nên dựa trên thiết kế (Figma, XD, Sketch) hoặc phân tích layout trang web thực tế. Mục tiêu là chọn ra các điểm gãy thiết kế (breakpoint) để cung cấp đúng ảnh theo từng bối cảnh.
→ Dấu hiệu làm đúng: mỗi ảnh có phiên bản tương ứng với các breakpoint chính như 480px, 768px, 1024px.
Dùng phần mềm như Photoshop, hoặc công cụ tự động (ImageMagick, Sharp, Squoosh CLI…) để xuất ảnh ở nhiều kích thước và định dạng: 480w, 800w, 1200w,… Ưu tiên định dạng WebP hoặc AVIF để giảm dung lượng tối đa.
→ Mẹo: dùng tên file có hậu tố rõ ràng (image-480w.jpg) giúp dễ khai báo trong srcset.
Áp dụng thuộc tính srcset để liệt kê các phiên bản ảnh, kèm thông tin độ rộng. Dùng thêm sizes để trình duyệt quyết định nên tải ảnh nào.
src="default.jpg"
srcset="image-480w.jpg 480w, image-800w.jpg 800w, image-1200w.jpg 1200w"
sizes="(max-width: 768px) 480px, (max-width: 1200px) 800px, 1200px"
alt="Ảnh đa thiết bị">
→ Dấu hiệu đúng: trình duyệt không tải ảnh lớn hơn cần thiết.
Thẻ cho phép bạn cung cấp định dạng ảnh hiện đại như WebP, fallback sang JPEG nếu không hỗ trợ. Đây là bước nâng cao giúp cải thiện tối đa hiệu suất tải ảnh.
>
="image.webp" type="image/webp">
="image.jpg" type="image/jpeg">
="image.jpg" alt="Mô tả hình ảnh">
>
→ Mẹo: kiểm tra với Chrome DevTools để chắc chắn trình duyệt nhận đúng định dạng.
Chèn loading="lazy" vào thẻ để trì hoãn tải ảnh ngoài vùng nhìn thấy. Việc này giảm thời gian tải trang, nhất là với ảnh bên dưới màn hình đầu tiên.
→ Lưu ý: không dùng lazy cho ảnh hero hoặc logo vì có thể gây chậm tải vùng đầu trang.
Cần khai báo rõ chiều cao và chiều rộng ảnh, hoặc đặt ảnh trong vùng có khung tỷ lệ xác định. Tránh để trình duyệt phải tính toán lại bố cục khi ảnh được tải.
→ Mẹo: luôn ghi width, height hoặc dùng aspect-ratio trong CSS.
Dù đã áp dụng các kỹ thuật responsive image, nhiều website vẫn gặp lỗi làm ảnh hiển thị sai hoặc gây ảnh hưởng xấu đến hiệu suất tổng thể. Dưới đây là các lỗi phổ biến cần tránh.
Nhiều người chỉ dùng 1 ảnh gốc và co giãn bằng CSS. Điều này khiến trình duyệt phải tải ảnh quá lớn, gây lãng phí băng thông và chậm trang.
→ Cách khắc phục: luôn dùng srcset với nhiều kích cỡ ảnh khác nhau.
Thiếu sizes khiến trình duyệt không đoán được vùng hiển thị ảnh → thường chọn nhầm ảnh lớn.
→ Gợi ý: đo lường layout thực tế trên từng breakpoint để ghi sizes chính xác.
Nhiều trang web không tận dụng loading="lazy", dẫn đến việc tải toàn bộ ảnh ngay từ đầu – gây chậm trang không cần thiết.
→ Cảnh báo: cần kiểm tra trong DevTools → Network tab để xem ảnh có bị tải sớm không.
Vẫn còn nhiều trang dùng ảnh PNG hoặc JPEG không nén → dung lượng cao.
→ Khuyến nghị: chuyển sang WebP/AVIF, nén với TinyPNG, Squoosh hoặc các công cụ tương tự.
Khi ảnh không có width và height, trình duyệt sẽ dời layout khi ảnh load xong → gây CLS cao.
→ Cách xử lý: luôn đặt kích thước, hoặc dùng aspect-ratio.
Sau khi triển khai, bước đo lường hiệu quả là yếu tố không thể thiếu để xác nhận việc tối ưu responsive image đã mang lại lợi ích thực tế. Bạn có thể sử dụng nhiều công cụ chuyên biệt để kiểm tra tốc độ tải ảnh, độ tương thích, cũng như các chỉ số liên quan đến trải nghiệm người dùng.
Mở trang web trong Chrome DevTools → tab Network → lọc theo “Img”, bạn có thể kiểm tra trình duyệt đã chọn đúng ảnh theo kích thước màn hình chưa. Nếu thấy trình duyệt tải ảnh lớn dù màn hình nhỏ, tức là cấu hình srcset hoặc sizes chưa chính xác.
→ Mẹo: bật tính năng giả lập thiết bị để kiểm tra trên mobile và tablet.
Công cụ Lighthouse sẽ đánh giá nhiều yếu tố liên quan đến responsive image như:
Nếu ảnh quá lớn hoặc thiếu lazy loading, Lighthouse sẽ chỉ ra rõ ràng và chấm điểm hiệu năng thấp.
→ Mẹo: nên đạt điểm ≥ 90 trong mục “Performance” là tốt.
→ Gợi ý: dùng width, height hoặc aspect-ratio, preload ảnh lớn, và tránh lazy loading ảnh hero.
PageSpeed Insights không chỉ chấm điểm hiệu năng, mà còn đưa ra khuyến nghị chi tiết về ảnh:
→ Ưu tiên khắc phục các mục liên quan “Image” để cải thiện thứ hạng.
Để đánh giá rõ ràng, nên test trang web bằng các công cụ như:
→ Lưu lại điểm số và thời gian tải trước – sau để đo hiệu quả thực tế.
Với nhiều phương pháp khác nhau như srcset, picture, lazy loading, preload… bạn nên biết chọn kỹ thuật phù hợp theo nhu cầu, loại ảnh, và thiết bị mục tiêu. Dưới đây là hướng dẫn theo tình huống cụ thể để giúp bạn áp dụng đúng cách.
Với ảnh nền không mang nội dung chính, nên dùng CSS để kiểm soát hiển thị theo kích thước màn hình:
@media(max-width: 768px) {
.banner {
background-image: url("banner-mobile.jpg");
}
}
→ Ưu điểm: linh hoạt thay đổi theo layout, nhẹ.
Ảnh trong bài viết, ảnh mô tả sản phẩm… nên dùng kết hợp srcset và sizes để trình duyệt tự chọn ảnh tốt nhất.
→ Phù hợp với ảnh nhiều định dạng và dung lượng khác nhau.
Ảnh đầu trang nên:
="preload" as="image" href="hero.webp" type="image/webp">
→ Mục tiêu: hiển thị nhanh, không gây layout shift.
Khi cần kiểm soát định dạng ảnh trên từng trình duyệt (ví dụ thương mại điện tử), nên dùng kết hợp fallback định dạng JPEG/PNG.
→ Gợi ý: kiểm tra hỗ trợ AVIF với Modernizr nếu dùng AVIF.
Với ảnh không quan trọng hoặc nằm dưới màn hình đầu tiên, dùng loading="lazy" và decoding="async" để tăng hiệu năng tải trang.
→ Giúp cải thiện điểm tốc độ trên thiết bị di động.
Việc tối ưu responsive image giúp website không chỉ đẹp mắt mà còn hoạt động hiệu quả trên mọi thiết bị. Từ cấu hình srcset, sizes, đến lazy loading và kiểm tra hiệu suất bằng Lighthouse, bạn đã có trong tay mọi công cụ để xử lý ảnh linh hoạt và đúng chuẩn. Hãy bắt đầu tối ưu ảnh ngay hôm nay để cải thiện trải nghiệm người dùng và hiệu suất SEO một cách toàn diện
Có, srcset có thể được dùng bên trong thẻ
Nên dùng thẻ . Trình duyệt cũ sẽ tự động dùng ảnh định dạng cũ.
Không nên dùng cho ảnh hero, logo hoặc ảnh đầu trang quan trọng vì sẽ gây hiện tượng tải chậm hoặc trễ layout.
SVG thường có khả năng co giãn tốt nên ít cần dùng srcset. Tuy nhiên, với SVG có chi tiết phức tạp, vẫn có thể cung cấp nhiều phiên bản bằng
Sử dụng Chrome DevTools để giả lập thiết bị, kiểm tra ảnh được tải từ srcset, dùng Lighthouse hoặc PageSpeed Insights để đánh giá.
Bạn có thể dùng ImageMagick, Squoosh CLI hoặc plugin như sharp (Node.js) để tạo nhiều phiên bản ảnh và cấu trúc srcset tự động.