coderef

2D canvasBaseline · Widely available

The CanvasRenderingContext2D API is the "2d" rendering context for the <canvas> element. It represents a flat, two-dimensional space for drawing 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+Supportedsince Dec 11, 2008
Current: 155
Edge
12+Supportedsince Jul 29, 2015
Current: 154
Firefox
1–1Not supported
1.5+Supportedsince Nov 29, 2005
Current: 157
Safari
1–1.3Not supported
2+Supportedsince Apr 29, 2005
Current: 27
MobileChrome Android
18+Supportedsince Jun 27, 2012
Current: 155
Firefox Android
4+Supportedsince Mar 29, 2011
Current: 157
Safari iOS
1+Supportedsince Jun 29, 2007
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: CanvasGradient.

Feature detection

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

Sub-features

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

Sub-featureChromeEdgeFirefoxSafariChrome AndroidFirefox AndroidSafari iOS
CanvasGradient1121.521841
CanvasGradient.addColorStop1121.521841
CanvasPattern1121.521841
CanvasPattern.setTransform68793311.1683311.3
CanvasPattern.setTransform.dommatrix68797911.1687911.3
CanvasRenderingContext2D1121.521841
CanvasRenderingContext2D.arc1121.531841
CanvasRenderingContext2D.arcTo1121.521841
CanvasRenderingContext2D.beginPath1121.521841
CanvasRenderingContext2D.bezierCurveTo1121.521841
CanvasRenderingContext2D.canvas1121.531841
CanvasRenderingContext2D.clearRect1121.521841
CanvasRenderingContext2D.clip1121.521841
CanvasRenderingContext2D.clip.path_parameter361431736317
CanvasRenderingContext2D.closePath1121.521841
CanvasRenderingContext2D.createImageData2123.541843.2
CanvasRenderingContext2D.createLinearGradient1121.521841
CanvasRenderingContext2D.createPattern1121.521841
CanvasRenderingContext2D.createRadialGradient1121.521841
CanvasRenderingContext2D.direction77791019771019
Show 97 more
Sub-featureChromeEdgeFirefoxSafariChrome AndroidFirefox AndroidSafari iOS
CanvasRenderingContext2D.drawFocusIfNeeded371432837328
CanvasRenderingContext2D.drawFocusIfNeeded.path_parameter3714✕837✕8
CanvasRenderingContext2D.drawImage1121.521841
CanvasRenderingContext2D.drawImage.ImageBitmap_source_image50794215504215
CanvasRenderingContext2D.ellipse311348931489
CanvasRenderingContext2D.fill1121.521841
CanvasRenderingContext2D.fill.path_parameter361431736317
CanvasRenderingContext2D.fillRect1121.521841
CanvasRenderingContext2D.fillStyle1121.521841
CanvasRenderingContext2D.fillText2123.541843.2
CanvasRenderingContext2D.filter527949✕5249✕
CanvasRenderingContext2D.font2123.518.418418.4
CanvasRenderingContext2D.fontKerning9999104✕99104✕
CanvasRenderingContext2D.fontStretch9999117✕99117✕
CanvasRenderingContext2D.fontVariantCaps9999117✕99117✕
CanvasRenderingContext2D.getContextAttributes7379117157311715
CanvasRenderingContext2D.getImageData212241843.2
CanvasRenderingContext2D.getLineDash231227725277
CanvasRenderingContext2D.getTransform68797011.1687911.3
CanvasRenderingContext2D.globalAlpha1121.521841
CanvasRenderingContext2D.globalCompositeOperation1121.521841
CanvasRenderingContext2D.imageSmoothingEnabled3015519.130519.3
CanvasRenderingContext2D.imageSmoothingQuality5479✕9.154✕9.3
CanvasRenderingContext2D.isPointInPath11223.11842
CanvasRenderingContext2D.isPointInPath.path_parameter361431736317
CanvasRenderingContext2D.isPointInStroke267919726197
CanvasRenderingContext2D.isPointInStroke.path_parameter367931736317
CanvasRenderingContext2D.lang136136151✕136151✕
CanvasRenderingContext2D.letterSpacing999911518.49911518.4
CanvasRenderingContext2D.lineCap1121.521841
CanvasRenderingContext2D.lineDashOffset231227725277
CanvasRenderingContext2D.lineJoin1121.521841
CanvasRenderingContext2D.lineTo1121.521841
CanvasRenderingContext2D.lineWidth1121.521841
CanvasRenderingContext2D.measureText2123.541843.2
CanvasRenderingContext2D.miterLimit1121.521841
CanvasRenderingContext2D.moveTo1121.521841
CanvasRenderingContext2D.putImageData212241843.2
CanvasRenderingContext2D.quadraticCurveTo1121.531841
CanvasRenderingContext2D.rect1121.521841
CanvasRenderingContext2D.resetTransform31793610.1313610.3
CanvasRenderingContext2D.restore1121.521841
CanvasRenderingContext2D.rotate1121.521841
CanvasRenderingContext2D.save1121.521841
CanvasRenderingContext2D.scale1121.521841
CanvasRenderingContext2D.setLineDash231227725277
CanvasRenderingContext2D.setTransform212341843.2
CanvasRenderingContext2D.setTransform.matrix_parameter68797011.1687911.3
CanvasRenderingContext2D.shadowBlur1121.521841
CanvasRenderingContext2D.shadowColor1121.521841
CanvasRenderingContext2D.shadowOffsetX1121.521841
CanvasRenderingContext2D.shadowOffsetY1121.521841
CanvasRenderingContext2D.stroke1121.521841
CanvasRenderingContext2D.stroke.path_parameter361431736317
CanvasRenderingContext2D.strokeRect1121.521841
CanvasRenderingContext2D.strokeStyle1121.521841
CanvasRenderingContext2D.strokeText2123.541843.2
CanvasRenderingContext2D.textAlign2123.541843.2
CanvasRenderingContext2D.textBaseline2123.541843.2
CanvasRenderingContext2D.textRendering9999116✕99116✕
CanvasRenderingContext2D.transform11233.11842
CanvasRenderingContext2D.translate1121.521841
CanvasRenderingContext2D.wordSpacing999911518.49911518.4
HTMLCanvasElement.getContext.2d_context1121.521841
ImageData1123.53.11842
ImageData.ImageData361429836298
ImageData.colorSpace9292✕15.292✕15.2
ImageData.data1123.53.11842
ImageData.height1123.53.11842
ImageData.width1123.53.11842
ImageData.worker_support361425736257
Path2D361431836318
Path2D.Path2D361431836318
Path2D.addPath687934968349
Path2D.arc361431836318
Path2D.arcTo361431836318
Path2D.bezierCurveTo361431836318
Path2D.closePath361431836318
Path2D.ellipse361448936489
Path2D.lineTo361431836318
Path2D.moveTo361431836318
Path2D.quadraticCurveTo361431836318
Path2D.rect361431836318
Path2D.roundRect9999112169911216
TextMetrics2121.5418313.2
TextMetrics.actualBoundingBoxAscent77797411.1777911.3
TextMetrics.actualBoundingBoxDescent77797411.1777911.3
TextMetrics.actualBoundingBoxLeft77797411.1777911.3
TextMetrics.actualBoundingBoxRight77797411.1777911.3
TextMetrics.alphabeticBaseline11811811611.111811611.3
TextMetrics.emHeightAscent✕✕11811.1✕11811.3
TextMetrics.emHeightDescent✕✕11811.1✕11811.3
TextMetrics.fontBoundingBoxAscent878711611.18711611.3
TextMetrics.fontBoundingBoxDescent878711611.18711611.3
TextMetrics.hangingBaseline11811811611.111811611.3
TextMetrics.ideographicBaseline11811811611.111811611.3
TextMetrics.width2121.5418313.2