We're live on Product Hunt today

Particle Image

Pro

Half a million GPU particles lift off a photo, drift on noise, and smear on hover.

webglparticlesimagegpgpunoisecursorfull bleed
Particle Image component preview

Props

PropTypeDefaultDescription
imageUrlstring-Image sampled for particle colour. Must be same-origin or CORS-enabled.
altstring-Accessible name. Omit for a purely decorative backdrop.
particleCountnumber500000Quantity of active particles. Clamped to 1,000,000.
particleSizenumber2Particle diameter in CSS pixels.
particleOpacitynumber0.85Peak particle alpha, reached mid-life.
speednumber1Flow field evolution rate. 0 freezes the field into fixed currents.
noiseScalenumber0.0005Flow field frequency. Lower values produce longer, smoother currents.
noiseStrengthnumber0.05Acceleration magnitude per frame, in pixels.
dampingnumber0.95Velocity preserved each frame.
lifespannumber200Frames a particle lives before respawning on a fresh pixel.
fit"cover" | "contain""cover"How the photo maps into the canvas. Contain fits the whole frame and never crops the subject.
showImagebooleantrueDraw the source image behind the particles.
imageOpacitynumber1Backdrop image alpha.
backgroundColorstring"transparent"Hex fill behind the image, or "transparent" to show the page through.
cursorInteractionbooleantrueEnable pointer-driven particle dragging.
cursorStrengthnumber0.1Share of pointer momentum transferred to particles.
cursorRadiusnumber100Pointer influence radius in CSS pixels.
widthstring | number"100%"Container width.
heightstring | number"100%"Container height.
dprnumber-Device pixel ratio cap. Capped at 2 when omitted.
pausedbooleanfalseFreeze the simulation on its current frame.
childrenReact.ReactNode-Content layered above the effect.