ASCII Ripple

A page of monospace text that behaves like a liquid surface: pointer drops and drags send simulated waves through the grid, bending the words and blooming into heavier glyphs

Customize

Text
Crest
Trough
Font Size
16px
Line Height
1.20
Text Opacity
0.15
Resolution
3
Speed
0.55
Damping
0.045
Viscosity
0.40
Drop Strength
1.2
Drop Radius
26px
Drag Strength
0.30
Drag Radius
16px
Rain
0.0/s
Rain Strength
0.6
Sensitivity
2.2
Slope Gain
1.0
Refraction
4.0
Scramble
1.00
Scramble Speed
90ms
Dither
0.50
Vignette
0.60

Props

31
textstring

Passage used to fill the grid. Words wrap row by row and repeat as needed.

Defaultbuilt-in passage
charsstring

Glyph palette from lightest to heaviest, picked by ripple intensity.

Default"·.,:;-~=+*%#@"
fontSizenumber

Font size in pixels.

Default16
lineHeightnumber

Line height as a multiplier of fontSize.

Default1.2
fontFamilystring

Monospace font stack.

Defaultui-monospace stack
fontWeightnumber | string

Font weight.

Default400
textColorstring

Colour of the resting text.

Default"#f5f5f4"
rippleColorstring

Colour glyphs tint toward on wave crests.

Default"#ffffff"
troughColorstring

Colour glyphs tint toward in wave troughs.

Default"#ad57ff"
backgroundColorstring

Canvas background. Transparent inherits the page.

Default"transparent"
textOpacitynumber

Opacity of the resting text, 0 to 1.

Default0.15
resolutionnumber

Simulation cells per text row, 1 to 4. Higher is smoother and costlier.

Default3
speednumber

Wave propagation speed, 0 to 1.

Default0.55
dampingnumber

Fraction of surface velocity lost per step, 0 to 0.5. Lower rings longer.

Default0.045
viscositynumber

Surface viscosity, 0 to 1. Smooths sharp wavelets into softer swells.

Default0.4
edges"reflect" | "absorb"

Whether waves bounce off the edges or fade out at them.

Default"absorb"
dropStrengthnumber

Impulse of a click or tap.

Default1.2
dropRadiusnumber

Radius of a click or tap in pixels.

Default26
dragStrengthnumber

Impulse deposited by a moving pointer. 0 disables the trail.

Default0.3
dragRadiusnumber

Radius of the pointer trail in pixels.

Default16
rainnumber

Random drops per second while the pointer is away.

Default0
rainStrengthnumber

Impulse of each rain drop.

Default0.6
sensitivitynumber

How strongly surface height maps to glyph intensity.

Default2.2
slopeGainnumber

How strongly surface slope adds to glyph intensity.

Default1
refractionnumber

How far the underlying text is displaced by the slope, in cells.

Default4
scramblenumber

How readily disturbed cells swap to palette glyphs, 0 to 1.

Default1
scrambleSpeednumber

Milliseconds between glyph reshuffles inside a ripple.

Default90
dithernumber

Edge texture of the disturbed region, 0 hard to 1 grainy.

Default0.5
vignettenumber

Width of the edge fade as a fraction of the shorter half-side, 0 to 1.

Default0.6
interactiveboolean

Whether the pointer disturbs the surface.

Defaulttrue
refAsciiRippleHandle

Imperative handle exposing drop(x, y, strength?, radius?) and calm().

Default—