WebGPU effects · free · MIT

Give your site cinema-grade effects

More than 200 visual effects (living gradients, glass, metal, light, particles) that you drop into the page like a component.

Banner: Sites with Shaders, 200+ free WebGPU effects for your site
In short

Shaders is a free, open-source library (MIT license) with more than 200 visual effects for web pages. It is for people who build sites, landing pages and apps and want an animated background, a glow or a distortion without writing graphics-card code. Each effect is a component: you stack layers and the visitor's graphics card draws everything in real time, using WebGPU technology. To use it, just install the shaders package (React, Vue, Svelte, Solid or plain JavaScript) and open it in a browser with WebGPU.

Live demo

This is the library running right here

Three combinations made only with free components. If your browser has no WebGPU, you see the static background, which is exactly what your site should show in that case.

Loading…

The demo loads the official shaders@4.0.4 package from jsDelivr only when you reach this section and only if the browser has WebGPU (about 2.5 MB). Telemetry is turned off (disableTelemetry: true) and the animation pauses when it leaves the screen.

What it is

GPU effects you assemble as layers

It is an npm package (shaders, version 4.0.4 on Oct 18, 2026) maintained by Shader Effects Inc. This repository, inematds/shaders, is a mirror with this guide; the original project is shader-effects-inc/shaders.

Banner: components, visual editor, CLI, MCP for agents, your own shader, free vs Pro

🧩 200+ components

Gradients, noise, glass, metal, light, distortions, transitions, blurs and cursor effects. One <Shader> draws the canvas and each child is a layer.

🖌️ Visual editor

On shaders.com you build the effect on an infinite canvas, tweak every value and export ready-made code for your framework (free, with an account).

🤖 Built for agents

It comes with a skill for your coding agent, an MCP server and the llms.txt with all components and props. Claude Code understands the library on its own.

Free vs Pro

Free (MIT)Pro (paid, on shaders.com)
Engine, the 200+ components and the React, Vue, Svelte, Solid and JS versionsMore than 1,000 ready-made presets, in collections
Visual editor and code export (needs an account)55+ complete website sections
CLI, skill, MCP and preset searchHD video and image render without a watermark
Write your own effect with defineShaderFramer plugin, version history, Pro presets through the CLI/MCP
How it works

One canvas, several layers, the GPU blends them

Order matters: the first layer sits at the back and the last one on top. Effects that transform the image (blur, grain, vignette, waves) act on whatever came before them.

<Shader> creates the canvas→ Generator (e.g. MeshGradient)→ Effect (e.g. FilmGrain)→ Interaction (e.g. CursorRipples)→ GPU draws every frame
Prerequisites

What you need

No special graphics card: the one doing the drawing is the browser of whoever visits the site.

Node and npm

To install the package in a React, Vue, Svelte or Solid project.

# check
node -v && npm -v

Browser with WebGPU

Recent Chrome and Edge have WebGPU. In other browsers, support varies by version and system: always prepare a static background.

// in the browser console
!!navigator.gpu

shaders.com account (optional)

Only for the visual editor, the connected CLI and the MCP. The npm package works without an account.

# no account, just the package
npm install shaders
How to use · step by step

From zero to your first effect

Commands and examples taken from the project's README and official skill.

1

Install the package

One package works for all frameworks.

npm install shaders
2

Add your first effect (React)

The size comes from the CSS of <Shader>. The children are the layers. In Vue, Svelte and Solid it is the same, just change the import to shaders/vue, shaders/svelte or shaders/solid.

import { Shader, LinearGradient, CursorTrail } from 'shaders/react'

<Shader className="w-full h-64">
  <LinearGradient colorA="#0c0c10" colorB="#E2A23B" />
  <CursorTrail />
</Shader>
3

HTML page with no build (plain JavaScript)

For guides and single-file pages: import the official bundle from the CDN and pass the layers as a list. This is how the demo on this page works.

<canvas id="fx" style="width:100%;height:360px"></canvas>
<script type="module">
import { createShader } from 'https://cdn.jsdelivr.net/npm/shaders@4.0.4/dist/js/bundle.js'

await createShader(document.getElementById('fx'), {
  components: [
    { type: 'MeshGradient', props: { stops: [
      { color: '#0c0c10', position: 0 },
      { color: '#E2A23B', position: 0.7 },
      { color: '#f0c070', position: 1 },
    ] } },
    { type: 'FilmGrain' },
  ],
}, { disableTelemetry: true })
</script>
4

Prepare plan B (no WebGPU)

Give the container a CSS background that looks like the effect, and only load the library if the browser supports it. That way nobody sees an empty area.

.hero-fx { background: radial-gradient(circle at 20% 20%, #E2A23B88, transparent 60%), #0c0c10; }

if (navigator.gpu) {
  const { createShader } = await import('https://cdn.jsdelivr.net/npm/shaders@4.0.4/dist/js/bundle.js')
  // ...createShader(...) as in step 3
}
5

Turn off telemetry

By default, the library sends performance data to shaders.com/api/telemetry on about 5% of visits (it respects the browser's "Do Not Track"). To send nothing, use the option below.

// JavaScript
createShader(canvas, preset, { disableTelemetry: true })
// React / Vue / Svelte / Solid
<Shader disableTelemetry> ... </Shader>
6

Teach your coding agent

The official skill teaches Claude Code (or another agent) the components, the layer rule and the CLI. Searching presets by description is free and needs no login.

npx skills add shader-effects-inc/shaders   # installs the skill in the agent
npx shaders search "liquid chrome hero background" --json   # searches presets
npx shaders preview <name>   # opens the preset running on shaders.com
7

Connect to the visual editor (optional, with an account)

Links your project to a shaders.com account: what you design in the editor becomes a component file in your code and stays in sync.

npx shaders connect   # links the project to your account
npx shaders install   # picks the project's effects and writes the files
npx shaders update    # pulls in what you changed in the editor
npx shaders@latest install-mcp   # MCP for Claude Code, Cursor, Codex...
8

Create an effect of your own

A new component is an object with a name, props and what to draw at each pixel (in the WGSL language). Then you use it with <CustomShader>.

import { defineShader, wgsl, transformColor, transformPosition } from 'shaders/std'

export const Halo = defineShader({
  name: 'Halo',
  props: {
    color: { default: '#E2A23B', transform: transformColor },
    center: { default: { x: 0.5, y: 0.5 }, transform: transformPosition },
    radius: { default: 0.6 },
  },
  paint: wgsl`
    let d = length((uv - center) * vec2f(aspect, 1.0)) / radius;
    return vec4f(color.rgb, 1.0 - smoothstep(0.8, 1.0, d));
  `,
})
At INEMA

Where this fits in our projects

The library shines on website pages. For video and courses, go slowly.

✅ Good fit

  • Portal (Next.js / React): animated background on the hero and banners, straight with shaders/react.
  • Project guides: a subtle hero background through the CDN, keeping the page in a single file.
  • Sites with motion (site-movimento, filmarca, Motion Lab): glass, light and cursor effects.
  • Brand effect: your own amber glow with defineShader, reused everywhere.

⚠️ Test first

  • Video render (HyperFrames): the screenless browser that produces the MP4 may not have WebGPU, and GPU rendering on the server has already proven slower than measured.
  • Courses for beginners: a heavy effect gets in the way of reading and heats up a weak laptop. If you use one, only on the opening.
  • Phones: measure CPU/GPU and battery before putting it on a long page.
Cautions

Before you go live

Four points we checked in the code and in the project's documentation.

Support
Not every browser has WebGPUAlways leave a static background in place (step 4). Without it, the area stays empty.
Privacy
Telemetry is on by defaultAbout 5% of visits send performance data to shaders.com. Use disableTelemetry (step 5).
Weight
The full bundle is about 2.5 MBLoad it only when the section appears on screen, or use the npm package with your bundler, which takes only what you import.
Account
Editor, connected CLI and MCP talk to shaders.comThe package itself runs locally. The ready-made presets and the website sections belong to the Pro plan.