<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 500" width="800" height="500">
<defs>
<filter id="blur" x="-100%" y="-100%" width="300%" height="300%">
<feGaussianBlur stdDeviation="80"/>
</filter>
</defs>
<rect width="800" height="500" fill="#060d1f"/>
<circle cx="160" cy="100" r="200" fill="#4776e6" opacity="0.85" filter="url(#blur)"/>
<circle cx="640" cy="125" r="200" fill="#8e54e9" opacity="0.85" filter="url(#blur)"/>
<circle cx="400" cy="400" r="200" fill="#43e97b" opacity="0.85" filter="url(#blur)"/>
<circle cx="80" cy="375" r="200" fill="#38f9d7" opacity="0.85" filter="url(#blur)"/>
</svg>You Might Also Like
Mesh Gradient Generator — Free SVG & CSS Mesh Backgrounds
About this tool
Free Mesh Gradient Generator — SVG, PNG & CSS Export
Mesh Gradient Generator is a free browser-based tool for creating beautiful soft-blend mesh gradient backgrounds by dragging and positioning colored blobs on a canvas, then exporting the result as a scalable SVG file, a high-resolution PNG, or a pure CSS radial-gradient declaration — no design software, no account, and no server required. A mesh gradient is the modern evolution of the gradient background: instead of a single direction or center point, multiple large, heavily blurred color sources overlap and blend across the canvas to produce a richly layered, multi-directional color field that looks organic and dimensional. The technique is used by Stripe, Apple, Linear, Vercel, and dozens of other leading product companies as hero backgrounds, card surfaces, and decorative accents because the soft color blending creates visual depth and warmth without the harshness of solid colors or the predictability of simple gradients. This tool uses SVG feGaussianBlur to achieve the smoothest possible color blending — each blob is an SVG circle with a Gaussian blur filter applied, and the overlapping blurred edges of multiple circles create the characteristic mesh appearance. You can control up to eight individual blobs, each with its own color, and adjust global settings for blur intensity, blob spread, and opacity. Six curated presets — Aurora, Sunset, Ocean, Neon, Pastel, and Dusk — provide instant starting points covering both dark and light themes. A Randomize button shuffles all blob positions and colors for quick exploration of unexpected combinations. The SVG export is pixel-perfect at any size, the PNG export renders at 1600×1000px for retina-ready use, and the CSS export generates a pure background-image with stacked radial-gradient() calls that require no external file.
Features
- Drag-and-drop blob positioning — move each blob anywhere on the 800×500px canvas with live preview
- Individual color picker per blob — each of the up to 8 blobs has its own color swatch and browser color picker
- Up to 8 blobs with add/remove controls — start with 4 and layer up to 8 for complex multi-color meshes
- 6 curated presets: Aurora (dark blue/purple/teal), Sunset (orange/red), Ocean (blue/teal), Neon (vivid), Pastel (light), Dusk (purple/pink)
- Randomize button — shuffles all blob positions and colors instantly for quick inspiration
- Blur slider (10–150px) — controls SVG feGaussianBlur stdDeviation for edge softness
- Spread slider (20–90%) — controls each blob's radius relative to the canvas size
- Opacity slider (30–100%) — controls the translucency of all blobs for subtle or vivid effects
- SVG export — downloads a complete, embeddable SVG with feGaussianBlur filter (infinitely scalable)
- PNG download at 2× resolution (1600×1000px) — retina-ready raster for email, social, Figma
- Pure CSS export — stacked radial-gradient() background-image that requires no external SVG file
- 100% client-side — no images or data are sent to any server
How to Use
Choose a starting preset from the left panel — Aurora is the default dark-theme mesh and a good starting point for most projects. Click any other preset to instantly switch the color palette and background color. To reposition a blob, drag its handle (the colored dot with a white center) on the canvas preview. Drag it to any position and watch the mesh update in real time as the blurred blobs overlap in new configurations. To change a blob's color, click the color swatch in the blob list on the left panel — the browser color picker opens and the mesh updates live as you pick. To add more blobs for richer color mixing, click the "+ Add blob" button at the bottom of the blob list — a new blob appears at a random position in the center of the canvas, up to a maximum of eight blobs. To remove a blob, click the × button next to it in the list (minimum two blobs are required). Use the Settings section sliders to adjust the global effect: Blur controls feGaussianBlur intensity (default 80px — lower for more distinct blobs, higher for a softer, more unified wash); Spread controls how large each blob is relative to the canvas (default 50% — lower for focused spot-light blobs, higher for blobs that each cover most of the canvas); Opacity controls how transparent each blob is (default 85% — lower for subtler blending, 100% for maximum color saturation). For a light-theme mesh, apply the Pastel preset and adjust the background color to white or very light lavender. For a dark vivid mesh, try Neon or Dusk. Click Randomize in the header for an instant random color and position shuffle — click it multiple times until something interesting appears. In the right panel, switch between SVG and CSS tabs to see the generated code. Click Copy to copy the code, Download SVG for a vector file, or Download PNG for a 1600×1000px raster image.
Common Use Cases
Frequently Asked Questions
A mesh gradient is a type of background effect that blends multiple soft, overlapping color blobs to create a smooth, organic, multi-directional color transition — unlike a standard linear or radial gradient which has a fixed direction or a single center point. The effect produces a richly layered, almost three-dimensional color field that resembles the color mixing in watercolor painting or the soft blurring of bokeh lights. Mesh gradients became widely used in modern UI design after Apple popularized the style in macOS and iOS interfaces, and after Stripe adopted a highly sophisticated animated mesh gradient on their homepage. The technique is also called a "blob gradient," "soft gradient," or "fluid gradient" and is particularly popular as a hero background, card background, or decorative section backdrop in web design.
This tool creates mesh gradients using SVG technology. Each colored blob in your design is an SVG circle element with a Gaussian blur filter applied via the SVG feGaussianBlur primitive. When multiple large, heavily blurred circles overlap on a colored background, their colors blend smoothly at the edges to create the characteristic mesh gradient appearance. You drag the handles on the preview canvas to reposition each blob, pick individual colors with the color pickers, and adjust global settings like blur intensity (how soft/spread the edges are), spread (how large each blob is relative to the canvas), and opacity. The generated SVG file packages all these elements into a single portable vector file that renders at any size without loss of quality.
The SVG export produces a complete SVG file containing a background rectangle and multiple blurred circle elements — this is the highest-quality output, is infinitely scalable, and can be embedded directly in HTML with an <img> tag, used as a CSS background-image, or referenced in a <use> element. The SVG feGaussianBlur filter produces smooth, accurate color blending that closely matches the preview. The CSS export produces a pure CSS background using multiple radial-gradient() calls — one per blob — layered via background-image. This requires no SVG file and can be pasted directly into any stylesheet, making it ideal for dynamic theming and CSS-only projects. The CSS version is a good approximation but lacks the Gaussian blur smoothness of the SVG approach, so edges between blobs are sharper. For the best visual quality, use SVG; for pure CSS without external files, use the CSS export.
There are several ways to use the exported SVG. The simplest method is as a CSS background: background-image: url("mesh-gradient.svg"); background-size: cover;. You can also embed it inline in your HTML by pasting the SVG code directly inside a <div> — this avoids an extra HTTP request and allows CSS animation or JavaScript manipulation. In React or Next.js, import the SVG as a component or use it as a src attribute on an <img> tag. For Tailwind projects, add the SVG as a background utility: bg-[url("/images/mesh-gradient.svg")] bg-cover. The SVG is infinitely scalable so it looks sharp on any display density including Retina and 4K screens.
Use PNG when SVG is not supported or not practical. Email newsletters do not render SVG reliably across email clients, so PNG is the right choice for email backgrounds. Some older content management systems and social media platforms require raster images rather than SVG. PNG is also useful when you need to compose the gradient with other raster images in a photo editing tool like Photoshop or Figma. The tool exports PNG at 1600×1000px (2× the canvas size) for retina-ready quality — this resolution is large enough for full-bleed website backgrounds on most screens. For web use where scalability matters, SVG is always preferred over PNG.
Three to five blobs produces the best mesh gradient results for most use cases. With fewer than three blobs, the gradient can look too simple and directional — similar to a radial gradient rather than a true mesh. With four or five blobs spread around the canvas, the overlapping colors create complex, interesting blends from multiple directions. Adding more than five or six blobs typically produces diminishing returns — the colors start to mix too uniformly and the gradient loses its color distinction. The tool supports up to eight blobs for maximum flexibility. For a simple, elegant background, four blobs at the four quadrants of the canvas with a dark background is a reliable starting configuration.
Blur controls the SVG feGaussianBlur stdDeviation value — it determines how softly each blob's edges diffuse into the background and into neighboring blobs. Low blur values (10–30px) create visible, relatively hard-edged blobs; medium values (60–100px) produce the classic smooth mesh effect; high values (120–150px) create an ultra-soft, almost uniform color wash with barely visible blob boundaries. Spread controls the radius of each blob as a percentage of the canvas size. A spread of 50% means each blob's circle radius is 50% of the longest canvas dimension — at 800×500px that is 200px radius. Higher spread values cause blobs to cover more of the canvas and overlap more aggressively, producing richer color mixing. Lower spread with high blur creates airy, barely-there color clouds; high spread with medium blur creates the most dramatic mesh effect.
Yes — the exported SVG can be animated using CSS animations or SMIL SVG animation attributes. The simplest approach is to animate the cx and cy attributes of each circle element using SMIL <animate> tags inside the SVG, or to target the circles with CSS keyframe animations that translate the circle positions. For a JavaScript-powered animation like Stripe's, you can load the SVG inline and use JavaScript to smoothly update each circle's cx/cy values over time using requestAnimationFrame. Adding transition: cx 2s ease, cy 2s ease via CSS (cx and cy are animatable CSS properties in modern browsers) allows smooth blob movement when positions change. Start by exporting the SVG from this tool and then add animation on top of the generated markup.