# Install globally
npm install -g shadertoy2webgl
# Or use npx (no installation needed)
npx shadertoy2webgl <shader-id> [<shader-id>...]
# Or install as a project dependency
npm install shadertoy2webglShadertoy uses Cloudflare protection. To fetch shaders, provide a curl command from your browser:
- Open shadertoy.com in your browser
- Open DevTools (
F12) → Network tab - Click any shader to load it
- Right-click the
shadertoyrequest → Copy → Copy as cURL - Save to
.shadertoy.curl:
# macOS
pbpaste > .shadertoy.curl
# Linux (X11)
xclip -selection clipboard -o > .shadertoy.curl
# Lookup order: $SHADERTOY_CURL → ./.shadertoy.curl → ~/.shadertoy.curlshadertoy2webgl <shader-id> [options]
st2webgl <shader-id> [options] # alias
# Options
--force Overwrite existing directory
--debug Show debug output
--help Show help
# Examples
shadertoy2webgl MdX3Rr
shadertoy2webgl MdX3Rr wdyczG DdcfzH
shadertoy2webgl --force --debug MdX3Rrimport { shadertoy2webgl } from 'shadertoy2webgl';
const { html, js } = await shadertoy2webgl('MdX3Rr');
// With options
await shadertoy2webgl('MdX3Rr', { force: true, debug: true });- Converts ShaderToy shaders to WebGL2
- Handles ShaderToy-specific uniforms (iResolution, iTime, iFrame, iMouse)
- Generates web-compatible HTML and JavaScript
- Zero dependencies
- Modern WebGL2 support
- ESM module support
- Works with Node.js >= 18
We provide two sample demos showcasing different shader effects:
![]() |
st2webgl wdyczGdemo/wdyczG/index.html shadertoy.com/view/wdyczG |
![]() |
st2webgl DdcfzHdemo/DdcfzH/index.html shadertoy.com/view/DdcfzH |
The tool generates files in a directory named after the shader ID:
index.html: A standalone HTML file with the shadershader.js: The WebGL2 shader codeshader.json: Shader metadata and code
If any directory already exists, the tool will refuse to overwrite it unless the --force flag is used:
# Overwrite existing directories
shadertoy2webgl --force <shader-id> [<shader-id>...]# Run tests
npm test
# Run tests with coverage (requires Node.js >= 20)
node --test --coverage test/The test suite verifies:
- Shader fetching and conversion
- File generation
- Error handling
- Output validation
- Uniform handling

