ITImage Toolkit

Image Toolkit

Sprite Sheet Maker

Combine multiple PNG frames into spritesheet.png and preview the frame animation in your browser. Use GIF Maker when you need an actual GIF file.

Files are processed in your browser and are not uploaded to a server.

Upload images

Click or drop files here

Large images may slow down your browser.

Frame spacing is the gap between frames. Use 0px when you want a tightly packed sheet for automatic slicing, or 2-4px when you want the sheet to be easier to inspect visually.

The recommended unit is px. Sprite sheets depend on exact pixel coordinates, so px is more suitable than %, rem, or other relative units.

  • - 0px: tightly packed sheets for game engines or automatic slicing
  • - 1-2px: helps pixel art frames avoid touching visually
  • - 4px: comfortable spacing for preview and editing
  • - 8px or more: documentation and human-readable sprite sheets

Animation Preview

Rows can represent directions such as down, up, left, and right, but the meaning depends on your own sprite layout.

Frame coordinate guide

  1. 1.A sprite sheet plays animation by drawing one rectangular frame from a larger image.
  2. 2.frameX and frameY mean where a frame starts inside the sheet.
  3. 3.frameWidth and frameHeight are the size of one frame.
  4. 4.Frame spacing is the gap between frames, cell padding is the inner space around an image, and outer margin is the space around the full sheet.
  5. 5.The metadata JSON can be used by a game engine or custom renderer to read exact frame coordinates.

JavaScript Example

const image = new Image();
image.src = "spritesheet.png";
const canvas = document.querySelector("canvas");
const ctx = canvas.getContext("2d");
ctx.imageSmoothingEnabled = false;
const frameWidth = 32;
const frameHeight = 32;
const columns = 4;
const frameSpacing = 2;
const cellPadding = 0;
const outerMargin = 0;
let frame = 0;
let last = 0;
function drawFrame(index) {
  const col = index % columns;
  const row = Math.floor(index / columns);
  const sx = outerMargin + col * (frameWidth + cellPadding * 2 + frameSpacing) + cellPadding;
  const sy = outerMargin + row * (frameHeight + cellPadding * 2 + frameSpacing) + cellPadding;
  ctx.clearRect(0, 0, canvas.width, canvas.height);
  ctx.drawImage(image, sx, sy, frameWidth, frameHeight, 0, 0, frameWidth, frameHeight);
}
function loop(time) {
  if (time - last > 125) {
    drawFrame(frame);
    frame = (frame + 1) % 1;
    last = time;
  }
  requestAnimationFrame(loop);
}
image.onload = () => requestAnimationFrame(loop);

CSS Animation Example

The CSS steps example is simplest for a single-row sprite sheet with 0px spacing. For multiple rows or spacing, the JavaScript example is more flexible.

.sprite {
  width: 32px;
  height: 32px;
  background-image: url("spritesheet.png");
  animation: play 0.13s steps(1) infinite;
}
@keyframes play {
  from { background-position: 0 0; }
  to { background-position: -32px 0; }
}

Unity import tips

  • - Texture Type = Sprite (2D and UI)
  • - Sprite Mode = Multiple
  • - For pixel art, Filter Mode = Point
  • - Compression = None is recommended
  • - Use Slice in Sprite Editor
  • - A consistent cell size makes automatic slicing easier
  • - Set Pivot around the character center or feet depending on your game
  • - 0px frame spacing is simplest for automatic slicing
  • - If spacing is used, match Grid By Cell Size offset and spacing in Unity Sprite Editor

Need a GIF file?

Use the GIF Maker to export multiple frames as an animated GIF.

Open GIF Maker

How to use

  1. 1.Upload PNG frame files.
  2. 2.Files are sorted by filename in ascending order.
  3. 3.Set columns, cell size, frame spacing, cell padding, outer margin, and background.
  4. 4.Build and download the sprite sheet and metadata.
  5. 5.Use animation preview to check FPS, frame range, row selection, and scale.

FAQ

What is a sprite sheet used for?

It is used in games and web animation to draw frame rectangles from one image.

What are frame width and height?

They define the size of one animation frame.

How many px should frame spacing be?

0px is simplest for automatic slicing. 2-4px is easier to inspect visually. 8px or more can be useful for documentation.

What is the difference between cell padding and frame spacing?

Cell padding is space inside each cell around the image. Frame spacing is the gap between cells.

What is FPS?

FPS means frames per second and controls preview playback speed.

What is the metadata JSON for?

It stores exact frame coordinates for game engines or custom canvas rendering.

How is a sprite sheet different from a GIF?

A sprite sheet is a source image for frame animation. A GIF is an exported animated file.

Related tools

GIF Maker

Create an animated GIF from multiple image frames. You can upload PNG, JPG, or WebP frames in order, or use frames from a sprite sheet. Files are processed in your browser whenever possible.

GIFAnimation
Open tool

Image Compressor

Compress JPG, PNG, and WebP images in your browser before uploading them to blogs, shops, or social media.

CompressImage Editing
Open tool

Color Background Remover

Make a selected color or solid color background transparent. This is a color-based tool, not automatic photo background removal.

Solid BackgroundImage Editing
Open tool