Worklet

This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

The Worklet interface is a lightweight version of Web Workers and gives developers access to low-level parts of the rendering pipeline. With Worklets, you can run JavaScript and WebAssembly code to do graphics rendering or audio processing where high performance is required.

Worklet types

Worklets are restricted to specific use cases; they cannot be used for arbitrary computations like Web Workers. The Worklet interface abstracts properties and methods common to all kind of worklets, and cannot be created directly. Instead, you can use one of the following classes:

Name Description Location Specification
PaintWorklet

For programmatically generating an image where a CSS property expects a file. Access this interface through CSS.paintWorklet.

Chrome: Main thread
Gecko: Paint thread
CSS Painting API
AudioWorklet For audio processing with custom AudioNodes. Web Audio render thread Web Audio API
AnimationWorklet For creating scroll-linked and other high performance procedural animations. Compositor thread CSS Animation Worklet API
LayoutWorklet For defining the positioning and dimensions of custom elements. CSS Layout API

For 3D rendering with WebGL, you don't use Worklets. Instead, you write Vertex Shaders and Fragment Shaders using GLSL code, and those shaders will then run on the graphics card.

Properties

The Worklet interface does not define any properties.

Methods

Worklet.addModule()
Adds the script module at the given URL to the current worklet.

Specifications

Specification Status Comment
Worklets Level 1
The definition of 'Worklet' in that specification.
Working Draft

Browser compatibility

DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung Internet
Worklet
Experimental
Chrome Full support 65Edge Full support 79Firefox No support No
Notes Disabled
No support No
Notes Disabled
Notes Available only in Firefox Nightly.
Disabled This feature is behind the dom.worklet.enabled preference (needs to be set to true). To change preferences in Firefox, visit about:config.
IE No support NoOpera Full support 52Safari No support NoWebView Android Full support 65Chrome Android Full support 65Firefox Android No support No
Notes Disabled
No support No
Notes Disabled
Notes Available only in Firefox Nightly.
Disabled This feature is behind the dom.worklet.enabled preference (needs to be set to true). To change preferences in Firefox, visit about:config.
Opera Android Full support 47Safari iOS No support NoSamsung Internet Android Full support 9.0
addModule
Experimental
Chrome Full support 65Edge Full support 79Firefox No support No
Notes Disabled
No support No
Notes Disabled
Notes Available only in Firefox Nightly.
Disabled This feature is behind the dom.worklet.enabled preference (needs to be set to true). To change preferences in Firefox, visit about:config.
IE No support NoOpera Full support 52Safari No support NoWebView Android Full support 65Chrome Android Full support 65Firefox Android No support No
Notes Disabled
No support No
Notes Disabled
Notes Available only in Firefox Nightly.
Disabled This feature is behind the dom.worklet.enabled preference (needs to be set to true). To change preferences in Firefox, visit about:config.
Opera Android Full support 47Safari iOS No support NoSamsung Internet Android Full support 9.0

Legend

Full support
Full support
No support
No support
Experimental. Expect behavior to change in the future.
Experimental. Expect behavior to change in the future.
See implementation notes.
See implementation notes.
User must explicitly enable this feature.
User must explicitly enable this feature.

See also