
Arc Light
Backgrounds
An abstract animated background where luminous violet bands curl, stretch, and flow through deep indigo gradients, creating a continuous landscape of light and motion.
ASCII Band creates an evolving composition of glowing violet and lavender bands against a dark blue canvas. Broad curves sweep across the screen, forming soft loops and layered waves that continuously reshape into new patterns.
The animation combines bright, diffused edges with darker regions, giving the flowing bands a sense of depth. Smooth transitions between curved formations make the background feel organic, while its restrained colour palette maintains a cohesive visual identity.
Designed for creative studios, digital products, and experimental websites, ASCII Band introduces expressive movement without relying on conventional illustrations or photography. Its flowing composition works particularly well in fullscreen hero sections and minimal layouts.
import AsciiBand from '@/components/effects/ascii-band' const page = () => { return ( <div className="h-screen w-full"> <AsciiBand /> </div> )} export default pageConsider a digital design studio launching a portfolio website focused on experimental interfaces and creative technology. The homepage features a bold headline over a dark background, with ASCII Band continuously forming luminous curves behind the content.
The violet bands stretch into flowing loops and gradually dissolve into new formations, adding visual movement while preserving the overall composition. The contrast between bright highlights and dark negative space helps the foreground content remain prominent.
The result is a distinctive hero section that communicates creativity and movement without introducing additional visual elements that compete with the studio's message.
ASCII Band is less suitable for dense dashboards, administrative interfaces, and content-heavy pages where continuous background animation may compete with information. Its flowing highlights can reduce readability when text overlaps brighter regions.
Avoid combining it with several other prominent motion effects. The animation works best as a primary visual element, supported by clean typography and restrained interactive details.
Keep the flowing transitions lightweight and avoid unnecessary rendering updates. Smooth gradients, overlapping light bands, and continuous movement should remain responsive without placing excessive demands on the browser.
On mobile and lower-powered devices, simplify the animation where necessary and pause decorative updates when the background is offscreen. Provide a static alternative for reduced-motion preferences.
Maintain sufficient contrast between foreground text and the moving light bands. Keep headings, navigation, and interactive controls accessible independently of the background animation.
On mobile, adjust the composition to preserve the flowing shapes without overwhelming smaller screens. Respect prefers-reduced-motion by pausing the animation or displaying a static frame.
| Prop | Type | Default | Description |
|---|---|---|---|
backgroundColor | color | #000000 | Canvas colour behind the light. |
hue | number | 0 | Turns every colour around the colour wheel, in degrees. 0 is the reference violet. |
saturation | number | 1 | Colour strength. 0 is greyscale, 1 matches the reference. |
intensity | number | 1 | Overall brightness. 1 matches the reference. |
softness | number | 1 | How diffuse the light is. Above 1 spreads the band wider and softer. |
grain | number | 0.03 | Film grain strength. 0 turns it off. |
characters | string | =+xX80S#@ | Characters from darkest to brightest. The first is usually a space. |
cellSize | number | 16 | Width of one character cell, in px. |
glyphOpacity | number | 1 | Strength of the character layer. 0 hides it. |
gaps | number | 0.22 | Share of cells left empty, 0 to 1. |
flicker | number | 1.5 | How often each character re-rolls, per second. 0 freezes the grid. |
speed | number | 1 | How fast the band drifts. 0 holds it still. |
flow | number | 1 | How far the band sways and breathes while it drifts. |
interactive | boolean | true | Let the pointer stir the light like ink in water. |
smearStrength | number | 1 | How far a stroke drags the light. |
smearRadius | number | 0.1 | Width of the stroke, in canvas heights. |
ASCII Band is an animated React background where a band of violet light, pinched at the centre and flaring toward the edges, is drawn in flickering ASCII characters on a black canvas.
A WebGL2 shader lights the band, and the screen is divided into character cells that each pick a glyph by the brightness beneath them. The characters re-roll now and then so the grid shimmers, the band drifts and breathes over time, and the pointer smears the light like ink in water.
Yes. ASCII Band can be integrated into React and Next.js applications using the appropriate client-side animation setup.
No Three.js. ASCII Band is drawn with raw WebGL2 shaders on a single canvas and has no runtime dependencies beyond React. It does need WebGL2: where the browser can't provide it, nothing is drawn and only the background colour shows.
Yes. Colour is set with backgroundColor, hue, saturation, intensity and softness. The characters prop sets the glyphs, and cellSize, glyphOpacity, gaps and flicker shape the grid. Motion is set with speed and flow, and the pointer smear with interactive, smearStrength and smearRadius.
Yes. It pauses while offscreen or in a hidden tab, caps the canvas pixel ratio, and holds a single still frame when reduced motion is preferred. Raise cellSize on small screens if the characters look too dense.
Need a custom effect? Tell us what to create.