Browser-based video editing interface showing a multi-layer timeline, GPU-accelerated color scopes, and real-time compositing powered by WebGPU.
A video editor that runs entirely in the browser sounds like the kind of promise that ends with a spinning tab and a polite crash. MasterSelects doesn't crash. Roman Kuskowski built a GPU-first NLE on WebGPU that treats the CPU like a suggestion, not a requirement. Video textures come in as texture_external with no CPU roundtrip. A ping-pong compositor stacks unlimited layers through 37 blend modes and full 3D rotation, all inside a single 618-line WGSL shader. That's not a typo. One shader. If you've ever tried to wrangle even a handful of blend modes in a fragment shader without the code turning into a small novel, you'll appreciate the density here.
The feature list reads like someone methodically eliminating every reason you'd need a native app. 31 GPU effects. GPU-accelerated scopes (histogram, vectorscope, waveform). Optical flow scene detection. SAM2 segmentation running on-device via ONNX Runtime. Export captures frames as VideoFrame straight from the GPU canvas, no staging buffers, no readPixels. A 3-tier caching system (300 VRAM textures, per-video cache, 900-frame RAM preview) makes scrubbing feel like scrubbing should feel: instant. Nested compositions render to pooled textures in a single device.queue.submit(). The whole thing is roughly 2,400 lines of WGSL, around 100K of TypeScript, 1,679 tests, and 13 dependencies. Thirteen. Most projects have more dependencies in their linter config.
Go try it at masterselects.com and actually drag some footage in. The source is MIT licensed and on GitHub, so if you want to study how someone architects a real WebGPU application at scale, this is one of the best open codebases to learn from.
One note: the optional Native Helper companion opens localhost WebSocket and HTTP ports for features like yt-dlp downloads and AI tool bridging, so review the source for verification.
- Live Demo: https://www.masterselects.com
- Source Code: https://github.com/Sportinger/MasterSelects
- Author: Roman Kuskowski (Instagram)