VHS / Arcade Filter Studio
Drop a video. Slap a real-time VHS, arcade, or cyberpunk filter on it. Scanlines, grain, chromatic aberration, tracking noise — tune each one, record the filtered playback as a new WebM. No upload.
Drop a video
MP4 · WebM · MOV · M4V
How it works
An invisible <video> element plays the source. A requestAnimationFrame loop redraws each frame onto a canvas with effects layered on:
- Chromatic aberration — RGB channels drawn at slightly offset positions with
globalCompositeOperation='lighter'. - Hue / saturation / contrast / brightness — applied via the
canvas.filterCSS-filter chain (GPU-accelerated). - Scanlines — repeating horizontal dark stripes drawn with
multiplyblend. - Grain — a 256×256 pre-computed noise tile shifted each frame and drawn with
overlay. - Tracking noise — a vertically-sweeping distortion band that copies slices of the frame horizontally offset and brightened.
- Vignette — radial dark gradient on the corners.
Recording uses canvas.captureStream(30) piped into a MediaRecorder with the original video's audio track added so the output stays in sync. Output is WebM.