Tasty WebGPU signal-level analog video emulation. The video effects are a consequence of NTSC signal, not an effect drawn on the picture.
https://videoskillet.com/app/ — and https://videoskillet.com/ is the landing page it is reached from.
This is the thing to click. The map sits at the top of the sidebar, and nearly every control in the app is behind one of its boxes — click a stage and that stage's controls open underneath it.
Details in How it works, fault by fault in Features.
- True composite signal emulation in WebGPU compute shaders. This is the headline feature!
- Dirty video mix or genlocked (clean) video mixing of two sources
- Video feedback effects including hardware mixer, camera-pointed-at-tv style feedback
- Lots of 'faults' like loose cable, bad receiver, inverted polarity, bad ground
- Audio-reactive: feed it music and bass shakes vertical hold of the image. Music can come from the mic, a file you pick, the clip on screen, or straight off whatever this machine is playing — no loopback device to install
- All settings can be modulated (e.g. with LFO, random walk, sample and hold)
- MIDI controller support via WebMIDI — map different knobs to settings of interest
- Easy-to-use "randomize" buttons that morph between settings over multiple seconds
- Bleeds video into the audio channel, so you can hear that static-y hum
- Has the spirit of video toaster inside of it, being related to kitchen appliances https://en.wikipedia.org/wiki/Video_Toaster
- Mix your own videos or built-in random choice from archive/wiki, static, or NTSC color bars
- Render videos entirely via command line
- ...much more
- Pops controls into a second window for a second screen or projector
- Records the video live, or render it offline
- The whole board mirrors to the URL, so a link is a patch
and it works on mobile! tested on Google Pixel with Chrome
pnpm install
pnpm dev
Fun bonus: a server on your own machine adds a Video URL… source that works
with yt-dlp and lets you video mix with YouTube — or anything else yt-dlp can
fetch — on the fly. pnpm dev has it, and so does videoskillet serve from the
released binary, which needs no clone.
Short versions; the arguments behind them are in the full FAQ.
No plugin API speaks WebGPU — OFX and Adobe's SDK are CUDA, OpenCL and Metal — and the feedback loops make frame N a function of every frame before it, so scrubbing a timeline is wrong by construction. For this look on a clip in an edit, ntsc-rs shares the premise and already ships those plugins.
Open the strip tray along the bottom and press ⎙ render. It writes a constant-framerate H.264 MP4 that Resolve and Premiere conform straight off the header. ● records a live performance first, and ⎙ replays it into the render.
Running locally there is also pnpm render, which does it without a browser:
pnpm render in.mp4 out.mov --look='<paste a link off the app>'
The look comes off the address bar and the picture out of the file, and the output is ProRes 4444, which keeps the colour artifacts that a browser's 4:2:0 encode throws away. The clip's own sound goes in too, and that matters because bass drives vertical hold; the intercarrier buzz comes back out beside it.
Every demo link below renders as it stands: the board, the modulation, the source and the seed all come off the link, so a look that names its own source needs no input file at all. CLI has the options and three worked examples.
Most of it works now with no code: MIDI CC and clock over a virtual port, a patch's audio in by sharing the tab or app it is playing out of (a loopback device still works, and is the way in on browsers that cannot share audio), a Jitter render in as a webcam through Syphon, and the picture back out through an OBS browser source. OSC is the piece that is missing.
- Main docs website
- Getting started
- User guide
- Features
- Effects — every control, generated
- CLI — the offline renderer, which takes a link and a file and
writes ProRes 4444, and
videoskillet serve, which hosts the app on your own machine - Drive it by URL — the query string is a complete remote control, and every control's key lists what the rest of the docs leave out. Published at videoskillet.com/llms.txt for anything scripting the app.
- AI usage — building and driving it with agents
- MIDI
- Comparison with other tools
- FAQ — how it works, what runs it, installing it
Note: this project is extensively vibecoded. The initial signal-path design was one-shotted by Fable, which nailed the "signal level" idea behind the glitches.
I also had a hard time coming up with a name for this project. I hope you enjoy. This app is inspired by my old 2010s-era experiments alligator clipping analog video cables together and posting tumblr gifs.
-
Chaos black and white feedback https://videoskillet.com/app/?p=Nj.FJADAMACAuQDNVAImAIAUALIARaQAwoUAIABANQDApQBAHgARAniAQECCVQk5gMAqAEAqAYAgJ9JA8gB&mod=&srcb=tv+static
-
I can't believe it's not analog butter https://videoskillet.com/app/?p=3t.GKwxE4gDRYQDAMQfANADAqwiFZADALgDAJg1AAwAkAMAtAQAfAXQbwC0AiRACAQirGwroAE&mod=&srcb=none
-
Rainborb https://videoskillet.com/app/?p=zD.GNADE4QCRYQDAJgfANYEAvAlAOQBFNwBAdAFL0AIBCKcvgE&mod=&srcb=none
-
Ridiculous rainbow https://videoskillet.com/app/?p=T2.GKAEE4QCRYQDAMQfAJ8FAowfFYwDAfAMAWAA8AIARAZgJEAIBCKcvgErYA&mod=&srcb=none
-
Collecting dust https://videoskillet.com/app/?p=R2.cqQCAKAfAHoAOgAoAKggACwAYABEABAAmAEQ0AIAoAMw-AIArAICjBAEBEjgLgCoAQ&mod=&srcb=vhs+static
-
Fuzzy color bars feedback https://videoskillet.com/app/?p=1w.cqQCAKAfAHoAOgAoAKggACwAYABEABAAmAEQ0AIA1AIwsAEIBA&mod=&srcb=vhs+static
Send me more stuff you come up with


0 comments
log in to comment.