Wave Generator

What Is an SVG Wave Generator?

SVG wave generators create decorative curved dividers that separate content sections on a webpage. Instead of flat horizontal lines, waves add visual rhythm and a modern aesthetic to landing pages, SaaS sites, and portfolios. The output is a lightweight SVG that scales perfectly to any screen width.

Set the number of layers (1 to 5), the height (50 to 300 px), the complexity (how many curve points across the width) and a colour per layer, press Random for a new shape, and flip it for the top of a section. Copy SVG gives inline markup sized exactly like the preview; Copy CSS gives a .wave-divider class with the same SVG as a background image.

How to Use SVG Waves

Paste the SVG between two content sections. It already carries display:block, width:100% and a fixed height, so it stretches edge to edge without the small gap an inline SVG leaves under it. Match the bottom layer's colour to the background of the section it runs into. Flip rotates the wave 180 degrees for the top edge of a section (the shape is mirrored left to right as well).

Tips and Best Practices

See also: For pixel-art rendered as pure CSS box-shadows, the Image to CSS Art converts a small image into a copy-pasteable block.

Frequently Asked Questions

What is an SVG wave divider?
A decorative section separator: a filled, wavy SVG shape placed where two page sections meet instead of a straight edge. It is vector, so it stays sharp at any width, and the default 3-layer wave is about 2 KB of markup.
How do I add a wave to my website?
Copy SVG and paste it between two sections, or Copy CSS and give an empty div the class wave-divider. Both stretch to the full width at the height you chose. Set the bottom layer's colour to the background of the section the wave runs into.
Can I animate SVG waves?
Not from this tool's export, which is static. Two common approaches: move a wave that is twice as wide (two copies side by side) horizontally in a loop, or morph between two path shapes with SMIL or a JavaScript library. Morphing only works between paths with the same command structure, so generate both shapes at the same complexity.
Why does the wave stretch instead of scaling?+
The SVG uses preserveAspectRatio="none", so the curve stretches to fill the width at the fixed height you chose. The height stays the same on phones and wide screens; the trade-off is that waves look flatter on very wide screens and steeper on narrow ones.
What does the CSS output contain?+
A .wave-divider rule with your height and the same SVG URL-encoded as a background-image data URI, sized 100% 100%. It renders the same pixels as the SVG export, but its colours cannot be restyled with CSS afterwards, because a background image is not part of the page DOM.
How do the layers work?+
Each layer is a separate path with its own curve, drawn a little lower than the one before and at lower opacity (100%, 85%, 70% and so on), so the back layers show through. Colours are set per layer.
Will the same settings give the same wave again?+
Yes. Shapes come from a seeded pseudo-random function, so the same layers, height, complexity and seed always produce the same path. Random picks a new seed.
Should the wave sit inside or between sections?+
Either. Between sections is simplest. To overlap a hero image, put the wave inside the section with position:absolute; bottom:0; left:0; width:100%, and give the section position:relative.

📖 Learn More

Related Article How to Generate SVG Wave Backgrounds →

Built by Derek Giordano · Part of Ultimate Design Tools

Privacy Policy · Terms of Service