Presets
The dashed outline shows the element before the transform.
transform: none;
Function order
Transforms apply right to left, so the order changes the result. Rotate then translate is not the same as translate then rotate.
- 1.translate
- 2.rotate
- 3.rotateX / rotateY
- 4.scale
- 5.skew
transform-origin
center
How to use
Start from a preset or the sliders
Click a preset such as Tilt card or Isometric, or drag Translate X and Y (px or %), Rotate, Scale (or Scale X and Y), Mirror and Skew X and Y.
Add 3D, origin and order
Switch on 3D for Rotate X, Rotate Y, Translate Z and Perspective. Click one of the nine origin squares, reorder functions under Function order, and switch on hover with a transition if needed.
Copy the CSS
Pick CSS, Individual props, matrix() or Tailwind and press Copy. Reset all clears every control, and Copy share link saves the settings.
Why CSS Transform Generator
- 2D translate, rotate, scale and skew plus 3D rotateX, rotateY, translateZ and perspective.
- Reorder functions to see how order changes the result, with a before outline.
- 9-point transform-origin picker, mirror switches and a hover transition preview.
- CSS, individual properties, matrix() and Tailwind output, with share links.
CSS transform functions and the ranges in this tool
Each slider maps to one transform function. Values outside these ranges are valid CSS; the ranges just cover what most interface work needs. Scale is shown as a percentage on the slider and written as a decimal factor, so 105 percent becomes scale(1.05).
Newer CSS also has separate translate, rotate and scale properties that can be set and animated on their own. The CSS tab writes the single transform property, which every browser has supported for many years, and the Individual props tab writes the newer form.
| Function | Slider range | Example output | Typical use |
|---|---|---|---|
| translate(x, y) | -200 to 200px | translate(20px, -10px) | Nudging, slide-in effects |
| rotate() | -360 to 360deg | rotate(8deg) | Tilted cards, spinners |
| scale() | 10 to 200% | scale(1.05) | Hover zoom |
| skewX() / skewY() | -45 to 45deg | skewX(-10deg) | Slanted banners |
| rotateX() / rotateY() | -180 to 180deg | rotateY(-15deg) | 3D tilt and card flips |
| perspective() | 100 to 2000px | perspective(600px) | Depth for 3D rotations |
2D vs 3D transforms
2D transforms move an element within the flat plane of the page: sideways, up and down, around its center, bigger or smaller, or slanted. They are enough for most hover effects.
3D transforms rotate the element around the horizontal axis (rotateX) or the vertical axis (rotateY), so it tips toward or away from you. Without perspective, a 3D rotation just looks like the element got narrower. perspective() sets how far the viewer is from the element: 200px feels close and dramatic, 1500px feels flat and subtle.
This tool adds perspective() inside the transform itself, which suits a single element. When several sibling elements should share one vanishing point, put the perspective property on their parent instead.
For a card flip, rotate the card 180 degrees on Y and add backface-visibility: hidden to the front and back faces so only one side shows at a time.