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

Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.

The GPUExternalTexture interface of the WebGPU API represents a wrapper object containing an HTMLVideoElement snapshot that can be used as a texture in GPU rendering operations.

A GPUExternalTexture object instance is created using GPUDevice.importExternalTexture().

Instance properties

label Experimental

A string providing a label that can be used to identify the object, for example in GPUError messages or console warnings.


In the WebGPU samples Video Uploading sample, a GPUExternalTexture object (created via a GPUDevice.importExternalTexture() call) is used as the value of a bind group entry resource, specified when creating a GPUBindGroup via a GPUDevice.createBindGroup() call:

const uniformBindGroup = device.createBindGroup({
  layout: pipeline.getBindGroupLayout(0),
  entries: [
      binding: 1,
      resource: sampler,
      binding: 2,
      resource: device.importExternalTexture({
        source: video,


# gpuexternaltexture

Browser compatibility

BCD tables only load in the browser

See also