Skip to content
Uxelith
Sign in
Prov1.1.0Backgrounds

Particle Logo

Tens of thousands of particles form your word or logo, scatter from the pointer and spring back; a press sends a shock wave through them. A WebGL particle simulation in your theme colours, with no libraries.

Installs with Uxelith ProHow
Licence
Pro
Packages
2
Updated
29 Oct 2026
Live

Installation

Usage

example.tsx
import { ParticleLogo } from "@/components/particle-logo"

export function Hero() {
  return (
    <ParticleLogo text="Acme" y={0.42} className="flex min-h-[32rem] flex-col items-center justify-end px-6 pb-12 text-center">
      <p className="text-muted-foreground">Hover to scatter, press to burst.</p>
    </ParticleLogo>
  )
}

Props

PropTypeDefaultDescription
textstring"Uxelith"The word the particles form, drawn in your page's font. It is also real text on the page, for screen readers and search engines.
srcstring—Your logo instead of the word: an SVG or PNG with a transparent background, same origin or served with CORS. text stays its name.
colorsstring[][] (theme: --primary, --chart-2, --chart-4)Two to five colours, swept across the word. Any CSS colour.
densitynumber1How many particles, from 0.5 to 1.5. 1 is about 65,000 on a desktop and 33,000 on a phone.
ynumber0.5Where the word sits, from 0 (top) to 1 (bottom).
scalenumber0.84How much of the width the word spans, from 0.3 to 0.95.
glowbooleantrueOn dark grounds, a soft halo around every particle. Light grounds never glow: the particles read as ink.
trailsbooleantrueFast particles leave short streaks of light.
autoplaybooleantrueWhen nobody is near, an unseen hand passes through every few seconds so the word breathes.
interactivebooleantrueThe pointer or a finger scatters the particles, and a press sends a shock wave. Presses on links and buttons stay theirs.
pausedbooleanfalseHolds every particle exactly where it is: pause when it looks right, then capture it. The pointer leaves them alone until they play again.
captureRefRef<ParticleLogoHandle>—Gets { capture(width, height) }, which draws the particles as it is right now again at that size, on your background colour, and resolves a PNG Blob: a 4K hero, a wallpaper, a social card. It works on a software renderer too, and rejects with a plain message when the device can't draw that size.
...propsHTMLAttributes<HTMLDivElement>—Any div attribute. Your className is merged last, so it wins; size the background with it.

Accessibility

  • The word is real text in the page (visually hidden), so screen readers and search engines read it; the canvas and the still image are decorative and hidden from assistive technology.
  • With prefers-reduced-motion it shows the formed word, still, and ignores the pointer.
  • It pauses off-screen and in hidden tabs, and frees its GPU memory when removed.
  • Without WebGL2, on a software renderer, or on a device that can't hold a smooth frame rate even with fewer particles, it shows the word as a still image in your theme colours.

Changelog

  1. v1.1.0Latest

    New: `paused` holds the motion still, and `captureRef` saves it as a PNG at any size.

More in Backgrounds

All 5 in Backgrounds
  • BackgroundsFree

    Fluid Ink

    Ink that flows like a real fluid behind your content: stir it with the pointer, press to burst colour, and watch it curl and fade. A WebGL fluid simulation in your theme colours, with no libraries.

  • BackgroundsPro

    Glass Lens

    A liquid glass orb follows the pointer and bends the page behind it: your headline magnifies through it, the rim splits light into colour, and pressing swells the glass. WebGL, in your theme, with no libraries.

  • BackgroundsPro

    Liquid Metal

    Molten metal flowing behind your content, lit like a photo studio: the pointer drags ripples and carries the highlight, and a press drops a ripple. A WebGL surface in chrome, gold or iridescent, with no libraries.