A fast 2D rendering library for the web that draws graphics, sprites and text with WebGL and WebGPU.
jberg/butterchurn
A WebGL reimplementation of the classic Milkdrop music visualizer that renders Milkdrop presets in the browser using the Web Audio API.
Open-source alternative to:Winamp
- Stars
- 1,972
- Forks
- 171
- Open issues
- 24
- Last commit
- 6 months ago
What is it?
Butterchurn is a JavaScript library that reimplements the Milkdrop music visualizer on WebGL, so Milkdrop-style visuals can run in any modern web browser. It takes audio from the Web Audio API and renders animated frames onto an HTML canvas.
Developers create a visualizer with a canvas and an audio context, connect an audio node from a source or microphone, and load a preset. Presets can be blended over a set number of seconds, and the renderer size can be changed at runtime. A companion package, butterchurn-presets, supplies a collection of ready-made presets.
Because it requires WebGL 2, the library includes a small helper for checking whether the current browser supports it. Several music players and apps have integrated it, including Webamp.
Key features
- 01Renders Milkdrop presets on WebGL in the browser.
- 02Takes audio input through the Web Audio API.
- 03Blends between presets over a configurable time.
- 04Resizes the renderer at runtime.
- 05Ships a separate package with a collection of presets.
- 06Includes a helper to detect WebGL 2 support.
Use cases
- Adding a music visualizer to a web music player.
- Visualizing audio from a web page or browser extension.
- Building a live music or karaoke display in the browser.
- Experimenting with Milkdrop presets in a web app.
Quick start
- 1
Install the packages with npm
npm install butterchurn butterchurn-presets - 2
Create a visualizer on a canvas connected to an audio context
- 3
Load a preset and render frames
Things to know
- Requires a browser with WebGL 2 support.
Topics
FAQ
- What is butterchurn?
- A WebGL reimplementation of the classic Milkdrop music visualizer that renders Milkdrop presets in the browser using the Web Audio API. Butterchurn is a JavaScript library that reimplements the Milkdrop music visualizer on WebGL, so Milkdrop-style visuals can run in any modern web browser. It takes audio from the Web Audio API and renders animated frames onto an HTML canvas.
- Is butterchurn free to use? What license does it have?
- butterchurn is open source under the MIT license. Check the license terms before using it in commercial products.
- Is butterchurn still maintained?
- No commits for 6+ months. The last commit to butterchurn was on Apr 20, 2026.
- What can I use butterchurn for?
- Adding a music visualizer to a web music player. Visualizing audio from a web page or browser extension. Building a live music or karaoke display in the browser. Experimenting with Milkdrop presets in a web app.
- How do I install butterchurn?
- Install the packages with npm: npm install butterchurn butterchurn-presets Create a visualizer on a canvas connected to an audio context Load a preset and render frames
- Where can I get butterchurn?
- The source code and installation instructions are on GitHub: https://github.com/jberg/butterchurn
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A Claude agent skill that builds interactive isometric SVG illustrations of real machines and systems to explain technical ideas.
GPU.js transpiles simple JavaScript functions into GPU shader code so they run on the GPU in browsers and Node.js, falling back to plain JavaScript.
A JavaScript library and CLI that converts JS source code into SVG flowcharts, with abstraction levels, code-block modifiers and themes.
A small, synchronous renderer that turns Mermaid diagram text into SVG with no runtime dependencies.
A front-end-only floor plan tool for arranging furniture, editing walls and measuring rooms in 2D, then viewing the layout in a Three.js 3D scene.