The offset property is the Motion Path shorthand. It places a transformable element on a path and controls how far along that path it sits, how it rotates, and which point on the element sticks to the path.
Draw a curve.Q and T commands create a wave path without SVG markup in the HTML.
Keep rotate at 0deg. The box moves along the wave but does not tip with the curve.
Use alternate. The animation goes to the end, then back to the start.
Ease both ends.ease-in-out softens the turnaround so the motion is easier to watch.
Edge Cases & Pitfalls
If the element does not move, one of these is usually why.
path
No path, no travel
The initial offset-path is none. Without a path, changing distance does nothing visible.
motion
Distance must change
A fixed path alone only parks the element. Animate offset-distance (or set different distances) to see movement.
inset
Not top / left
offset is a motion-path transform. It does not replace inset positioning for normal document layout.
slash
Anchor needs a slash
Write the anchor after /, such as offset: path("…") 50% auto / center. Without the slash, the position values are read as other parts of the shorthand.
a11y
Respect reduced motion
Looping path animations can distract. Prefer a static distance, or pause motion, when prefers-reduced-motion is reduce.
Compatibility
Browser Support
offset is a browser CSS property for Motion Path. Node.js, Deno, and Bun do not apply it.
✓ Baseline · Widely available since 2022
offset
Chrome 55+, Firefox 72+, Safari 15.4+, Edge 79+, Opera 42+. Internet Explorer has no native support.
94%Modern browser support
Google Chrome55+ · Desktop & Mobile
Full support
Mozilla Firefox72+ · Desktop & Mobile
Full support
Apple Safari15.4+ · macOS & iOS
Full support
Microsoft Edge79+ · Chromium
Full support
Opera42+ · Modern versions
Full support
Samsung Internet6.2+ · Android
Full support
Internet ExplorerNo support
None
offsetWidely supported
Bottom line: Safe for modern motion-path demos. Individual longhands landed at slightly different times; the shorthand is Baseline since 2022. Provide a non-animated fallback when older browsers matter.
Remember
Key Takeaways
Role: Motion Path shorthand for path, distance, rotate, and anchor.
Travel: animate offset-distance from 0% to 100%.
Rotate:auto follows the path; an angle stays fixed.
Name: early drafts said motion. Use offset today. Not inherited.
One line: set a path with offset, then animate the distance to make the element travel.
Frequently Asked Questions
offset is the Motion Path shorthand. It places an element on a path and controls how far along that path it sits, how it rotates, and which point on the element anchors to the path.
No. Inset properties move positioned boxes in normal layout. offset moves an element along a defined path such as path(), circle(), or ray().
It sets offset-position, offset-path, offset-distance, offset-rotate, and offset-anchor. A slash separates the optional anchor value.
Usually yes. The common pattern is a fixed path plus an animation that changes offset-distance from 0% to 100%.
Yes. Early drafts used the name motion. Modern browsers use offset. Prefer offset in new code.
It is Baseline and widely available since September 2022: Chrome 55+, Firefox 72+, Safari 15.4+, Edge 79+, and Opera 42+. Internet Explorer has no support. It is a browser CSS property, not a Node.js feature.