SVG in CSS: Backgrounds, Masks, Clip Paths, and Filters
Beyond <img> tags — SVG unlocks powerful CSS capabilities including infinite-scale backgrounds, shape masks, and hardware-accelerated filters.
Drop your image here
Supports PNG, JPG, BMP, WEBP up to 5MB
SVG as CSS Background Image
Reference an SVG file just like any image: background-image: url('pattern.svg'). Or inline it as a data URI for zero HTTP requests:
- background-image: url('waves.svg'); background-size: cover;
- Data URI: background-image: url("data:image/svg+xml,%3Csvg...");
- SVGs scale perfectly for background-size: cover — no pixelation at any viewport
- Use SVG for geometric patterns, wave dividers, and hero backgrounds
SVG Clip Path in CSS
CSS clip-path accepts SVG <clipPath> references, letting you clip any HTML element to an arbitrary vector shape.
- Define: <clipPath id='myClip'><circle cx='50' cy='50' r='50'/></clipPath>
- Apply: clip-path: url(#myClip);
- Works on <img>, <div>, <video> — any HTML element
- Combine with transform and transition for animated clip effects
SVG Masks with mask-image
SVG masks create graduated transparency effects impossible with clip-path. The mask's luminance determines opacity — white areas show through, black areas hide.
- mask-image: url('feather-mask.svg');
- mask-size: 100% 100%;
- Use gradients in the SVG mask for smooth fade effects
- Supported in all modern browsers; prefix with -webkit-mask for Safari
SVG Filters via filter: url()
Reference SVG <filter> elements with CSS filter: url('#my-filter'). This unlocks effects not available in CSS alone: turbulence, displacement maps, color matrices, and morphology.
- filter: url('#gooey-effect') blur(0.5px);
- Combine SVG and CSS filters: filter: url('#svg-filter') brightness(1.1)
- Use for: gooey button effects, liquid animations, advanced color grading
- Performance tip: add will-change: filter to elements with complex SVG filters
Frequently Asked Questions
Can I use SVG gradients as CSS backgrounds?
SVG gradient syntax differs from CSS. The easiest approach is to create an SVG file containing your gradient and reference it as a background-image, or use a data URI.
Why does my SVG background look pixelated?
Ensure the SVG uses a viewBox rather than fixed pixel dimensions. A viewBox makes the SVG coordinate-system independent of display size, allowing perfect scaling.
Can I change SVG background colors with CSS variables?
Yes, but only for inline SVG. For external SVG files, embed CSS custom properties inside the SVG's own <style> tag, or use a filter to recolor.
What's the difference between clip-path and mask?
clip-path creates a hard edge — pixels are either visible or not. mask supports gradual transparency — the mask's luminance controls how visible each pixel is.
Are SVG filters supported in all browsers?
SVG filters via filter: url() are supported in Chrome, Firefox, Edge, and Safari. Internet Explorer has limited support. Always test cross-browser.
Related guides
Ready to Convert Your Image to SVG?
Free online converter — no sign-up, no watermarks, results in under 3 seconds.
Try It Free — Convert Image to SVG