Skip to content

Sprite Editor Online — From Art File to Engine-Ready Sprites

Nerulio Studio is a sprite editor for game work rather than for painting. Bring the sheet, frames, GIF or .aseprite file you already have, and it becomes timed animations with pivots and boxes, packed into the files your engine opens — all inside one browser tab.

Drop a sprite sheet, numbered frames, a GIF / APNG or an .aseprite file
Runs in your browser. Files are not uploaded.
Studio Sprite workspace: one frame with its pivot, a hit box and a hurt box, and the timeline with animation tags
The real Studio with a CC0 asset (OpenGameArt).
Exports to
  • 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
  • GIF / APNGDecoded· Pillow

What it does

  • Four workspaces are live: Sprite (import, timeline, pivots, boxes), Pack & Export (atlas packing and 18 output formats), Tile (autotile rules and test maps) and Texture (normal maps and 2D lights). One project holds them all.
  • Every automatic guess on import — grid, key colour, islands, one animation per row — is listed with a confidence (high, medium or low), its reasons and one-click alternatives. Nothing is cut until you press Apply, and Apply is a single undo step.
  • Frame editing on whole pixels: the pivot tool (P), rectangle, circle and polygon boxes (B, C, Q), a mirrored copy of a tag, and Align frames, which moves art without ever resampling it.
  • Your work stays on your machine: projects autosave in the browser's IndexedDB and can be saved as a .nerulio file. No account, no watermark, no upload.
  • What it does not do yet is draw. There is no pencil or palette editing in the Studio; paint in Aseprite, Pixelorama or Piskel and bring the result here.

How to do it

  1. Finish the drawing in your usual pixel editor and save a PNG sheet, numbered frames, a GIF or the .aseprite file itself.
  2. Drop it on this page; the Sprite workspace opens with the proposed cut and the reasons behind it.
  3. Press Apply, then shape the result: name tags on the timeline, type durations, place a pivot per frame and draw hit or hurt boxes.
  4. Open Pack & Export, pick Godot 4, Unity 6 or another of the 18 formats, and download the bundle for your project.

The six Studio workspaces

What each workspace does today, and where the two unfinished ones send you instead.

WorkspaceWhat you do there todayStatus
SpriteImport sheets, frame files, GIF / APNG, .aseprite and atlas data; timeline with tags and per-frame durations; pivots, boxes, collision polygons; Align framesLive
Pack & ExportMaxRects, Skyline or Guillotine packing with trim, alias, extrude and multipack; 18 formats, from Godot 4 and Unity 6 to CSS sprites and GIFLive
TileRecognise an autotile layout from the pixels, set terrain bits, list missing tiles, paint a test map, generate full sets; Godot, Tiled, Unity and LDtk filesLive
TextureGenerate a normal map from the sprite's silhouette, light it the way Godot 2D does, check OpenGL vs DirectX; Godot and Unity bundlesLive
PixelDrawing and palette work — not in the Studio yet; the Pixel Lab handles palette locking and cleanup todayComing (Pixel Lab meanwhile)
UINine-slice panels, button states and bitmap fonts — the UI Lab does these todayComing (UI Lab meanwhile)

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.

TargetFilesCheck
Godot 4.tres SpriteFrames · .tscn AnimatedSprite2D · .png.importVerified 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 · AnimationClipVerified Unity 6000.5.3f1Batch mode: sprite rects, pivots, pixels, clip keys and durations checked.
Phaser 3 / 4atlas JSON (multiatlas) · .anims.jsonVerified Phaser 3.90 + 4.2Frames and animations drawn by both versions.
PixiJS 8spritesheet JSON · animations · anchor · meta.scaleVerified PixiJS 8.21Rotated and multi-page atlases included.
Aseprite JSONhash / array · frameTags · slicesVerified Phaser load.aseprite · PixiJS 8.21Tags keep their direction and repeat count.
.asepritelayers · tags · durations · slicesVerified Aseprite 1.3.18Opened and rendered by the Aseprite command line.
Spine / libGDX.atlasVerified spine-canvas 4.2Every region drawn by the Spine runtime, rotated and trimmed; libGDX itself was not run.
Starling / Sparrow XMLXML per pageVerified 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ÖVELua quads · nerulio_atlas.lua · main.luaVerified LÖVE 11.5Every frame drawn and every animation stepped through the shipped helper.
Defold.atlas · .tilesourceBuilt Defold bob.jar 1.13.1Built by Defold's command-line builder; the built texture's UVs were read back.
GameMakerspr_<name>_stripN.png · gamemaker.jsonUNVERIFIEDNot loaded in GameMaker (no headless GameMaker). The strips are cut the way its strip importer cuts them.
CSS sprites.css · preview .htmlVerified ChromiumEvery class drawn from the shipped stylesheet.
GIF / APNGone file per animationDecoded 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.

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.

Questions

Can I paint pixels in this sprite editor?

No. The Studio has no pencil yet; a Pixel workspace is planned. Until it ships, draw in Aseprite, Pixelorama or Piskel. An .aseprite file comes in with its layers, tags, durations and slices; from the other editors, export a PNG sheet or frame files.

Is this the same as Unity's Sprite Editor?

No. Unity's Sprite Editor slices a texture inside a Unity project. This runs in a browser tab, measures the grid for you, and writes a JSON plus a small editor script that creates the sprite rects, pivots and one AnimationClip per tag in Unity 6 — checked in Unity 6000.5.3f1 batch mode.

How big a sheet can it open?

Images up to 32,768 px per side (268 million pixels), as far as your browser's memory allows. The packer handled 1,000 frames in 2.4 s in a Chromium worker, and Cancel stops a pack at once.

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).