Filters
CSS filter effects for images, elements, and backdrop blur effects
blur
Apply blur effects with varying intensities
No Blur
Blur SM
Blur
Blur LG
Blur XL
<div>
<div class="image-demo blur-none"></div>
<p class="text-center mt-2">No Blur</p>
</div>
<div>
<div class="image-demo blur-sm"></div>
<p class="text-center mt-2">Blur SM</p>
</div>
<div>
<div class="image-demo blur"></div>
<p class="text-center mt-2">Blur</p>
</div>
<div>
<div class="image-demo blur-lg"></div>
<p class="text-center mt-2">Blur LG</p>
</div>
<div>
<div class="image-demo blur-xl"></div>
<p class="text-center mt-2">Blur XL</p>
</div><img src="image.jpg" class="blur-sm">
<img src="image.jpg" class="blur">
<img src="image.jpg" class="blur-lg">
<img src="image.jpg" class="blur-xl">
brightness-contrast
Adjust brightness and contrast levels
Brightness 50%
Brightness 100%
Brightness 150%
Contrast 50%
Contrast 150%
<div>
<div class="image-demo brightness-50"></div>
<p class="text-center mt-2">Brightness 50%</p>
</div>
<div>
<div class="image-demo brightness-100"></div>
<p class="text-center mt-2">Brightness 100%</p>
</div>
<div>
<div class="image-demo brightness-150"></div>
<p class="text-center mt-2">Brightness 150%</p>
</div>
<div>
<div class="image-demo contrast-50"></div>
<p class="text-center mt-2">Contrast 50%</p>
</div>
<div>
<div class="image-demo contrast-150"></div>
<p class="text-center mt-2">Contrast 150%</p>
</div><img src="image.jpg" class="brightness-150">
<img src="image.jpg" class="contrast-125">
grayscale-sepia
Remove colour or add vintage sepia tone
Original
Grayscale 50%
Grayscale 100%
Sepia 50%
Sepia 100%
<div>
<div class="image-demo"></div>
<p class="text-center mt-2">Original</p>
</div>
<div>
<div class="image-demo grayscale-50"></div>
<p class="text-center mt-2">Grayscale 50%</p>
</div>
<div>
<div class="image-demo grayscale"></div>
<p class="text-center mt-2">Grayscale 100%</p>
</div>
<div>
<div class="image-demo sepia-50"></div>
<p class="text-center mt-2">Sepia 50%</p>
</div>
<div>
<div class="image-demo sepia"></div>
<p class="text-center mt-2">Sepia 100%</p>
</div><img src="image.jpg" class="grayscale">
<img src="image.jpg" class="sepia">
saturate-hue
Adjust colour saturation and rotate hues
Saturate 0%
Saturate 100%
Saturate 200%
Hue Rotate 90°
Hue Rotate 180°
<div>
<div class="image-demo saturate-0"></div>
<p class="text-center mt-2">Saturate 0%</p>
</div>
<div>
<div class="image-demo saturate-100"></div>
<p class="text-center mt-2">Saturate 100%</p>
</div>
<div>
<div class="image-demo saturate-200"></div>
<p class="text-center mt-2">Saturate 200%</p>
</div>
<div>
<div class="image-demo hue-rotate-90"></div>
<p class="text-center mt-2">Hue Rotate 90°</p>
</div>
<div>
<div class="image-demo hue-rotate-180"></div>
<p class="text-center mt-2">Hue Rotate 180°</p>
</div><img src="image.jpg" class="saturate-150">
<img src="image.jpg" class="hue-rotate-90">
invert
Invert colours for negative effect
Original
Invert 50%
Invert 100%
<div>
<div class="image-demo"></div>
<p class="text-center mt-2">Original</p>
</div>
<div>
<div class="image-demo invert-50"></div>
<p class="text-center mt-2">Invert 50%</p>
</div>
<div>
<div class="image-demo invert"></div>
<p class="text-center mt-2">Invert 100%</p>
</div><img src="image.jpg" class="invert">
drop-shadow
Add shadows to non-rectangular elements (unlike box-shadow)
<div class="filter-demo drop-shadow-sm">Drop Shadow SM</div>
<div class="filter-demo drop-shadow">Drop Shadow</div>
<div class="filter-demo drop-shadow-md">Drop Shadow MD</div>
<div class="filter-demo drop-shadow-lg">Drop Shadow LG</div>
<div class="filter-demo drop-shadow-xl">Drop Shadow XL</div><img src="icon.svg" class="drop-shadow-lg">
<div class="drop-shadow-xl">Elevated Element</div>
backdrop-blur
Blur the background behind an element (glassmorphism effect)
<div class="backdrop-demo">
<div class="backdrop-overlay backdrop-blur-sm">Backdrop Blur SM</div>
</div>
<div class="backdrop-demo">
<div class="backdrop-overlay backdrop-blur">Backdrop Blur</div>
</div>
<div class="backdrop-demo">
<div class="backdrop-overlay backdrop-blur-lg">Backdrop Blur LG</div>
</div>
<div class="backdrop-demo">
<div class="backdrop-overlay backdrop-blur-xl">Backdrop Blur XL</div>
</div><div class="backdrop-blur">
<!-- Content with blurred background -->
</div>
<!-- Glassmorphism Card -->
<div class="card backdrop-blur-lg" style="background: rgba(255,255,255,0.1);">
<div class="card-body">
Semi-transparent with blurred backdrop
</div>
</div>
presets
Pre-configured combinations of multiple filters
Original
Vintage
Dramatic
Soft
Cold
Warm
<div>
<div class="image-demo"></div>
<p class="text-center mt-2">Original</p>
</div>
<div>
<div class="image-demo filter-vintage"></div>
<p class="text-center mt-2">Vintage</p>
</div>
<div>
<div class="image-demo filter-dramatic"></div>
<p class="text-center mt-2">Dramatic</p>
</div>
<div>
<div class="image-demo filter-soft"></div>
<p class="text-center mt-2">Soft</p>
</div>
<div>
<div class="image-demo filter-cold"></div>
<p class="text-center mt-2">Cold</p>
</div>
<div>
<div class="image-demo filter-warm"></div>
<p class="text-center mt-2">Warm</p>
</div><img src="photo.jpg" class="filter-vintage">
<img src="photo.jpg" class="filter-dramatic">
<img src="photo.jpg" class="filter-soft">
usage
Practical applications of CSS filters
<!-- Inactive/Disabled State -->
<img src="icon.svg" class="grayscale opacity-50">
<!-- Glassmorphism Card -->
<div class="card backdrop-blur-lg bg-white-t10">
<div class="card-body">Frosted Glass Effect</div>
</div>
<!-- Image Gallery with Hover Effect -->
<img src="photo.jpg" class="grayscale hover:grayscale-0">
<!-- Loading State -->
<div class="blur-sm animate-pulse">Loading...</div>
<!-- Dramatic Hero Image -->
<section class="hero filter-dramatic brightness-90">
<h1>Bold Statement</h1>
</section>
custom
Combine multiple filter functions for unique effects
/* Custom Filter Combination */
.my-custom-filter {
filter: brightness(1.1) contrast(1.2) saturate(1.3);
}
/* Dynamic Filter with CSS Variable */
.interactive-filter {
filter: blur(var(--blur-amount, 0px));
transition: filter 0.3s ease;
}
.interactive-filter:hover {
--blur-amount: 8px;
}
support
Browser Support
- filter - All modern browsers
- backdrop-filter - All modern browsers (requires
-webkit-prefix in some) - Fallback - Filters gracefully degrade if not supported
Performance Tips
- Use sparingly - Filters can be computationally expensive
- Avoid animations - Don't animate filter values excessively
- will-change - Add
will-change: filterfor frequently filtered elements - Test performance - Always test on lower-end devices
- backdrop-filter - Particularly expensive; use only when necessary