benday

A stippled figure standing on a field of dots, trailing the grid behind it

Agents need somewhere to say they are thinking. Shimmering text, dot matrices and orbs all fill that slot with something generic. benday fills it with your logo, baked into a field of dots that breathes, ripples, scatters and settles back into the mark.

Presets

21 ways to animate one mark
Size128px
Speed1.25×
Dot scale0.65
Dot shape
Colour

Contour

A wave follows the mark’s thickness from outline to core.

Shimmer

A lit band sweeps across the mark on the diagonal.

Ripple

Concentric rings pulse outward from the center.

Breathe

The whole mark swells and settles with a soft edge delay.

Scan

A narrow vertical beam traverses the silhouette.

Cascade

One signal follows the lattice in serpentine order.

Weave

Counter-moving diagonal bands cross through the mark.

Rain

Offset droplets descend each column with soft tails.

Swirl

The mark twists around its center, with outer dots lagging.

Orbit

A soft energy point circles the center of the mark.

Comet

A bright head and tapered tail chase around the mark.

Radar

A rotating search beam crosses the logo with a soft wake.

Pinwheel

Three curved blades rotate around a steady core.

Beacon

Emphasis hands off between the four cardinal directions.

Flicker

A stable random subset of dots blinks at any moment.

Wave

A soft traveling current bends the dot lattice.

Equalizer

Independent column levels rise and fall like a spectrum.

Resolve

Dots assemble in stable random order, then dissolve.

Scatter

Dots drift off the lattice, then reconverge into the mark.

Magnetic

The field pulls toward its center and releases.

Glitch

Brief horizontal faults disturb a few rows, then clear.

How it works

Three steps, run once.

The logo is rasterized once and its ink separated from its background, by alpha or by a luminance mask. A distance transform gives every pixel its depth inside the shape, and the result is sampled onto a grid: a few hundred dots carrying position, coverage, tone and depth.

That dot map is all the renderer animates. It resolves currentColor against the canvas, stops painting off-screen, and honours reduced motion. Bake at build time, pass dotMap instead of src, and the client skips the rest.