Ferramentas Guias
Design Gratuito Sem cadastro

SVG Wave Generator

Create decorative SVG wave dividers for websites with live preview and one-click download.

Carregando ferramenta…

Sobre esta ferramenta

Generate smooth, sharp, jagged, layered, or double-wave SVG shapes for section dividers on websites. Fine-tune amplitude (wave height), frequency (number of crests), fill color, optional gradient, horizontal and vertical flipping, viewport height, and the number of overlapping layers (1–3). Choose from 10 built-in presets or tweak every parameter manually. The live preview updates in real time. Copy the raw SVG markup, grab the equivalent CSS background-image data-URI, or download the shape as a standalone .svg file ready to drop into any project.

Como usar

  1. 1 Select a wave style or click one of the 10 presets to start.
  2. 2 Adjust amplitude, frequency, and height sliders to shape the wave.
  3. 3 Pick a fill color and optionally enable a gradient with a second color.
  4. 4 Use the Flip buttons to orient the wave for top or bottom placement.
  5. 5 Add 1–3 layers with different opacities for a more organic look.
  6. 6 Click 'Copy SVG', 'Copy CSS', or 'Download SVG' to export your wave.

What an SVG wave is and why designers use it

A wave is that smooth, flowing curve you see separating two sections of a modern website — the colored bottom of a hero banner that dips and rises instead of cutting off in a hard straight line. Building one by hand means writing fiddly SVG path math, so most designers either copy a static asset or skip the effect. This generator produces the SVG for you: pick a style, drag a few sliders, and copy clean, ready-to-paste code. Because the output is SVG (vector), the wave stays razor-sharp at any width, scales to any screen, and weighs almost nothing compared to a PNG.

How the generator builds the curve

Every wave is drawn on a fixed 1440-pixel-wide canvas — a common full-bleed design width — and the SVG uses preserveAspectRatio="none" so it stretches edge to edge in any container. The shape itself is a filled path: it starts at the bottom-left corner, traces the wavy top edge across, then closes down the right side and along the bottom, producing a solid block with a decorative top. The five styles draw that top edge differently:

  • Smooth uses cubic Bézier curves that alternate crest and trough for a soft, classic wave.
  • Sharp uses straight line segments, creating angular peaks like a mountain silhouette.
  • Jagged generates an irregular, spiky edge from a deterministic sine-based pattern, so it looks random but renders the same every time.
  • Double packs two curves into each cycle for a busier, ribbon-like ripple.
  • Layered stacks multiple translucent waves to suggest depth.

The controls, explained

Four sliders shape the result. Amplitude (5–150px) is the height of the crests — how dramatic the wave is. Frequency (1–10) is how many full waves fit across the width; more waves means a tighter ripple. Height (40–300px) sets the overall vertical size of the SVG block. Layers (1–3) stacks additional offset copies at reduced opacity for a sense of depth. You can fill with a solid color or enable a left-to-right linear gradient between two colors. Finally, Flip Horizontal mirrors the pattern and Flip Vertical turns the wave upside down — essential when you want the curve at the top of a section rather than the bottom.

A worked example

Click the "Ocean" preset: it sets Smooth style, amplitude 50, frequency 4, height 120, and a sky-blue fill. The preview instantly shows four gentle crests. Now raise amplitude to 100 and the crests grow tall and bold; drop frequency to 2 and you get two wide, sweeping rolls instead of four tight ones. Turn on the gradient with a second teal color and the fill flows from blue to teal across the width. Hit Copy CSS and you receive something like background-image: url("data:image/svg+xml,..."); — the entire wave encoded inline as a data URI, no separate file to host. Or hit Copy SVG to drop the markup straight into your HTML, or Download SVG to save wave.svg.

Practical use cases

  • Section dividers. Place a wave between a hero and the next section so colors transition with a flowing edge instead of a flat line.
  • Hero and footer backgrounds. Use a flipped wave at the top of a footer to echo the header.
  • CSS backgrounds. The data-URI export drops a wave into any element's background-image with zero extra HTTP requests.
  • Email and slide decks. The downloadable SVG works as a lightweight decorative graphic anywhere SVG is supported.

Tips for clean results

  • Match the fill to your adjacent section. A wave reads as a divider only when its color equals the section it borders. Set the fill to the next section's background and the curve becomes the seam between them.
  • Use Flip Vertical for top dividers. The path is drawn anchored to the bottom; flip it vertically to hang the curve from the top of a block.
  • Keep frequency low for big banners. One or two wide waves look elegant across a full-width hero; high frequencies suit thin accent strips.
  • Prefer the CSS data-URI for backgrounds, the SVG element for inline content. The data URI keeps everything in one stylesheet rule; the raw SVG element is easier to animate or recolor later.

Common mistakes

  • Forgetting the SVG stretches. Because of preserveAspectRatio="none", a wave squeezed into a narrow container will look horizontally compressed. Let it span the full width it was designed for.
  • Over-layering. Three layers at low opacity can muddy the color. If depth looks murky, drop to one or two layers.
  • Mismatched gradient direction. The gradient runs left to right; if you want a vertical fade you'll need to edit the exported markup, since the generator produces a horizontal gradient by design.
  • Pasting SVG where only an image URL is allowed. Some platforms accept only an image file, not inline markup — in that case use Download SVG and upload the file instead of copying the code.

Perguntas frequentes

{# Alpine.js — self-hosted. (The previous jsdelivr CDN tag had a stale SRI integrity hash, so the browser refused to run it and window.Alpine was never defined — silently breaking every FAQ accordion and Alpine tool.) #}