Nodes/GlitchNodes/VHSonAcid | GlitchNodes
ComfyUI Node

VHSonAcid | GlitchNodes

VHS tracking errors on a psychedelic bender

By pxl-pshr·Created 2 years ago·Updated 3 months ago· 73
VHSonAcid | GlitchNodes
  • images
  • image
seed0
slice_size20
offset_range50
color_shift0.5
glitch_probability0.3

VHSonAcid does exactly what the name promises: VHS-style horizontal slice displacement - the classic "tracking is off, whole bands of the picture are sliding sideways" artifact - with RGB channel separation cranked up like the tape is on acid. It's the node to reach for when you want a colorful glitch: the chromatic-aberration ghosting reads as "broken VCR at a rave" rather than grim file corruption.

The mechanism is simple and satisfying. It divides the image into horizontal slices of slice_size pixels, and each slice independently has a glitch_probability chance of being displaced horizontally by up to offset_range pixels. Then, on top of that, color_shift splits the RGB channels and rolls each one horizontally by a random amount - which produces that red/cyan edge ghosting where channels no longer align. Because every slice and shift is seeded, the same seed replays the exact same tears, which is huge when you find a displacement pattern you want to keep across a sequence.

The inputs that matter

  • slice_size (1–100, default 20) - height of each glitch band. Small slices = fine, busy tearing; large = thick chunky bands.
  • offset_range (1–200, default 50) - max horizontal displacement. 200 with a wide image is a lot; keep it modest unless you want full chaos.
  • glitch_probability (0–1, default 0.3) - chance each slice gets hit. This is the density knob: 0.1 is occasional tears, 0.8 is a fully shredded frame.
  • color_shift (0–1, default 0.5) - RGB channel separation strength. The "acid" in the name.
  • seed - required, and worth locking once you find a look.

Input is images (IMAGE), output is image (IMAGE) → PreviewImage/SaveImage. Batch support is built in, so this is a solid pick for frame sequences - each frame gets its own seeded tears.

Installing it

Part of the GlitchNodes pack:

cd ComfyUI/custom_nodes
git clone https://github.com/pxl-pshr/GlitchNodes
# restart ComfyUI

or ComfyUI Manager → Install Custom Nodes → search "GlitchNodes". Deps: numpy, torch, Pillow, opencv-python, scipy. No model downloads.

Gotchas

VHSonAcid is one of the more forgiving nodes in the pack, but there are two practical notes. First, offset_range and slice_size interact: big slices with big offsets look like the tape broke, while small slices with small offsets look like subtle tracking wobble - decide which you're after first. Second, high color_shift (0.8+) on a face turns it into a red/cyan hallucination, which is great for album art and terrible for legibility. If you want readable-with-texture, keep color_shift around 0.3–0.5. And the standing pack warning applies: "highly experimental and may break or even error."

CategoryGlitchNodes

Inputs (6)

NameTypeDefaultDescription
imagesIMAGE
seedINT00–18446744073709550000
slice_sizeINT201–100
offset_rangeINT501–200
color_shiftFLOAT0.50–1
glitch_probabilityFLOAT0.30–1

Outputs (1)

NameTypeDescription
imageIMAGE