Motion pathBaseline · Widely available
The offset CSS property animates an element along a defined motion path.
Supported in all major browsers for at least 30 months — safe to use without fallbacks. Baseline since Sep 12, 2022. Widely available since Mar 12, 2025.
Browser support
DesktopChrome
1–54Not supported
55+Supportedsince Dec 1, 2016
Current: 155Edge
12–18Not supported
79+Supportedsince Jan 15, 2020
Current: 154Firefox
1–71Not supported
72+Supportedsince Jan 7, 2020
Current: 157Safari
1–15.6Not supported
16+Supportedsince Sep 12, 2022
Current: 27MobileChrome Android
18–54Not supported
55+Supportedsince Dec 6, 2016
Current: 155Firefox Android
4–68Not supported
79+Supportedsince Jul 28, 2020
Current: 157Safari iOS
1–15.6Not supported
16+Supportedsince Sep 12, 2022
Current: 27How to use
This feature is Baseline widely available — use it freely, no fallback needed.
Example
Full syntax and examples are on MDN: offset.
Feature detection
CSS · check before using
@supports (offset-path: initial) {
/* styles that rely on offset-path */
}
/* or in JavaScript */
if (CSS.supports("offset-path", "initial")) {
// use it
}Documentation (MDN)
Specification
Usage share
Sub-features
Support for each part of the feature (36). The overall table above shows when the whole feature works.
| Sub-feature | Chrome | Edge | Firefox | Safari | Chrome Android | Firefox Android | Safari iOS |
|---|---|---|---|---|---|---|---|
| offset | 55 | 79 | 72 | 16 | 55 | 79 | 16 |
| offset-anchor | 116 | 116 | 72 | 16 | 116 | 79 | 16 |
| offset-anchor.auto | 116 | 116 | 72 | 16 | 116 | 79 | 16 |
| offset-anchor.bottom | 116 | 116 | 72 | 16 | 116 | 79 | 16 |
| offset-anchor.center | 116 | 116 | 72 | 16 | 116 | 79 | 16 |
| offset-anchor.left | 116 | 116 | 72 | 16 | 116 | 79 | 16 |
| offset-anchor.right | 116 | 116 | 72 | 16 | 116 | 79 | 16 |
| offset-anchor.top | 116 | 116 | 72 | 16 | 116 | 79 | 16 |
| offset-distance | 55 | 79 | 72 | 16 | 55 | 79 | 16 |
| offset-path | 55 | 79 | 72 | 15.4 | 55 | 79 | 15.4 |
| offset-path.basic_shape | 116 | 116 | 122 | 18 | 116 | 122 | 18 |
| offset-path.border-box | 116 | 116 | 122 | 18 | 116 | 122 | 18 |
| offset-path.content-box | 116 | 116 | 122 | 18 | 116 | 122 | 18 |
| offset-path.fill-box | 116 | 116 | 122 | 18 | 116 | 122 | 18 |
| offset-path.margin-box | ✕ | ✕ | ✕ | 18 | ✕ | ✕ | 18 |
| offset-path.none | 80 | 80 | 72 | 18 | 80 | 79 | 18 |
| offset-path.padding-box | 116 | 116 | 122 | 18 | 116 | 122 | 18 |
| offset-path.path | 64 | 79 | 72 | 16 | 64 | 79 | 16 |
| offset-path.ray | 116 | 116 | 122 | 16 | 116 | 122 | 16 |
| offset-path.stroke-box | 116 | 116 | 122 | 18 | 116 | 122 | 18 |
Show 16 more
| Sub-feature | Chrome | Edge | Firefox | Safari | Chrome Android | Firefox Android | Safari iOS |
|---|---|---|---|---|---|---|---|
| offset-path.url | 116 | 116 | 122 | 17 | 116 | 122 | 17 |
| offset-path.view-box | 116 | 116 | 122 | 18 | 116 | 122 | 18 |
| offset-position | 116 | 116 | 122 | 16 | 116 | 122 | 16 |
| offset-position.auto | 116 | 116 | 122 | 16 | 116 | 122 | 16 |
| offset-position.bottom | 116 | 116 | 122 | 16 | 116 | 122 | 16 |
| offset-position.center | 116 | 116 | 122 | 16 | 116 | 122 | 16 |
| offset-position.left | 116 | 116 | 122 | 16 | 116 | 122 | 16 |
| offset-position.normal | 116 | 116 | 122 | 17.2 | 116 | 122 | 17.2 |
| offset-position.right | 116 | 116 | 122 | 16 | 116 | 122 | 16 |
| offset-position.top | 116 | 116 | 122 | 16 | 116 | 122 | 16 |
| offset-rotate | 56 | 79 | 72 | 16 | 56 | 79 | 16 |
| offset-rotate.auto | 56 | 79 | 72 | 16 | 56 | 79 | 16 |
| offset-rotate.reverse | 56 | 79 | 72 | 16 | 56 | 79 | 16 |
| <ray> | 116 | 116 | 122 | 16 | 116 | 122 | 16 |
| <ray>.position | 116 | 116 | 122 | 17.2 | 116 | 122 | 17.2 |
| <ray>.size | 116 | 116 | 122 | 17 | 116 | 122 | 17 |