The CSS blur filter applies a Gaussian blur to an element, softening its edges and creating depth of field and frosted glass effects that were previously only achievable with image editing software, JavaScript canvas manipulation, or pre rendered image assets.
Loading Filter Effects Builder…
Generate filter: blur() values with live preview
Preview backdrop-filter: blur() frosted glass panels
Supports blur on pseudo-elements for layered depth effects
Copy-ready CSS for any blur configuration
Drop the Filter Effects Builder into any page — blog post, product docs, intranet, school portal — with a single line of HTML. Your visitors get the full tool, processed entirely in their browser. No backend, no uploads, no signup.
Embed code
<iframe
src="https://www.fixtools.io/css-tool/filter-effects-builder?embed=1"
width="100%"
height="780"
frameborder="0"
style="border:0;border-radius:16px;max-width:900px;"
title="Filter Effects Builder by FixTools"
loading="lazy"
allow="clipboard-write"
></iframe>Attribution-friendly: a small "Powered by FixTools" link appears in the embed footer.
The filter: blur() function applies a Gaussian blur algorithm to the rendered pixels of an element and any descendants. The argument is a CSS length value in px, rem, em, or any other length unit: filter: blur(4px) applies a moderate soft blur while filter: blur(20px) produces heavy blurring where the original element shape is barely recognisable. The Gaussian algorithm samples pixels in a radius around each output pixel, weighted by a bell curve distribution, so edges fade smoothly rather than hard clipping. Zero is a valid value and produces no blur, which is useful as an explicit base state for transitions. Negative values are invalid and the entire filter declaration is ignored if a negative value appears. The computational cost scales quadratically with the radius: a 20px blur requires sampling roughly 25 times more pixels than a 4px blur for each output pixel, making large blur values on large elements one of the most GPU intensive filter operations available in CSS.
The backdrop-filter property uses the same blur() function syntax but targets the composited content behind the element rather than the element itself. For a frosted glass card, the element is given a semi transparent background such as rgba(255,255,255,0.4) along with backdrop-filter: blur(12px) in the same rule. The browser renders everything behind the card into an off screen buffer, applies the blur to that rendered output, then draws the semi transparent card over it. The result is the characteristic frosted glass effect where background content is visible but diffused into soft colour shapes. Safari requires the -webkit-backdrop-filter prefix for compatibility with versions before Safari 15.4, and Firefox required a flag in about:config before Firefox 103 shipped stable support in mid 2022. Both prefixed and unprefixed declarations should be included for production code.
Applying blur to a ::before pseudo element creates a depth of field effect where a background image is blurred independently of the foreground text content above it. The technique works by setting the parent to position: relative, then creating a ::before with position: absolute, top: 0, left: 0, width: 100%, height: 100%, z-index: -1, the background-image set on the pseudo element, and filter: blur(8px). The foreground content in the parent element remains sharp while only the background appears blurred. A small negative inset such as -10px on all sides prevents hard edges at the element boundary where the Gaussian blur tapers off, which would otherwise leave a visible unblurred sharp border line around the element where the blur has not had enough room to spread.
Performance characteristics for blur effects vary substantially with element size and the surrounding compositing context. A small blur applied to a small element such as an icon is essentially free. A 20px blur applied to a full viewport hero image during a continuous animation can drop frames even on modern desktop hardware, and on mid range mobile devices it can produce visibly choppy interactions. The recommended workflow is to test every blur effect under Chrome DevTools Performance recording with CPU throttling set to 4x or 6x, watching the timeline for paint and composite spikes that exceed the 16ms frame budget. Static blur applied at page load is much cheaper than animated blur because the result is computed once and cached, so prefer triggering blur through static class changes rather than continuous animation when possible.
Set the blur radius slider and watch the preview element soften in real time. Switch to backdrop-filter mode to preview a frosted glass panel over a coloured background. Copy the generated CSS when the blur intensity matches your design.
Step-by-step guide to css blur filter generator:
Select blur mode
Choose filter: blur() for blurring the element and its contents directly, or backdrop-filter: blur() to blur the content visible behind a semi transparent panel. The mode toggle in the generator switches the preview between an opaque blurred element and a glass panel over a coloured background so you can see the difference between the two approaches before committing.
Adjust the blur radius slider
Drag the radius slider until the softness matches your target effect at the size you plan to use the element. For subtle depth on icons and small panels, 2px to 4px is usually sufficient. For frosted glass navigation and modal overlays, 8px to 16px is typical. For dramatic background dimming, 20px and above creates strong diffusion that loses most original detail.
Set background opacity for backdrop-filter
If using backdrop-filter, adjust the panel background-color alpha value to control how much of the blurred background shows through the panel. Lower alpha values such as 0.2 to 0.4 reveal more backdrop, producing a transparent glass look. Higher alpha values from 0.6 to 0.85 hide more backdrop, keeping panel content highly readable against any background content beneath it.
Copy the generated CSS
Copy the filter or backdrop-filter declaration from the generator. Paste it into your stylesheet on the target selector and add the -webkit-backdrop-filter prefix line if Safari compatibility for versions older than 15.4 is required. Wrap the glass styles in @supports (backdrop-filter: blur(1px)) to declare an opaque fallback background for browsers that do not implement the property at all.
Common situations where this approach makes a real difference:
Frosted glass navigation header
A developer building a portfolio site wants a navigation bar that shows the page content scrolling behind it in a softly blurred state to provide visual continuity between sections. They apply backdrop-filter: blur(12px) with background: rgba(255,255,255,0.6) to the header element. The generator helps them find the right radius and opacity balance so the nav content remains readable while the background blur reads as a real glass panel. A -webkit-backdrop-filter line is added before the unprefixed declaration for older Safari versions, and an @supports fallback ensures the header stays usable on browsers without backdrop-filter implementation support.
Modal overlay background blur
A SaaS app developer wants the page content to blur when a modal dialog opens, signalling to users that the background is inactive while the modal is open. They apply filter: blur(6px) to the main content wrapper via a .modal-open class toggled by JavaScript when the modal opens and removed when it closes. The generator previews the effect at several radius values against representative dashboard content. The chosen 6px value is subtle enough not to feel harsh or disorientating while clearly communicating that the background is no longer interactive and the focus is on the modal contents.
Hero section with blurred background image
A marketing developer adds a large background photograph to a hero section but needs the headline text and call to action button to remain perfectly sharp and readable. They use the ::before pseudo element technique with filter: blur(10px) applied only to the pseudo element, keeping the foreground text crisp while the background photo becomes a soft colour wash. The generator outputs the full pseudo element CSS block including the position, z-index, and negative inset extension values needed to prevent visible unblurred edges at the section boundaries where the Gaussian blur would otherwise taper off.
Card hover depth effect
An e commerce developer wants product cards to blur slightly when a sibling card is hovered, simulating depth of field focus shifts found in physical photography. They apply filter: blur(0) to all cards in the resting state and filter: blur(2px) to cards that are not the currently hovered one using a parent hover selector combined with :not(:hover). The transition on filter creates a smooth shift between focused and unfocused states across the grid, drawing attention to the active card without any layout changes, scale transforms, or JavaScript event handlers required to coordinate the effect.
Get better results with these expert suggestions:
Use isolation: isolate to contain backdrop-filter stacking context issues
When backdrop-filter is applied inside a stacked layout, parent elements with transform, filter, or will-change can break the backdrop-filter by creating a new compositing context that the property cannot sample through. The backdrop then becomes the composited parent rather than the actual page background and the blur effect disappears. Adding isolation: isolate to the correct ancestor contains the stacking context and resolves the issue without altering the visual layout, though in complex hierarchies restructuring the DOM to remove the conflicting compositing properties is often more reliable than chasing isolation fixes.
Animate blur from 0 to target value for reveal effects
Transitioning filter: blur(0) to filter: blur(8px) over 0.3s ease creates a focus loss effect that works well for modal overlays, background dimming, or focus shifting interactions. The opposite direction, blurred to sharp, works as an entrance effect for content that loads after an initial blurred placeholder is shown. Always start from filter: blur(0) rather than filter: none, because some browsers do not interpolate cleanly from the none keyword to a filter function value and may snap rather than animate, producing a visible glitch at the start of the transition.
Combine backdrop-filter with a subtle border for glass definition
A frosted glass panel with no border can look undefined and lacking weight against certain backgrounds. Adding border: 1px solid rgba(255,255,255,0.3) to the panel gives it a highlight edge that reads as a physical glass surface, particularly on dark or gradient backgrounds where the contrast between panel and background is low. For dark glass panels on light backgrounds, swap to a slightly darker border colour to provide similar definition. The border combined with the blur and partial opacity completes the material illusion convincingly.
Profile blur performance before shipping animated blur
Animating blur is one of the more expensive filter animations to run continuously. Use the Chrome DevTools Performance panel with CPU throttling set to 4x or 6x to simulate a mid range mobile device while recording an interaction that triggers your blur animation. If the animation drops below 60fps in the recorded profile, reduce the blur radius, restrict the animation to a smaller element rather than a full page overlay, or shorten the animation duration so the expensive period passes faster. Persistent navigation blurs on scroll are particularly prone to this issue.
Extend ::before beyond parent bounds to hide blur edges
Gaussian blur produces a visible soft edge at the element boundary. Set the blurred ::before to extend 10px to 15px beyond the parent in all directions using negative inset values or a negative margin. Clip the overflow on the parent to hide the extension.
Add a fallback background for unsupported backdrop-filter
Browsers that do not support backdrop-filter will show the semi-transparent panel without the blur effect. Use a slightly more opaque fallback background colour such as rgba(255,255,255,0.85) to keep the panel readable if the blur does not apply.
Keep blur radius proportional to element size
A 4px blur on a 40px icon is dramatic. A 4px blur on a 600px hero image is imperceptible. Scale blur radius to the element dimensions. A blur of approximately 1 to 2 percent of the shorter element dimension tends to produce a visually balanced softness.
More use-case guides for the same tool:
Other tools you might find useful:
Open the full Filter Effects Builder — free, no account needed, works on any device.
Open Filter Effects Builder →Free · No account needed · Works on any device