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.filter CSS-filter chain (GPU-accelerated).
  • Scanlines — repeating horizontal dark stripes drawn with multiply blend.
  • 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.