ezgif Sprite Cutter Alternative — Cut Sheets Without Uploading
ezgif's sprite cutter is the quick fix many people know: upload a sheet, type a tile size, cut, and send the frames to its GIF maker. It runs on ezgif's server and is part of a large GIF toolbox. The Studio's Sprite workspace does the cutting in your browser tab, measures the grid itself and keeps the frames as an animation you can export to a GIF or straight to a game engine.
ezgif's sprite cutter and Nerulio both cut a sprite sheet into frames, but they are built for different jobs. ezgif uploads the sheet to its server (files are deleted one hour after upload), cuts it by a tile size or by columns and rows with the offsets and spacing you type, and hands the frames to a large image toolbox: single frames as PNG, GIF, JPG, BMP or WebP, a ZIP, or an animated GIF, APNG, WebP, AVIF or MNG. Nerulio cuts in your browser tab, measures the grid itself or cuts along transparent gaps, and keeps the frames as timed animations for GIF, APNG, WebM or game-engine files. Which one fits depends on what the frames are for.

- GIF / APNGDecoded· Pillow
- Godot 4Verified· Godot 4.7.2
- Unity 6Verified· Unity 6000.5.3f1
- Phaser 3 / 4Verified· Phaser 3.90 + 4.2
- PixiJS 8Verified· PixiJS 8.21
- Aseprite JSONVerified· Phaser load.aseprite · PixiJS 8.21
- .asepriteVerified· Aseprite 1.3.18
- Spine / libGDXVerified· spine-canvas 4.2
- Starling / Sparrow XMLVerified· Phaser 4.2
- LÖVEVerified· LÖVE 11.5
- DefoldBuilt· Defold bob.jar 1.13.1
- GameMakerUNVERIFIED
- CSS spritesVerified· Chromium
Same cut, different jobs around it
The cut itself is the same arithmetic in both: a cell size, an offset for the margin and a spacing between cells. The difference is who finds those numbers. In ezgif you type them; in a hands-on test on 2026-09-23 the tile size started at 100 × 100 with no detection. Nerulio measures candidate grids from the transparent gaps, shows its confidence and reasons, and cuts sheets without a grid by islands.
After the cut, the paths part. ezgif is an image and GIF toolbox: frames go on to its GIF maker (delays in hundredths of a second, a crossfade option, and a "don't stack frames" box that transparent sprites need, or frames pile up), to optimisers, resizing and effects, or out as files in many formats. Nerulio keeps frames as a project: tags, per-frame milliseconds, pivots and boxes, exported to Godot 4, Unity 6, Phaser and other engines as well as to GIF, APNG and WebM. Its GIF writer always clears each frame before the next (the GIF "restore to background" disposal), so there is no stacking box to forget.
Where the file goes can matter for unreleased art: ezgif's pages say uploads are deleted one hour after upload; Nerulio reads and cuts the sheet in the tab and sends nothing to a server.
- Tile size
- ezgif's name for the cell size of the cut.
- Stacking
- Transparent GIF frames drawn over the previous frame instead of replacing it.
- Islands
- Cutting along transparent gaps when the sheet has no grid.
What it does
- The grid is measured from the pixels — cell size, margin and spacing — with a confidence and alternatives, so you do not start from a guessed 100 × 100.
- Sheets where frames are not on a grid are cut as "islands", one sprite per shape, with small effect pieces kept attached.
- Every GIF frame is written whole with disposal "restore to background", so frames of a transparent sprite never pile up on each other.
- The same frames go on to engine files (Godot, Unity, Phaser, PixiJS, Aseprite JSON) — the tags, timings and pivots come along.
Nerulio Studio and the ezgif sprite cutter
ezgif was tested on its live site with a 128×64 sheet of 8 frames of 32 px (2026-09-23).
| Nerulio Studio | ezgif sprite cutter | |
|---|---|---|
| Where the file is processed | In your browser tab; nothing uploaded | On ezgif's server; the file is removed after 1 hour |
| Frame size | Measured from the pixels (cell, margin, spacing) with a confidence | Typed in; starts at 100 × 100, no detection |
| Cutting methods | Measured grid, a custom grid, or islands for irregular sheets | By tile size or by columns and rows, with offsets and spacing |
| Transparent GIFs | Each frame written whole, restored to background — frames never stack | Tick "don't stack frames" in the GIF maker or frames pile up |
| Delays | 1/100 s per frame, at least 2; rounding is reported | 1/100 s per frame, loop count |
| Colours in the GIF | Exact palette up to 255 colours; above that median cut without dithering; APNG keeps soft alpha | Global colour map option |
| Outputs | GIF, APNG, WebM, and a packed sheet with engine data | PNG, GIF, JPG, BMP or WebP frames, a ZIP, or GIF, APNG, WebP, AVIF, MNG, JXL and video |
| Engine data files | Godot, Unity, Phaser, PixiJS, Aseprite JSON and more | None |
| .aseprite files | Read with tags, durations and slices | Accepted as an upload |
Source of these numbers: docs/SEO-KEYWORDS.md §4 (hands-on, 2026-09-23)
Where ezgif is the better choice
- A whole GIF toolbox around the cutter: optimise, resize, effects, and video to GIF in the same site.
- More output formats: single frames as JPG, BMP or WebP, animations as WebP, AVIF, MNG or JXL.
- Nothing to learn: upload, type a tile size, press Cut. For a one-off sheet that is often all you need.
How to do it
- Drop the sheet on this page; it opens in the Sprite workspace with the measured grid drawn as a dashed preview.
- Check the confidence, pick an alternative or type cell size, offset and spacing, then Apply.
- Drag in the tag lane of the Timeline to name each animation, set the ms per frame, and play it with Enter.
- Export (Ctrl+E) one GIF per animation, an APNG, or the sheet and data file for your engine.
When each one is the better choice
| Option | When it is the better choice |
|---|---|
| ezgif sprite cutter | A one-off sheet whose tile size you know, when you want frames as JPG, BMP or WebP, an animated WebP, AVIF or MNG, or a video, or you will continue with ezgif's optimise, resize or effects tools. It also takes an image URL, and the server does the work on any device. |
| Nerulio Studio | The frames are for a game: the grid is unknown or irregular, frames need per-frame timing, pivots or hitboxes, or the result must be an engine file. Also when the sheet must not leave your machine. |
| The engine's own slicer (Unity Sprite Editor, Godot SpriteFrames panel) | You only need the frames inside that engine project and know the cell size. |
Engine exports and how each was checked
"Verified" means the exported files were loaded by the real engine or tool on real CC0 assets and the result was compared with the source. Anything that was not loaded is labelled as such.
| Target | Files | Check |
|---|---|---|
| Godot 4 | .tres SpriteFrames · .tscn AnimatedSprite2D · .png.import | Verified Godot 4.7.2Loaded by Godot; every animation frame drawn and compared with the source file. The scene uses Nearest filtering; rotation is never used. |
| Unity 6 | .unity.json · Editor/NerulioSpriteImporter.cs · AnimationClip | Verified Unity 6000.5.3f1Batch mode: sprite rects, pivots, pixels, clip keys and durations checked. |
| Phaser 3 / 4 | atlas JSON (multiatlas) · .anims.json | Verified Phaser 3.90 + 4.2Frames and animations drawn by both versions. |
| PixiJS 8 | spritesheet JSON · animations · anchor · meta.scale | Verified PixiJS 8.21Rotated and multi-page atlases included. |
| Aseprite JSON | hash / array · frameTags · slices | Verified Phaser load.aseprite · PixiJS 8.21Tags keep their direction and repeat count. |
| .aseprite | layers · tags · durations · slices | Verified Aseprite 1.3.18Opened and rendered by the Aseprite command line. |
| Spine / libGDX | .atlas | Verified spine-canvas 4.2Every region drawn by the Spine runtime, rotated and trimmed; libGDX itself was not run. |
| Starling / Sparrow XML | XML per page | Verified Phaser 4.2Phaser 3.90 draws trimmed XML frames wrongly (its own bug); the "Sparrow XML (Phaser 3)" preset turns trim off and passes in 3.90 and 4.2. |
| LÖVE | Lua quads · nerulio_atlas.lua · main.lua | Verified LÖVE 11.5Every frame drawn and every animation stepped through the shipped helper. |
| Defold | .atlas · .tilesource | Built Defold bob.jar 1.13.1Built by Defold's command-line builder; the built texture's UVs were read back. |
| GameMaker | spr_<name>_stripN.png · gamemaker.json | UNVERIFIEDNot loaded in GameMaker (no headless GameMaker). The strips are cut the way its strip importer cuts them. |
| CSS sprites | .css · preview .html | Verified ChromiumEvery class drawn from the shipped stylesheet. |
| GIF / APNG | one file per animation | Decoded PillowEvery frame and delay decoded again after export; APNG is exact. |
Evidence
GIF decoder: 408 of 408 frames identical to Pillow on 29 real GIFs; APNG 132 of 132 on 16 files. .aseprite: 231 corpus files imported, re-written and reopened in Aseprite 1.3.18 with the same tags, durations and pixels (231/231). Exports: 49 runs in the real engines on real CC0 assets, 47 pass — the 2 failures are Phaser 3.90's trimmed-XML bug, which the Phaser 3 preset avoids.
What Nerulio lacks compared with ezgif
- No import from a URL: the file has to be dropped, chosen or pasted.
- Separate frame files only as PNG, and only from the classic Sprite Lab's ZIP; no JPG, BMP or WebP frames.
- Animated output is GIF, APNG or WebM only: no animated WebP, AVIF, MNG or JXL.
- No crossfade, effects, text or GIF optimiser in the Studio.
Limits
- A grid or island guess is a preview with a confidence; nothing is cut until you press Apply, and every choice has one-click alternatives.
- .aseprite files whose layers do not compose exactly (e.g. group opacity) are imported flattened, and the Import panel says why.
- Rotated frames in an imported atlas stay rotated; their export is UNVERIFIED.
- Images up to 32,768 px per side (268 million pixels), subject to your browser's memory.
Versions and sources
ezgif facts are from its own sprite cutter and GIF maker pages (read 2026-09-28: the cutter takes GIF, JPG, PNG, APNG and WebP up to 200 MB and deletes files one hour after upload; the GIF maker takes up to 2,000 files, 200 MB in total) and from a hands-on test on 2026-09-23 with a 128 × 64 sheet of eight 32 px frames (default tile size 100 × 100, the "don't stack frames" box). Nerulio facts are from its repository. GIF disposal methods follow the GIF89a specification.
Official documentation used
Questions
Why do my transparent sprites pile up in the GIF?
GIF frames can be drawn on top of the previous one. In ezgif's GIF maker the "don't stack frames" box has to be ticked to prevent it. The Studio writes every frame whole and clears it before the next one, so there is no box to forget.
Is there an ezgif alternative that does not upload my files?
The Studio runs in your browser tab: the sheet is read and cut on your machine and nothing is sent to a server. Projects autosave in the browser and can be saved as a .nerulio file.
Why is my GIF faster than the delays I typed?
GIF delays are in hundredths of a second, and browsers and Discord play 0 or 1 as 10. The Studio never writes less than 2 and tells you when a delay had to be rounded.
Is it free, and do I need an account?
Everything on these pages is free and works without an account. There is no watermark and no export that is held back.
Are my sprites uploaded?
No. The Studio decodes, packs and exports in this browser tab. Projects are autosaved in the browser (IndexedDB) and can be saved as a .nerulio file.
Does it need Aseprite or an engine plugin installed?
No. .aseprite files are read and written in the browser, and each engine bundle carries what that engine needs (for Godot, the import settings and scene; for Unity and the Godot TileSet, a small editor script).