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.
Image Toolkit
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.
Rows can represent directions such as down, up, left, and right, but the meaning depends on your own sprite layout.
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);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; }
}Use the GIF Maker to export multiple frames as an animated GIF.
Open GIF MakerIt is used in games and web animation to draw frame rectangles from one image.
They define the size of one animation frame.
0px is simplest for automatic slicing. 2-4px is easier to inspect visually. 8px or more can be useful for documentation.
Cell padding is space inside each cell around the image. Frame spacing is the gap between cells.
FPS means frames per second and controls preview playback speed.
It stores exact frame coordinates for game engines or custom canvas rendering.
A sprite sheet is a source image for frame animation. A GIF is an exported animated file.
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.
Compress JPG, PNG, and WebP images in your browser before uploading them to blogs, shops, or social media.
Make a selected color or solid color background transparent. This is a color-based tool, not automatic photo background removal.