This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
The transform read-only property of the SVGGraphicsElement interface reflects the computed value of the transform property and its corresponding transform attribute of the given element.
An SVGAnimatedTransformList object.
transform Property<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200">
<!-- Rectangle with a transformation applied -->
<rect
id="rect1"
x="50"
y="50"
width="100"
height="100"
fill="blue"
transform="translate(20, 30) rotate(45)" />
</svg>
// Access the SVG element
const rect = document.getElementById("rect1");
// Get the transform list
const transformList = rect.transform.baseVal;
// Iterate through and log each transformation
for (let i = 0; i < transformList.numberOfItems; i++) {
const transform = transformList.getItem(i);
console.log(`Type: ${transform.type}, Matrix: ${transform.matrix}`);
}
// Example output:
// Type: 2 (SVG_TRANSFORM_TRANSLATE), Matrix: SVGMatrix { ... }
// Type: 4 (SVG_TRANSFORM_ROTATE), Matrix: SVGMatrix { ... }
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | |
transform |
1 | 12 | 1.5 | ≤12.1 | 3 | 18 | 4 | ≤12.1 | 1 | 1.0 | 3 | 1 |
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement/transform