Mesh Gradient Generator
Mesh Gradient Generator — drag colour blobs, randomise, copy CSS, export PNG. The Stripe/Vercel/Apple look in seconds. Free, no signup, no watermark.
About Mesh Gradient Generator
The Mesh Gradient Generator turns the modern SaaS hero-section look into a few clicks. Pick a dark base, drop in two to six colour points, drag them around the preview, and copy the resulting CSS straight into your stylesheet. It’s the same multi-radial-gradient pattern you see on Stripe, Apple, Vercel, Linear, and Framer — distilled into a free tool that emits clean, copy-pastable code.
The rise of mesh gradients
Flat design hit its limits around the late 2010s — clean, but cold. Skeuomorphism wasn’t coming back. Designers needed something in between: visual warmth without the noise of textures or photo backgrounds. Mesh gradients filled that gap. Stripe’s marketing site is the prototype — soft pastel washes that feel hand-painted but actually run as plain CSS. Apple started using them across iOS and macOS marketing pages. Vercel, Linear, and Framer pushed them into the default modern aesthetic for developer-focused products. By 2024 they were everywhere; by 2026 they’re just the look of “premium” software.
How a mesh gradient is built
Behind the painterly surface, the mechanics are simple. You start with a solid background colour — usually dark, because vibrant blobs pop harder against a dark canvas. On top of that, you stack multiple radial-gradient declarations in CSS. Each one takes a position (at 20% 30%), a single colour, and a transparency stop (transparent 55%) so the blob fades cleanly into the base. With three or four blobs in different colours at different positions, you get the soft, multi-focal-point effect that reads as a “mesh” — even though it’s really just additive transparency over a flat colour. No GPU shaders, no SVG filters, no images. Just one CSS property doing all the work.
Best practices
Three rules keep mesh gradients from becoming visual noise.
Limit the blob count. Three to five colour points is the sweet spot. Two feels like a regular gradient; six and up starts to look muddy because the colours mix into beige in the middle. The default in this tool is four — that’s not an accident.
Keep colours harmonious. Random colours produce muddy results. Pick from a single colour family (analogous palette) or from two complementary hues, and the blobs will read as one composition instead of competing for attention. The Randomise button in this tool draws from a curated pool of modern, vibrant hues that play well together.
Don’t oversaturate. Full-saturation neon colours look like a Windows 95 screensaver. The trick is medium-saturation blobs at 50% to 80% lightness on a near-black background — that’s what gives the look its premium, designer-grade quality.
Implementation tips
Drop the generated CSS directly into the body, a hero section, or a card. Don’t apply it to a small element like a button — radial gradients scale with the container, so they look stretched and weird on anything smaller than a hero. For React, pass the background string as an inline style; for Tailwind, paste into a bg-[...] arbitrary value class or register the gradient in your config under theme.extend.backgroundImage for clean re-use. For animation, never animate the gradient stops themselves — animate transform on a wrapping element so the browser only has to repaint once per layout cycle.
When to skip them
Mesh gradients are decorative. They belong on marketing pages, login screens, app onboarding, splash screens, and anywhere you’d otherwise put a hero photograph. They do not belong in dense product UI — tables, dashboards, forms — where the soft colours fight with the data for visual attention. If your interface has a lot of text and numbers, use a flat background and put the gradient on the marketing site that brought users in. The trend is real, but it works because designers know when to apply it and when to step back. Free, no signup, runs entirely in your browser.
Frequently asked questions
A mesh gradient is a soft, multi-colour background made by overlaying several radial gradients on top of a base colour. Each gradient has a position, a colour, and a soft fade to transparent — together they blend into the smooth, blob-like backgrounds you see on Stripe, Apple's marketing pages, Vercel, Linear, and most modern SaaS hero sections. Unlike a regular two-stop gradient, mesh gradients can have three, four, or more colours flowing in unpredictable directions, which is what gives them their dreamy, organic feel.
They hit the sweet spot between flat design (which felt sterile) and skeuomorphism (which felt heavy). Stripe popularised the look around 2017 with their marketing site, Apple leaned into it for iOS and macOS marketing, and Vercel/Linear/Framer pushed it into the default modern SaaS aesthetic. They feel premium because they look hand-painted, but they're really just stacked radial gradients in CSS — cheap to render, easy to brand, and they soften an otherwise minimal layout without adding clutter.
A linear gradient blends two or more colours along a single straight line — top to bottom, left to right, or any angle. A mesh gradient is fundamentally different: it places coloured blobs at independent positions across a 2D space and softens them into a base colour. The result is non-linear, organic, and has multiple visual focal points. CSS doesn't have a real mesh-gradient property (yet), so we fake it by stacking radial-gradients with transparency on top of each other.
Click the Copy button to grab the full `background:` declaration. Paste it into any element — typically the body, a hero section, or a card — and you're done. Because it's a CSS background, it works everywhere: HTML, React inline styles, styled-components, Tailwind (via the `bg-[...]` arbitrary value syntax), and CSS-in-JS. No JavaScript runtime, no images, no extra HTTP request — just the gradient rendered by the browser at full resolution on any screen.