Skip to main content

Overview

Aseprite’s transform tools allow you to modify your sprites with precision. The powerful multi-frame transform feature lets you apply transformations across multiple frames and layers at once, saving enormous amounts of time when editing animations.
Transform multiple frames demo
Multi-frame transforms are a game-changer for animation workflows, allowing you to resize, rotate, or flip entire animations in seconds.

Transform Modes

Shortcut: VReposition sprites, layers, or selections without deforming them.
1

Select the Move Tool

Press V or click the Move tool in the toolbar.
2

Click and Drag

Click on your sprite and drag to reposition it.
3

Apply

Release the mouse button or press Enter to apply.
Hold Shift while dragging to constrain movement to horizontal or vertical axes.

Multi-Frame Transform

The most powerful feature: transform multiple frames at once.
1

Select Multiple Frames

In the timeline:
  • Click a frame, then Shift + Click another to select a range
  • Or Ctrl/Cmd + Click to select individual frames
  • Or Ctrl/Cmd + A to select all frames
2

Activate Transform

Press Ctrl/Cmd + T with multiple frames selected.
3

Apply Transformation

Any transformation applies to all selected frames simultaneously.
4

Confirm

Press Enter to apply to all frames at once.
Use Cases for Multi-Frame Transform:
  • Resize an entire character animation
  • Rotate a walking cycle to face a different direction
  • Flip a side-view character to face the opposite way
  • Scale up a small sprite for a different use case

Multi-Layer Transform

Transform across multiple layers simultaneously:
In the Layers panel:
  • Shift + Click: Select a range of layers
  • Ctrl/Cmd + Click: Select specific layers
  • Right-click → Select Visible Layers: Select all visible
Then apply any transform—it affects all selected layers.
Select both multiple frames AND multiple layers:
  1. Select layers in Layers panel
  2. Select frames in Timeline
  3. Apply transform with Ctrl/Cmd + T
  4. Transformation applies to all combinations
Perfect for transforming complex multi-layer animations!

Transform Options

Choose how Aseprite resamples pixels when scaling:Nearest Neighbor (Default for pixel art)
  • Sharp, preserves pixel edges
  • No blur or antialiasing
  • Best for integer scaling (2×, 3×, 4×)
Bilinear
  • Smooth gradients
  • Introduces blur
  • Better for photographs or non-pixel art
Scale2x / Scale3x
  • Pixel art specific algorithms
  • Smart edge detection
  • Better quality than nearest neighbor for upscaling
-- Script: Scale sprite with specific algorithm
local sprite = app.activeSprite
app.command.SpriteSize {
  width = sprite.width * 2,
  height = sprite.height * 2,
  method = "nearest" -- or "bilinear", "scale2x"
}

Practical Examples

Resize an Animation

1

Select all frames

Click the first frame, then Shift + Click the last frame in the timeline.
2

Select all layers

In Layers panel, select all layers that need resizing.
3

Use Sprite Size command

Sprite → Sprite Size or Ctrl/Cmd + Alt + I
# CLI: Resize entire sprite
aseprite --batch sprite.aseprite \
  --scale 2 \
  --save-as sprite-2x.aseprite
4

Set dimensions

  • Enter new width and height
  • Choose scaling algorithm
  • Enable “Maintain aspect ratio” if needed

Flip Character Direction

-- Flip all frames to reverse character direction
local sprite = app.activeSprite

-- Select all frames
for i = 1, #sprite.frames do
  sprite.frames[i].selected = true
end

-- Flip horizontally
app.command.Flip { target = "sprite", horizontal = true }

Rotate Animation

-- Rotate entire animation by 90 degrees
local sprite = app.activeSprite

for i, frame in ipairs(sprite.frames) do
  app.frame = frame
  app.command.Rotate { angle = 90 }
end
Non-90° rotations will introduce antialiasing. For pixel-art, consider redrawing instead of rotating at arbitrary angles.

Keyboard Shortcuts

ActionShortcut
Move ToolV
Free TransformCtrl/Cmd + T
Apply TransformEnter
Cancel TransformEsc
Flip HorizontalShift + H
Flip VerticalShift + V
Rotate 180°Edit → Rotate
Sprite SizeCtrl/Cmd + Alt + I
Canvas SizeCtrl/Cmd + Alt + C

Advanced Techniques

Enter exact transformation values:
  1. Enter transform mode (Ctrl/Cmd + T)
  2. Look at the context bar at the top
  3. Enter exact values:
    • W/H: Width and height
    • Angle: Rotation in degrees
    • X/Y: Position coordinates
  4. Press Enter to apply
Use percentages (e.g., “200%”) or exact pixels (e.g., “64px”).
Transform just the selected area:
  1. Make a selection with the selection tools
  2. Use Ctrl/Cmd + T to transform only the selected pixels
  3. Rest of the sprite remains unchanged
Great for adjusting parts of a sprite without affecting the whole.
Create transformed copies:
  1. Select frames/layers to transform
  2. Duplicate them (Ctrl/Cmd + D)
  3. Transform the duplicates
  4. Now you have both original and transformed versions
Useful for creating directional variations (e.g., character facing 4 directions).
Two different resize operations:Sprite Size (Sprite → Sprite Size)
  • Scales the actual pixel content
  • Makes sprites larger or smaller
  • Affects image quality
Canvas Size (Sprite → Canvas Size)
  • Changes the canvas dimensions
  • Adds/removes empty space
  • Doesn’t scale pixels
  • Doesn’t affect quality
# CLI: Change canvas size (add padding)
aseprite --batch sprite.aseprite \
  --crop 0,0,64,64 \
  --save-as sprite-cropped.aseprite

Best Practices

Use Integer Scales

Scale by 2×, 3×, 4× etc. to preserve pixel-perfect sharpness. Avoid 1.5× or arbitrary values.

Transform Before Details

Do major transforms (resize, rotate) early in your workflow before adding fine details.

Backup Before Transform

Duplicate frames before applying destructive transforms. You can’t undo after closing the file.

Use Rotate 90° When Possible

90° rotations are lossless. Arbitrary angles introduce blur and quality loss.

Test Multi-Frame Transforms

Apply to one frame first, check the result, then apply to all frames.

Consider Redrawing

For complex transformations, sometimes redrawing at the new size/angle gives better results than transforming.

CLI Batch Transforms

Automate transformations with command-line batch processing:
# Resize all sprites in a directory
for file in *.aseprite; do
  aseprite --batch "$file" \
    --scale 2 \
    --save-as "resized/$file"
done

Performance Considerations

Transform Performance Tips:
  • Transforming many frames takes time—be patient
  • Large sprites (>512×512) with many frames may take 10+ seconds
  • Aseprite will show a progress bar for multi-frame operations
  • Save your work before applying transforms to many frames
  • You can press Esc to cancel a long-running transform

Troubleshooting

Cause: Wrong scaling algorithm or non-integer scaleFix: Use “Nearest Neighbor” algorithm and integer scale factors (2×, 3×, 4×)
Cause: Not all frames selected in timelineFix: Select all frames with Ctrl/Cmd + A in the timeline before transforming
Cause: Canvas size too small for transformed contentFix: Increase canvas size with Sprite → Canvas Size before transforming

Canvas Size

Learn how to adjust canvas dimensions without scaling

Animation Timeline

Master frame selection for multi-frame transforms

Layers

Understand layer selection and multi-layer editing

CLI Options

Automate transforms with command-line tools

Build docs developers (and LLMs) love