Use Wave Generator

Enter your data below to use the Wave Generator

📌 Try these examples:
RESULT

Last updated

What Does the Wave Generator Create?

The Wave Generator creates SVG wave shapes for use as section dividers, background elements, and decorative components in web design. Waves are resolution-independent, scale to any screen size, and can be colored with CSS. The generator outputs ready-to-use SVG code with configurable amplitude, frequency, phase, and color.

Basic Wave SVG Output

<!-- Simple wave divider between two sections -->
<div style="background: #3b82f6; padding: 4rem 0;">
  <h1 style="color: white; text-align: center;">Hero Section</h1>
</div>

<!-- Wave divider (color matches section below) -->
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1440 120" 
     style="display:block; margin-top:-1px;">
  <path fill="#ffffff" fill-opacity="1" 
    d="M0,64L48,69.3C96,75,192,85,288,80C384,75,480,53,576,48C672,43,768,53,864,64C960,75,1056,85,1152,80C1248,75,1344,53,1392,42.7L1440,32L1440,120L1392,120C1344,120,1248,120,1152,120C1056,120,960,120,864,120C768,120,672,120,576,120C480,120,384,120,288,120C192,120,96,120,48,120L0,120Z">
  </path>
</svg>

  <p>Content section below the wave</p>
</div>

Wave Parameters

Amplitude (wave height):
  Low (20px):   ~~~~~~~~~~~~~~~~~~~~  gentle, subtle
  Medium (60px): ∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿  balanced
  High (120px): ⌣⌣⌣⌣⌣⌣⌣⌣⌣⌣⌣⌣⌣⌣⌣⌣  dramatic

Frequency (number of waves):
  1 wave:  one large sweeping curve across the full width
  2 waves: two medium curves
  3 waves: three smaller curves (most common)
  5 waves: many small ripples

Phase (horizontal offset):
  0°:   wave starts at center (flat)
  90°:  wave starts at peak
  180°: wave starts at trough
  270°: wave starts at valley

Multi-Layer Wave Effect

<!-- Three stacked waves for depth effect -->
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1440 200">
  <!-- Back layer (most transparent) -->
  <path fill="#3b82f6" fill-opacity="0.2"
    d="M0,96L60,112C120,128,240,160,360,160C480,160,600,128,720,112C840,96,960,96,1080,112C1200,128,1320,160,1380,176L1440,192L1440,200L0,200Z">
  </path>
  
  <!-- Middle layer -->
  <path fill="#3b82f6" fill-opacity="0.5"
    d="M0,128L60,117.3C120,107,240,85,360,90.7C480,96,600,128,720,133.3C840,139,960,117,1080,106.7C1200,96,1320,96,1380,96L1440,96L1440,200L0,200Z">
  </path>
  
  <!-- Front layer (most opaque) -->
  <path fill="#3b82f6" fill-opacity="1"
    d="M0,160L60,149.3C120,139,240,117,360,112C480,107,600,117,720,128C840,139,960,149,1080,144C1200,139,1320,117,1380,106.7L1440,96L1440,200L0,200Z">
  </path>
</svg>

Animated Wave

<!-- Animated flowing wave -->
<style>
  .wave-animation {
    animation: wave-move 8s linear infinite;
  }
  @keyframes wave-move {
    0%   { transform: translateX(0); }
    100% { transform: translateX(-50%); }
  }
</style>

<div style="overflow: hidden; height: 120px;">
  <svg class="wave-animation" 
       xmlns="http://www.w3.org/2000/svg" 
       viewBox="0 0 2880 120"
       style="width: 200%; height: 100%;">
    <!-- Doubled path for seamless loop -->
    <path fill="#3b82f6"
      d="M0,64L48,69.3C96,75,192,85,288,80C384,75,480,53,576,48C672,43,768,53,864,64C960,75,1056,85,1152,80C1248,75,1344,53,1392,42.7L1440,32
         L1440,64L1488,69.3C1536,75,1632,85,1728,80C1824,75,1920,53,2016,48C2112,43,2208,53,2304,64C2400,75,2496,85,2592,80C2688,75,2784,53,2832,42.7L2880,32
         L2880,120L0,120Z">
    </path>
  </svg>
</div>

Wave as CSS Background

/* Use SVG wave as CSS background-image */
.wave-section {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 120'%3E%3Cpath fill='%233b82f6' d='M0,64L48,69.3C96,75,192,85,288,80C384,75,480,53,576,48C672,43,768,53,864,64C960,75,1056,85,1152,80C1248,75,1344,53,1392,42.7L1440,32L1440,120L0,120Z'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: bottom;
  background-size: cover;
  padding-bottom: 120px;
}

Wave Orientations

Top wave (divides sections, wave at top):
  <svg style="transform: rotate(180deg)">...</svg>

Bottom wave (wave at bottom, most common):
  <svg>...</svg>

Left wave (vertical divider):
  <svg style="transform: rotate(90deg)">...</svg>

Inverted wave (concave instead of convex):
  <svg style="transform: scaleY(-1)">...</svg>

Gradient Wave

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1440 120">
  <defs>
    <linearGradient id="waveGradient" x1="0%" y1="0%" x2="100%" y2="0%">
      <stop offset="0%" style="stop-color:#3b82f6;stop-opacity:1" />
      <stop offset="100%" style="stop-color:#8b5cf6;stop-opacity:1" />
    </linearGradient>
  </defs>
  <path fill="url(#waveGradient)"
    d="M0,64L48,69.3C96,75,192,85,288,80C384,75,480,53,576,48C672,43,768,53,864,64C960,75,1056,85,1152,80C1248,75,1344,53,1392,42.7L1440,32L1440,120L0,120Z">
  </path>
</svg>

React Component

// WaveDivider.tsx
interface WaveDividerProps {
  color?: string;
  flip?: boolean;
}

export function WaveDivider({ color = '#3b82f6', flip = false }: WaveDividerProps) {
  return (
    <svg
      xmlns="http://www.w3.org/2000/svg"
      viewBox="0 0 1440 120"
      style={{ display: 'block', transform: flip ? 'scaleY(-1)' : 'none' }}
    >
      <path
        fill={color}
        d="M0,64L48,69.3C96,75,192,85,288,80C384,75,480,53,576,48C672,43,768,53,864,64C960,75,1056,85,1152,80C1248,75,1344,53,1392,42.7L1440,32L1440,120L0,120Z"
      />
    </svg>
  );
}

// Usage
<WaveDivider color="#1e40af" />
<WaveDivider color="#ffffff" flip />

Common Use Cases

Frequently Asked Questions

Simply enter your data, click the process button, and get instant results. All processing happens in your browser for maximum privacy and security.

Yes! Wave Generator is completely free to use with no registration required. All processing is done client-side in your browser.

Absolutely! All processing happens locally in your browser. Your data never leaves your device, ensuring complete privacy and security.