Blob Animation

Blob animation in CSS: a morphing gradient blob, soft glow, outline, or image mask.

blobcssmorphgradientshapeanimation
Blob Animation component preview

Overview

Blob Animation is a free React and Tailwind CSS morphing blob, a blob animation in pure CSS for hero sections, avatars and decoration, in Next.js or any React app. The shape is a box whose eight-value border radius moves between four keyframes, so the browser draws the organic outline with no SVG path morphing and no JavaScript per frame. Each seed gives its own shape, and wobble sets how far it strays from a circle. Pick a glossy gradient blob, a soft blurred glow, an outline, or a photo masked by the shape. Reduced motion holds the shape still.

Installation

Run the following command

~/your-project
pnpm dlx wensity@latest add blob-animation

Usage

Import BlobAnimation from @/components/wensity/blob-animation and render it anywhere in your React or Next.js app. The source lands in your own repo, so every prop, class and animation below is yours to edit.

app/example.tsx
import { BlobAnimation } from "@/components/wensity/blob-animation";
export default function Example() {
return (
<section className="flex items-center gap-12">
<BlobAnimation size={280} colors={["#d946ef", "#a855f7", "#ec4899"]} />
<BlobAnimation size={220} src="/portrait.webp" alt="Studio founder" seed={4} />
</section>
);
}

Props

PropTypeDefaultDescription
variant"solid" | "soft" | "outline" | "image""solid"Look of the blob. Defaults to image when src is set.
colorsstring[]["#ff1100", "#f97316", "#fbbf24"]Gradient colors, two or three CSS colors.
sizenumber | string320Width and height in pixels, or any CSS length.
durationnumber10Seconds for one full morph cycle.
wobblenumber0.6How far the outline strays from a circle, from 0 to 1.
rotatebooleantrueTurns the shape slowly while it morphs.
seednumber1Picks a different shape. The same seed always gives the same blob.
thicknessnumber2Ring thickness in pixels for the outline variant.
src / altstring-Image and alt text for the image variant.