Skip to content

Glitch Text

A title that glitches like a failing signal: red and cyan channels tear apart, slices jump sideways and a scan line sweeps. Loops perfectly.

Text layer, V4 Titles2DSeamless loop, verified92 lines of codev1.0.0

In Spooky & Halloween, Text & data

Next: ASCII PortraitSurprise me

Glitch Text preview
Starting live preview…
00:00:00:00 / 00:00:00:01

Live, running the real source.

Open in the title maker

Your current settings go with it. Combine several clips and hand them over together from your sequence.

Effect controls

Presets

1
60
5

The preview runs the same code your AI receives. These settings travel with the hand-off.

Info

What it is

A title that glitches like a failing signal. Most of the time it sits steady with a faint red-and-cyan fringe; in short bursts the colour channels tear apart, horizontal slices of the text jump sideways, a scan line sweeps down and the letters flicker. Bursts fall on fixed steps of the loop and every random choice is seeded, so the glitch is identical every time and the last frame is the first. Type the words, choose the colours (rgb, acid, amber or mono), how violent the bursts are, how many steps per loop, the seed and the backdrop colour.

Reuse it in your own idea

  • Gaming title: Red and cyan.
  • Hacker scene: Acid, violent.
  • Vintage broadcast: Amber, calm.

Which part is reusable

src/glitch-text.js is the ingredient your AI reuses. demo.js is only the example scene around it, and uses the demo harness only for the demo.

Good to know

  • System fonts differ between computers; pass fontFamily and load the font first for identical renders.
  • Rapid flicker can be uncomfortable for some viewers; lower the intensity for sensitive audiences.

Technical details

Technical details
Implementation
Canvas 2D — plain browser JavaScript, no libraries · ES module src/glitch-text.js
Exports
  • createGlitchText({ text?, theme?, intensity?, steps?, seed?, maxWidth?, fontFamily? }) => { draw(ctx, info, width, height) }
  • THEMES: { rgb, acid, amber, mono }
Dependencies (exact)
  • apw-runtime@1.0.0 (demo) — Demo harness. The reusable source has no dependencies.
How it fits a scene

Coordinates: Centred; the line is scaled to 80% of the width; offsets scale with the smaller side of the canvas.

Lighting: The channels are blended additively, so overlaps brighten like light.

Timing: Pure function of info.progress; every random value is a hash of the step number.

Output
1080×1080, 30 fps, 6 s · procedural (computed from the frame number) · seamless loop — Glitch steps are a whole number per loop and each step's burst, slices and flicker come from a seeded hash of the step, so the last frame meets the first.
Tested
Rendered 180 frames on 2026-10-08 in Chrome 154.0.8037.97 headless on Linux 7.0.0-38-generic (x64), Node 22.14.0 (Canvas 2D). Same frame twice from fresh pages: identical. Loop: Frame 0 vs end state (progress 1): mean |Δ| 0.0000, max |Δ| 0 of 255.
Performance
Up to nine text draws and a few hundred scan-line rectangles per frame; about 2 ms. One line only; best under about 16 characters.
Export a video yourself
Download the source, then in the folder: npm install npm run render -- glitch-text/1.0.0 --out my-video.mp4Needs Node 18+, ffmpeg and Chrome/Chromium. Add --params my-settings.json (from Copy settings) for your own settings.
Version
1.0.0 · sha256:e169ddbb5f5e660f…
Files
License
MIT. Copyright (c) 2026 AI Pixel Wizard. Released under the MIT License. See LICENSE in this folder. License details
Provenance
Original code written for AI Pixel Wizard in October 2026, to the catalog quality bar (docs/QUALITY.md).
BinMore like this

Wave Text

Text layer2DSeamless loop6 seconds