GIF Maker
Create GIFs from image frames or sprite sheets with FPS, size, preview, and download controls.
Free Image Toolkit
Combine PNG frames into a sprite sheet with pixel spacing, metadata, and animation preview.
No sign-up or payment is required, and files are processed in your browser whenever possible.
Upload images
Click or drop files here
Large images may slow down your browser.
Sprite sheets are generated with browser canvas. Very large canvases may hit browser limits.
Estimated canvas size: auto after upload / Columns: 4 / Rows: -
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; }
}Turn frame animations into GIFs with the GIF Maker.
Open GIF MakerFiles are processed in your browser whenever possible and are not stored on a server.
This tool focuses on sprite sheets for game assets. Use GIF Maker when you want to save frame animation as a GIF.
Create GIFs from image frames or sprite sheets with FPS, size, preview, and download controls.
Extract GIF frames as PNG images and download individual frames or a ZIP.
Select the exact moment you want from a video and save it as a clear PNG image. Extract frames directly in your browser for thumbnails, presentations, scene references, or study materials.