Video Checkerboard Transition
Checkerboard transitions that flip, slide, or wave each square — CSS grid at work
- video1
- video2
- video
The classic checkerboard wipe, but with personality. Instead of one flat grid sliding over, this node turns your frame into a grid of squares that each flip, scale, rotate, slide, or wave their way from video1 to video2. It's a showy transition, so use it when the cut is supposed to draw attention - an energetic sequence break, a montage beat. For everything else, the pack's plain crossfade exists.
How it works
This is a Chromium branch node: video1 and video2 frames go in as base64, the node builds an HTML page that lays the frames out on a CSS grid, and a headless Chromium (via Playwright) animates the squares through CSS transitions, screenshotting each frame back into an IMAGE tensor. The transition_style enum picks the per-square animation: flip_squares (the default, each tile flips over), scale_squares, rotate_squares, slide_squares, and wave_squares (staggered, wave-like motion). Because it's real CSS animation, the easing and stagger come free - no per-frame math in Python.
Inputs and outputs that matter
video1,video2- the two clips, sampled by progress.transition_style- the enum above. This is the first dial you turn.total_frames(4–300, default 24) andfps- transition length and output rate. 24 frames at 24fps is a one-second wipe.grid_size(4–20, default 8) - squares per side. 8 = 64 squares, 20 = 400, which gets slow. Start at 8.animation_duration(0.3–1.5) andstagger_delay(0–0.1) - how long each tile takes and how much delay between tiles. More stagger = more of a wave across the frame.use_gpu(default off) - toggles hardware acceleration in the browser vs. software rendering (Swiftshader). If you're on a weak/headless GPU, leaving it off is often more stable.background_color,width/height(up to 3840),quality(60–100).
Output is video - an IMAGE batch; feed it to VHS_VideoCombine or ImageBatch to export.
Installing it
Part of yichengup/ComfyUI-VideoTransition. ComfyUI Manager → "VideoTransition", or:
cd ComfyUI/custom_nodes
git clone https://github.com/yichengup/ComfyUI-VideoTransition
cd ComfyUI-VideoTransition
pip install -r requirements.txt
playwright install chromium
The playwright install chromium step is required for this node - it can't render without a browser binary.
Common issues
- Crash at runtime: browser missing - the chromium install is non-negotiable here. In China use
playwright install chromium --mirror=https://registry.npmmirror.com. - Sluggish with big grids - 400 animated CSS squares screenshot N times is heavy. Lower
grid_size,fps, orduration(the README's own advice). - Tiles glitch or flash black - check
background_colorand tryuse_gputoggled the other way; software rendering (Swiftshader) is the fallback path and is slower but more consistent across machines. - Looks like a plain grid, not a wipe - the tile animation only reads if
animation_durationis a reasonable fraction of the whole transition; very shorttotal_framesmakes the stagger vanish.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| video1 | IMAGE | — | |
| video2 | IMAGE | — | |
| transition_style | COMBO | 5 options: flip_squares, scale_squares, rotate_squares, slide_squares, wave_squares | |
| total_frames | INT | 244–300 | — |
| fps | INT | 2415–60 | — |
| grid_sizeopt | INT | 84–20 | — |
| animation_durationopt | FLOAT | 0.800.3–1.5 | — |
| stagger_delayopt | FLOAT | 0.020–0.1 | — |
| use_gpuopt | BOOLEAN | false | — |
| batch_sizeopt | INT | 51–20 | — |
| background_coloropt | STRING | #000000 | — |
| widthopt | INT | 640640–3840 | — |
| heightopt | INT | 640360–2160 | — |
| qualityopt | INT | 9060–100 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video | IMAGE | — |