Darkening an image is a useful technique in web design. It enhances text readability, adds depth to UI components, and helps focus the user’s attention on foreground elements. With CSS, you can darken images easily—without editing the image file itself.
In this guide, you’ll learn how to darken an image using CSS, using both simple and advanced techniques for full creative control.
✅ Method 1: Use filter: brightness()
The simplest way to darken an image is by reducing its brightness using the filter
property.
📌 CSS:
.darken-image {
filter: brightness(50%);
}
📌 HTML:
<img src="image.jpg" class="darken-image" alt="Darkened Image">
✅ What it does:
- Lowers brightness to 50% (darker image)
- Keeps the image dimensions and layout intact
💡 Pro Tip: Use values below
100%
to darken, and above100%
to brighten.
✅ Method 2: Add a Dark Overlay with a Pseudo-Element
If you want to darken an image without affecting the image file and keep overlay text clear, use a ::before
pseudo-element.
📌 HTML:
<div class="image-overlay">
<h2>Overlay Text</h2>
</div>
📌 CSS:
.image-overlay {
position: relative;
background-image: url('image.jpg');
background-size: cover;
background-position: center;
height: 300px;
color: white;
display: flex;
align-items: center;
justify-content: center;
}
.image-overlay::before {
content: '';
position: absolute;
top: 0; left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.5); /* Black with 50% opacity */
z-index: 1;
}
.image-overlay h2 {
position: relative;
z-index: 2;
}
✅ Benefits:
- Text remains sharp and visible
- Background image is darkened visually without filter distortion
✅ Method 3: Use linear-gradient
Overlay on Background Image
Another clean method is to combine a semi-transparent gradient with the image in a single CSS background.
📌 CSS:
.darken-bg {
background: linear-gradient(rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)),
url('image.jpg');
background-size: cover;
background-position: center;
height: 300px;
color: white;
display: flex;
align-items: center;
justify-content: center;
}
✅ Use Case:
Perfect for hero banners or section backgrounds with overlay text.
🧾 Summary: Which Method Should You Use?
Method | Best For |
---|---|
filter: brightness() | Quick image darkening without overlays |
Pseudo-element dark overlay | Maintaining content readability on image |
linear-gradient background combo | Clean, efficient background layering |
🧠 Final Thoughts
Darkening images using CSS is simple, powerful, and incredibly useful for improving contrast, focus, and design aesthetics. Depending on your layout and needs, choose from filters, overlays, or gradients to create a polished, professional look.
Pro Tip: Want to add a darkening effect on hover? Combine filter
or opacity
with CSS transitions for smooth interactivity.