🔨 All in one Utilities

SVG Shape Generator

Great utilities that help you design, program and maintain your website

utilities for you to make a website
Home » Utilities » SVG Shape Generator

SVG Shape Generator

Same seed, same shape.

Note: A section divider must stretch horizontally without growing vertically. That is what preserveAspectRatio="none" plus a fixed CSS height does, and why a wave copied from elsewhere often turns into a giant diagonal on a wide monitor.

Organic shapes in SVG come from a small trick: take points spaced evenly around a circle, push each one in or out by a random amount, then join them with cubic curves whose control points follow the tangent of the circle at each vertex. Do it with three points and you get a rounded triangle; do it with twelve and a small randomness value and you get the soft blob that has appeared behind every SaaS hero section since about 2019. The randomness slider is the whole character control — under 10% it stays recognisably circular, past 40% it starts to self-intersect.

Waves are built differently, as a run of alternating curves along a baseline, and they exist for one specific job: the transition between two full-width sections of different colours. The important detail there is the viewBox and preserveAspectRatio. A divider must stretch horizontally without scaling vertically, or it becomes a huge diagonal on a wide monitor. The generated markup uses preserveAspectRatio="none" and a fixed height precisely so that does not happen.

Every shape is exported three ways. The inline SVG is what you want when the fill needs to respond to a CSS variable or a theme. The data URI is smaller to deploy for a static decoration and can go straight into a background-image. The bare path data is for when you already have an SVG and just need the d attribute.

One practical note on file size: a blob with 12 points is around 500 bytes of path data, and rounding coordinates to one decimal place — which this generator does — removes about a third of that with no visible difference.

Frequently Asked Questions

Why does my blob look spiky rather than smooth?

Either the randomness is set too high for the number of points, or the point count is low. Smoothness comes from the control points following the circle's tangent, and a large radius jump between two neighbouring points overwhelms that. Raise the point count or lower the randomness.

Should I use inline SVG or a background image?

Inline when the shape needs to change colour with your theme, respond to hover, or be animated, since CSS can reach into it. A data URI background when it is pure decoration — it keeps the DOM clean and the browser caches it as part of the stylesheet.

Why is my section divider distorted on wide screens?

Because the SVG is scaling proportionally. A divider needs preserveAspectRatio set to none and an explicit height in CSS, so it stretches horizontally while keeping the height you designed. The exported markup includes this already.

How do I make the same shape appear every time?

Set a seed. Without one, the random offsets are drawn fresh on each generation, so reloading a page that generates shapes at runtime would reshuffle them. With a seed, the sequence is reproducible, which matters if the shape is part of a design someone else has to rebuild.

Related Utilities