SVG background generator

Seeded waves, blobs and seamless patterns, optimised, with text contrast measured over them.

Press space for a new background · lock the colours, the shape or the mode to keep them

Ship the version people can read

Every pixel under this paragraph was measured, not guessed. Draw new shapes and watch the figure change.

Shape

In short

Press space for a new background: a new shape from a new seed, and a new palette whose text passes where it sits. Lock the colours, the shape or the mode to keep them; switch between waves, peaks, blobs and patterns under the artwork, and find presets, counts, sizes and colour codes in Settings. Every shape comes from a seed kept in the link, so the link redraws the exact file. The chips under the stage give the text at its least legible pixel, with the lightest scrim that would fix a failure, the bytes after SVGO, the seam check for a pattern and the crop on other screens. Copy the CSS from the bar, or export the SVG, the CSS for it, or a PNG or WebP at an exact size.

What SVG background generator is

A tool that draws decorative vector backgrounds — layered waves, mountain-like peaks, organic blobs or a repeating pattern tile — and hands you the SVG and the CSS that places it behind content. This one draws from a seed kept in the link, runs every file through SVGO, and measures the text you will set on the background at its least legible pixel.

What this tool does that others do not

  • The link redraws the exact file

    Every shape comes from the settings and a 32-bit seed, and both travel in the share link. Open the link anywhere and the same bytes come out; press Space for another shape, lock the colours, the shape or the mode to keep them, and Undo to go back. The biggest generators keep the shape only in the file you downloaded.

    Measured 8 October 2026: Haikei’s editor dropped every parameter from its address, and reloading fffuel’s llleaves at the same address drew a different file (16,399 bytes, then 17,580).

  • Optimised, with both sizes printed

    Each export is passed through SVGO with the settings that keep it working (viewBox kept, ids left alone), and the page prints the bytes before and after, gzipped too. Layers close along the frame with straight lines rather than curves.

    The default five-layer waves are 1,301 bytes as written and 976 after SVGO. A Haikei layered-waves file measured 2,660 bytes, and 1,383 after the same optimiser.

  • Text measured where it sits

    The preview puts a headline and a paragraph on the background, and each is measured against every pixel behind it, WCAG 2 ratio and APCA Lc. The worst pixel is named and can be marked; a failing line comes with the lightest scrim that fixes it, which goes into the exported CSS as a layer above the image.

    Slate #475569 text over grey #64748b dots on white averages 6.04:1, which looks like a pass, and is 1.59:1 over each dot.

  • Patterns that tile without a seam

    Tiles are whole pixels, and every mark that crosses an edge is copied to the opposite edge. The page then paints the pattern as an endless plane across four tiles and compares it with the tile repeated, pixel by pixel, and prints the largest difference.

    With the edge copies switched off, a 40px confetti tile differs from its endless pattern by 208 of 255 levels at the seam; with them, by at most 1.

How to use it

  1. Pick a kind, then press Space

    Choose Waves, Peaks, Blobs or Pattern under the artwork and press Space for a new shape and palette. A background Space makes passes its text at every pixel behind it, where the text sits on your screen; the eight presets in Settings pass on the desktop preview. On a phone the text covers more of the artwork, so read the figure again there.

  2. Lock what you like, and shape it

    Lock the colours to try shapes, or the shape to try colours. Settings holds the layers, swing and reach, the blob count and size, or the tile and mark size. Keep Reach low enough that the shapes stay below the headline, or choose Corners for blobs.

  3. Read the worst pixel

    The Text chip under the stage lists each text box with its worst ratio and where it is. Change the text colour, move the shapes, or set the scrim it suggests.

  4. Check the other screens, then export

    The Fit chip shows what Crop to cover cuts and what Stretch distorts on four screen shapes. Copy the CSS from the bar, or open Export for the SVG file, the CSS for it, or a PNG or WebP at the size set in Settings, each with its size in bytes.

Worked examples

Real input, real figures.

A wave hero that also has to work on a phone

You give it

A 16:9 artwork of layered waves, used with background-size: cover on a 390 × 844 screen.

You get

Cover keeps the curves true but shows only 26% of the artwork’s width, so the crests in the middle are what the phone sees. Stretch would show the whole width, with every curve squashed 3.85 times.

Inline the background, or ship a file

You give it

The default waves after SVGO: 976 bytes.

You get

As a percent-encoded data URI it is 1,039 bytes of CSS (503 gzipped); as base64, 1,330 (732 gzipped). Under about 4 KB, inlining saves a request; base64 never helps.

Against a typical SVG background generator

AspectdsynA typical SVG background generator
Reproducing a shapeSeed and settings in the link; same link, same bytesRandomise until you like it; the download is the only copy
File sizeSVGO on every export, bytes before and afterUnoptimised; 38–48% lost to SVGO on the two largest, measured
Text on the backgroundWorst-pixel WCAG 2 and APCA per text box, scrim to fixNot shown
PatternsGenerated, seam-checked, whole-pixel tilesA fixed library, often with attribution terms
Other screensCrop and distortion shown for four screen shapesOne canvas size

Guide

What it will not do

  • No blurred or grainy effects. SVG filters cost rendering time on every repaint, and engines blur differently, so the contrast figure could not be trusted; the gradient generator’s grain and mesh cover that look in CSS.
  • No animation. A moving background changes the contrast under the text every frame, which one figure cannot describe.
  • Contrast is measured over each text box rather than the letter shapes, so the figure is conservative: the worst pixel may sit between words.
  • The figure is for the preview at your screen’s width. On a phone the same text wraps onto more lines and covers more of the artwork: the default waves pass on the stage from 375 pixels wide up, and at 320 the body text reaches the first wave and needs a 10% scrim.
  • Shapes are generated, not drawn: there is no library of illustrated patterns here, by design, because every library checked restricts redistribution or asks for credit.

Measured against the generators people use

The two largest SVG background generators and the two best-known pattern libraries, checked on 8 October 2026. Sizes are each tool's own SVG, taken from its editor or its published source, before and after SVGO with the settings this page uses.

Tool (checked 8 Oct 2026)File size, before → after SVGOCan a link redraw it?Terms
Haikei, layered waves2,660 → 1,383 bytes (−48%)No: the address kept no parametersFree plan: medium-resolution PNG only
fffuel, llleaves16,399 → 10,111 bytes (−38%)No: a reload drew a different fileNo redistribution of the images
Hero Patterns5.6% across 87 patterns; Topography is 91,567 bytesFixed patternsCC BY 4.0: credit required
svgbackgrounds.comNot measured (the site refused the request)—Free plan: credit and 5 exports a day

What each preset weighs

Computed from the tool's engine when this page was built. A percent-encoded data URI escapes only the characters a URL cannot hold; base64 adds about a third and compresses worse.

PresetAs writtenAfter SVGOData URIBase64
Dusk waves1,3019761,0391,330
Lagoon856688745946
Paper ridge669585642806
Apricot1,1979921,0491,350
Pebbles1,7931,4691,5441,986
Dot grid325297354422
Blueprint249165198246
Confetti1,1178148891,114

Crop or stretch on other screens

The default 16:9 waves on four screen shapes. Crop to cover keeps every curve true and shows the share of the artwork in the second column; Stretch keeps every edge and squashes the curves by the factor in the third. For a phone-first page, a 9:16 artwork avoids both.

ScreenCover shows (width × height)Stretch squashes curves
Desktop 16:9100% × 100%1×
Laptop 16:1090% × 100%1.11×
Tablet 3:442% × 100%2.37×
Phone 390 × 84426% × 100%3.85×

The guide, make an SVG wave or pattern background that stays readable and small, walks through the seed, the scrim and the seam check. For a smooth background instead of shapes, the gradient generator measures text the same way.