coderef

WebGLBaseline · Widely available

The WebGLRenderingContext API is the "webgl" rendering context for the <canvas> element. It represents a space for drawing two- and three-dimensional graphics and animations.

Supported in all major browsers for at least 30 months — safe to use without fallbacks. Baseline since Jul 29, 2015. Widely available since Jan 29, 2018.

Browser support

DesktopChrome
1–8Not supported
9+Supportedsince Feb 3, 2011
Current: 155
Edge
12+Supportedsince Jul 29, 2015
Current: 154
Firefox
1–3.6Not supported
4+Supportedsince Mar 22, 2011
Current: 157
Safari
1–5Not supported
5.1+Supportedsince Jul 20, 2011
Current: 27
MobileChrome Android
18–18Not supported
25+Supportedsince Feb 27, 2013
Current: 155
Firefox Android
4+Supportedsince Mar 29, 2011
Current: 157
Safari iOS
1–7Not supported
8+Supportedsince Sep 17, 2014
Current: 27

How to use

This feature is Baseline widely available — use it freely, no fallback needed.

Example

Full syntax and examples are on MDN: webglcontextcreationerror event.

Feature detection

JS · check before using
if ("WebGLActiveInfo" in globalThis) {
  // WebGLActiveInfo is available
} else {
  // load a polyfill or use a fallback
}

Sub-features

Support for each part of the feature (179). The overall table above shows when the whole feature works.

Sub-featureChromeEdgeFirefoxSafariChrome AndroidFirefox AndroidSafari iOS
HTMLCanvasElement.getContext.webgl_context337924833248
HTMLCanvasElement.getContext.webgl_context.options_alpha_parameter33793010.1333010.3
HTMLCanvasElement.getContext.webgl_context.options_failIfMajorPerformanceCaveat_parameter33794110.1334110.3
HTMLCanvasElement.getContext.webgl_context.options_powerPreference_parameter✕✕✕10.1✕✕10.3
HTMLCanvasElement.webglcontextcreationerror_event912495.125498
HTMLCanvasElement.webglcontextlost_event91245.12548
HTMLCanvasElement.webglcontextrestored_event91245.12548
WebGLActiveInfo101245.12548
WebGLActiveInfo.name101245.12548
WebGLActiveInfo.size101245.12548
WebGLActiveInfo.type101245.12548
WebGLActiveInfo.worker_support✕✕105✕✕105✕
WebGLBuffer101245.12548
WebGLBuffer.worker_support✕✕105✕✕105✕
WebGLContextEvent912495.125498
WebGLContextEvent.WebGLContextEvent171249625498
WebGLContextEvent.statusMessage912495.125498
WebGLContextEvent.worker_support✕✕105✕✕105✕
WebGLFramebuffer101245.12548
WebGLFramebuffer.worker_support✕✕105✕✕105✕
Show 159 more
Sub-featureChromeEdgeFirefoxSafariChrome AndroidFirefox AndroidSafari iOS
WebGLObject126126✕✕126✕✕
WebGLProgram101245.12548
WebGLProgram.worker_support✕✕105✕✕105✕
WebGLRenderbuffer101245.12548
WebGLRenderbuffer.worker_support✕✕105✕✕105✕
WebGLRenderingContext91245.12548
WebGLRenderingContext.activeTexture91245.12548
WebGLRenderingContext.attachShader91245.12548
WebGLRenderingContext.bindAttribLocation91245.12548
WebGLRenderingContext.bindBuffer91245.12548
WebGLRenderingContext.bindFramebuffer91245.12548
WebGLRenderingContext.bindRenderbuffer91245.12548
WebGLRenderingContext.bindTexture91245.12548
WebGLRenderingContext.blendColor91245.12548
WebGLRenderingContext.blendEquation91245.12548
WebGLRenderingContext.blendEquationSeparate91245.12548
WebGLRenderingContext.blendFunc91245.12548
WebGLRenderingContext.blendFuncSeparate91245.12548
WebGLRenderingContext.bufferData91245.12548
WebGLRenderingContext.bufferSubData91245.12548
WebGLRenderingContext.canvas91245.12548
WebGLRenderingContext.checkFramebufferStatus91245.12548
WebGLRenderingContext.clear91245.12548
WebGLRenderingContext.clearColor91245.12548
WebGLRenderingContext.clearDepth91245.12548
WebGLRenderingContext.clearStencil91245.12548
WebGLRenderingContext.colorMask91245.12548
WebGLRenderingContext.compileShader91245.12548
WebGLRenderingContext.compressedTexImage2D91245.12548
WebGLRenderingContext.compressedTexSubImage2D91245.12548
WebGLRenderingContext.copyTexImage2D91245.12548
WebGLRenderingContext.copyTexSubImage2D91245.12548
WebGLRenderingContext.createBuffer91245.12548
WebGLRenderingContext.createFramebuffer91245.12548
WebGLRenderingContext.createProgram91245.12548
WebGLRenderingContext.createRenderbuffer91245.12548
WebGLRenderingContext.createShader91245.12548
WebGLRenderingContext.createTexture91245.12548
WebGLRenderingContext.cullFace91245.12548
WebGLRenderingContext.deleteBuffer91245.12548
WebGLRenderingContext.deleteFramebuffer91245.12548
WebGLRenderingContext.deleteProgram91245.12548
WebGLRenderingContext.deleteRenderbuffer91245.12548
WebGLRenderingContext.deleteShader91245.12548
WebGLRenderingContext.deleteTexture91245.12548
WebGLRenderingContext.depthFunc91245.12548
WebGLRenderingContext.depthMask91245.12548
WebGLRenderingContext.depthRange91245.12548
WebGLRenderingContext.detachShader91245.12548
WebGLRenderingContext.disable91245.12548
WebGLRenderingContext.disableVertexAttribArray91245.12548
WebGLRenderingContext.drawArrays91245.12548
WebGLRenderingContext.drawElements91245.12548
WebGLRenderingContext.drawingBufferFormat122122✕✕122✕✕
WebGLRenderingContext.drawingBufferHeight91245.12548
WebGLRenderingContext.drawingBufferStorage122122✕✕122✕✕
WebGLRenderingContext.drawingBufferWidth91245.12548
WebGLRenderingContext.enable91245.12548
WebGLRenderingContext.enableVertexAttribArray91245.12548
WebGLRenderingContext.finish91245.12548
WebGLRenderingContext.flush91245.12548
WebGLRenderingContext.framebufferRenderbuffer91245.12548
WebGLRenderingContext.framebufferTexture2D91245.12548
WebGLRenderingContext.frontFace91245.12548
WebGLRenderingContext.generateMipmap91245.12548
WebGLRenderingContext.getActiveAttrib91245.12548
WebGLRenderingContext.getActiveUniform91245.12548
WebGLRenderingContext.getAttachedShaders91245.12548
WebGLRenderingContext.getAttribLocation91245.12548
WebGLRenderingContext.getBufferParameter91245.12548
WebGLRenderingContext.getContextAttributes91245.12548
WebGLRenderingContext.getError91245.12548
WebGLRenderingContext.getExtension91245.12548
WebGLRenderingContext.getFramebufferAttachmentParameter91245.12548
WebGLRenderingContext.getParameter91245.12548
WebGLRenderingContext.getProgramInfoLog91245.12548
WebGLRenderingContext.getProgramParameter91245.12548
WebGLRenderingContext.getRenderbufferParameter91245.12548
WebGLRenderingContext.getShaderInfoLog91245.12548
WebGLRenderingContext.getShaderParameter91245.12548
WebGLRenderingContext.getShaderPrecisionFormat91245.12548
WebGLRenderingContext.getShaderSource91245.12548
WebGLRenderingContext.getSupportedExtensions91245.12548
WebGLRenderingContext.getTexParameter91245.12548
WebGLRenderingContext.getUniform91245.12548
WebGLRenderingContext.getUniformLocation91245.12548
WebGLRenderingContext.getVertexAttrib91245.12548
WebGLRenderingContext.getVertexAttribOffset91245.12548
WebGLRenderingContext.hint91245.12548
WebGLRenderingContext.isBuffer91245.12548
WebGLRenderingContext.isContextLost91245.12548
WebGLRenderingContext.isEnabled91245.12548
WebGLRenderingContext.isFramebuffer91245.12548
WebGLRenderingContext.isProgram91245.12548
WebGLRenderingContext.isRenderbuffer91245.12548
WebGLRenderingContext.isShader91245.12548
WebGLRenderingContext.isTexture91245.12548
WebGLRenderingContext.lineWidth91245.12548
WebGLRenderingContext.linkProgram91245.12548
WebGLRenderingContext.pixelStorei91245.12548
WebGLRenderingContext.polygonOffset91245.12548
WebGLRenderingContext.readPixels91245.12548
WebGLRenderingContext.renderbufferStorage91245.12548
WebGLRenderingContext.sampleCoverage91245.12548
WebGLRenderingContext.scissor91245.12548
WebGLRenderingContext.shaderSource91245.12548
WebGLRenderingContext.stencilFunc91245.12548
WebGLRenderingContext.stencilFuncSeparate91245.12548
WebGLRenderingContext.stencilMask91245.12548
WebGLRenderingContext.stencilMaskSeparate91245.12548
WebGLRenderingContext.stencilOp91245.12548
WebGLRenderingContext.stencilOpSeparate91245.12548
WebGLRenderingContext.texImage2D91245.125✕8
WebGLRenderingContext.texParameterf91245.12548
WebGLRenderingContext.texParameteri91245.12548
WebGLRenderingContext.texSubImage2D91245.125✕8
WebGLRenderingContext.uniform1f91245.12548
WebGLRenderingContext.uniform1fv91245.12548
WebGLRenderingContext.uniform1i91245.12548
WebGLRenderingContext.uniform1iv91245.12548
WebGLRenderingContext.uniform2f91245.12548
WebGLRenderingContext.uniform2fv91245.12548
WebGLRenderingContext.uniform2i91245.12548
WebGLRenderingContext.uniform2iv91245.12548
WebGLRenderingContext.uniform3f91245.12548
WebGLRenderingContext.uniform3fv91245.12548
WebGLRenderingContext.uniform3i91245.12548
WebGLRenderingContext.uniform3iv91245.12548
WebGLRenderingContext.uniform4f91245.12548
WebGLRenderingContext.uniform4fv91245.12548
WebGLRenderingContext.uniform4i91245.12548
WebGLRenderingContext.uniform4iv91245.12548
WebGLRenderingContext.uniformMatrix2fv91245.12548
WebGLRenderingContext.uniformMatrix3fv91245.12548
WebGLRenderingContext.uniformMatrix4fv91245.12548
WebGLRenderingContext.useProgram91245.12548
WebGLRenderingContext.validateProgram91245.12548
WebGLRenderingContext.vertexAttrib1f91245.12548
WebGLRenderingContext.vertexAttrib1fv91245.12548
WebGLRenderingContext.vertexAttrib2f91245.12548
WebGLRenderingContext.vertexAttrib2fv91245.12548
WebGLRenderingContext.vertexAttrib3f91245.12548
WebGLRenderingContext.vertexAttrib3fv91245.12548
WebGLRenderingContext.vertexAttrib4f91245.12548
WebGLRenderingContext.vertexAttrib4fv91245.12548
WebGLRenderingContext.vertexAttribPointer91245.12548
WebGLRenderingContext.viewport91245.12548
WebGLRenderingContext.worker_support✕✕105✕✕105✕
WebGLShader101245.12548
WebGLShader.worker_support✕✕105✕✕105✕
WebGLShaderPrecisionFormat91245.12548
WebGLShaderPrecisionFormat.precision91245.12548
WebGLShaderPrecisionFormat.rangeMax91245.12548
WebGLShaderPrecisionFormat.rangeMin91245.12548
WebGLShaderPrecisionFormat.worker_support✕✕105✕✕105✕
WebGLTexture101245.12548
WebGLTexture.worker_support✕✕105✕✕105✕
WebGLUniformLocation101245.12548
WebGLUniformLocation.worker_support✕✕105✕✕105✕