benday

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 markContour
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.