SVG wave generator

Choose how many layers, how tall and how bumpy the wave is, pick a color and press Randomize until you like the shape. Copy the SVG code or download it as a file.

SVG code

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1440 200" preserveAspectRatio="none"> <path fill="#3366cc" fill-opacity="0.31" d="M0,85.2 C30,85.9 120,93.5 180,89.3 C240,85.2 300,59.3 360,60.2 C420,61.1 480,96.4 540,94.6 C600,92.9 660,51.4 720,49.8 C780,48.2 840,87.5 900,85 C960,82.4 1020,38.6 1080,34.7 C1140,30.8 1200,54 1260,61.5 C1320,69 1410,76.6 1440,79.6 L1440,200 L0,200 Z"/> <path fill="#3366cc" fill-opacity="0.61" d="M0,102.5 C30,105.2 120,121.3 180,118.6 C240,115.8 300,87.7 360,86.2 C420,84.7 480,108.7 540,109.4 C600,110.2 660,93 720,90.7 C780,88.5 840,97.9 900,95.8 C960,93.7 1020,82.1 1080,78.2 C1140,74.2 1200,71 1260,72.3 C1320,73.6 1410,83.8 1440,86.1 L1440,200 L0,200 Z"/> <path fill="#3366cc" fill-opacity="0.9" d="M0,156.9 C30,155.8 120,146.1 180,150.1 C240,154 300,184.2 360,180.7 C420,177.2 480,128.3 540,129.2 C600,130.1 660,182.2 720,186.2 C780,190.2 840,157.8 900,153.2 C960,148.5 1020,156.8 1080,158.2 C1140,159.7 1200,160.3 1260,161.7 C1320,163.1 1410,165.8 1440,166.7 L1440,200 L0,200 Z"/> </svg>

Runs in your browser: nothing you enter is sent anywhere.

How to use it

  1. Set the number of layers. More layers give more depth; each one is fainter the farther back it is.
  2. Set the height of the SVG, then amplitude and frequency for how bumpy it is.
  3. Pick a color and the opacity of the front layer.
  4. Press Randomize until the shape suits you. Tick Flip to hang the waves from the top edge.
  5. Press Copy, or Download SVG to save wave.svg.

What the output means

The code is a single <svg> with a viewBox of 0 0 1440 by your height and one <path> per layer. Each path starts at the left edge, runs through its points with C curve commands, then goes down to the bottom corners and closes. The front layer uses the opacity you set; the layers behind it use a share of that value.

Example

The defaults are 3 layers, 200 px high, amplitude 40 percent, 4 bumps, blue #3366cc at 90 percent opacity.

Tips

  • Use the flipped version at the bottom of a hero section and the normal one at the top of the next, with matching colors.
  • Keep amplitude moderate on small heights, because the points are clamped to the SVG’s own height.
  • If you embed the SVG inline, set display: block on it to avoid a thin gap below.

Frequently asked questions

How are the waves drawn?

The tool places points at random heights across a 1440 unit wide canvas, then joins them with cubic Bézier curves so there are no corners. Each layer uses its own set of points and sits lower than the one behind it.

Will the same settings always give the same wave?

Yes. The shape comes from a seed number, and the same seed with the same settings always draws the same wave. Randomize picks a new seed with a cryptographically random number.

How do I use the SVG as a section divider?

Paste the code between two sections, or save the file and use it as an img or a CSS background. The viewBox is 1440 units wide and preserveAspectRatio is none, so the wave stretches to the width of its container.

What do frequency and amplitude change?

Frequency is the number of bumps across the width. Amplitude is how far each point may stray from its baseline, as a percentage of the height, so higher values give taller, steeper waves.

More in Color

All tools in this category: Color ·Updated November 3, 2026

Privacy choices

Google Analytics shows us which tools are used and whether they work. It may set cookies. Your choice is kept in this browser.