# CanvasRenderingContext2D.arc()

The `CanvasRenderingContext2D``.arc()` method of the Canvas 2D API adds a circular arc to the current sub-path.

## Syntax

```void ctx.arc(x, y, radius, startAngle, endAngle [, anticlockwise]);
```

The `arc()` method creates a circular arc centered at `(x, y)` with a radius of `radius`. The path starts at `startAngle`, ends at `endAngle`, and travels in the direction given by `anticlockwise` (defaulting to clockwise).

### Parameters

`x`
The horizontal coordinate of the arc's center.
`y`
The vertical coordinate of the arc's center.
`radius`
The arc's radius. Must be positive.
`startAngle`
The angle at which the arc starts in radians, measured from the positive x-axis.
`endAngle`
The angle at which the arc ends in radians, measured from the positive x-axis.
`anticlockwise` Optional
An optional `Boolean`. If `true`, draws the arc counter-clockwise between the start and end angles. The default is `false` (clockwise).

## Examples

### Drawing a full circle

This example draws a complete circle with the `arc()` method.

#### HTML

```<canvas></canvas>
```

#### JavaScript

The arc is given an x-coordinate of 100, a y-coordinate of 75, and a radius of 50. To make a full circle, the arc begins at an angle of 0 radians (0°), and ends at an angle of 2π radians (360°).

```const canvas = document.querySelector('canvas');
const ctx = canvas.getContext('2d');

ctx.beginPath();
ctx.arc(100, 75, 50, 0, 2 * Math.PI);
ctx.stroke();
```

### Different shapes demonstrated

This example draws various shapes to show what is possible with `arc()`.

```const canvas = document.querySelector('canvas');
const ctx = canvas.getContext('2d');

// Draw shapes
for (let i = 0; i <= 3; i++) {
for (let j = 0; j <= 2; j++) {
ctx.beginPath();
let x             = 25 + j * 50;                 // x coordinate
let y             = 25 + i * 50;                 // y coordinate
let startAngle    = 0;                           // Starting point on circle
let endAngle      = Math.PI + (Math.PI * j) / 2; // End point on circle
let anticlockwise = i % 2 == 1;                  // Draw anticlockwise

ctx.arc(x, y, radius, startAngle, endAngle, anticlockwise);

if (i > 1) {
ctx.fill();
} else {
ctx.stroke();
}
}
}```

#### Result

ScreenshotLive sample ## Specifications

Specification Status Comment
HTML Living Standard
The definition of 'CanvasRenderingContext2D.arc' in that specification.
Living Standard

## Browser compatibility

Update compatibility data on GitHub
Desktop Mobile Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Chrome Full support Yes Edge Full support 12 Firefox Full support 1.5 IE Full support Yes Opera Full support Yes Safari Full support Yes WebView Android Full support Yes Chrome Android Full support Yes Firefox Android Full support 4 Opera Android Full support Yes Safari iOS Full support Yes Samsung Internet Android Full support Yes

Full support
Full support