Fancy Border Radius Generator
Drag 8 handles to shape blobs with CSS border-radius, then export a morph @keyframes animation.
border-radius: 60% 40% 30% 70% / 60% 30% 70% 40%;
Shape
Drag the 8 handles on the outline, or use the arrow keys on a focused handle.
Radii
Horizontal radii run along the top and bottom edges, vertical radii along the sides. The two radii on one edge add up to 100% at most.
Size and unit
Percent radii scale with any box size.
Preview only, not in the code
Morph animation
Save two or more shapes to export a morph @keyframes animation.
Fancy Border Radius Generator FAQ
What do the 8 values in border-radius mean?
border-radius: a b c d / e f g h sets the horizontal radii of the top-left, top-right, bottom-right and bottom-left corners before the slash, and their vertical radii after it. Different horizontal and vertical radii make elliptical corners, which is how blob shapes are made.
How do I make a blob shape with CSS?
Give an element a background and an 8-value border-radius such as 60% 40% 30% 70% / 60% 30% 70% 40%. Drag the handles here until you like the shape, or click Random blob, then copy the line.
How do I animate a blob in CSS?
Animate border-radius between several shapes with @keyframes. Save two or more shapes here and the code includes a .blob rule, the keyframes and a reduced-motion rule; Play shows the morph first.
Should I use % or px for border-radius?
Percent radii scale with the element, so a 50% radius on a rectangle gives an ellipse. Pixel radii keep the same curve at any size, which is what pill buttons need: use half the height, such as 70px on a 140px tall button.
What happens if the radii add up to more than 100%?
The browser scales all radii down by the same factor until they fit, so the shape no longer matches the numbers. This tool stops the two handles on an edge from crossing, which keeps the sum at 100% or less.
Is my shape saved or uploaded?
Nothing is uploaded; everything runs in your browser. Saved shapes are kept only until you reload or leave the page, so copy the code before you go.