Our story

About us

A free, browser based spritesheet tool for game devs and artists who want to move fast.

Built, maintained, and written by Dennis Postma· Last updated August 2026

What it does

One tool that turns loose PNGs, a frame folder, or a GIF into a packed sheet with a JSON atlas. Free, in the browser, no account.

How it started

A weekend utility for a game jam in April 2025, built because packing frames by hand in an image editor kept eating the last hours before submission.

How it is built

Vue 3, TypeScript, and Tailwind on a canvas. Packing, trimming, and export all run client side, so your art never touches a server.

How it got here
  1. April 20251.0.0

    A jam utility goes public

    Drag and drop upload, a configurable grid, and an animation preview with adjustable speed. Enough to stop hand-placing frames in an image editor, and nothing else.

  2. January 20262.3.0 - 2.5.0

    Editing, accounts, and GIFs

    A pixel editor arrived for frame level fixes, optional accounts made saved projects possible, and dropping an animated GIF started offering to extract it into frames.

  3. March 20262.5.0 - 2.7.0

    Engine formats and recolor

    Phaser, PixiJS, and Tiled exports landed, splitting gained explicit row and column counts, and the recolor tool turned one character into a family of variants.

  4. June 20263.0.0 - 3.3.0

    Real editing tools

    Combine, separate, and crop, with undo and redo extended to cover dragging and layers. Cell padding followed, then a transform-handle resize tool and WebP in both directions.

  5. July 20263.4.0

    Atlases go both ways

    Attaching an atlas file to the importer meant a packed sheet could be sliced by its own metadata instead of guessed at, rotated frames included.

  6. August 20263.5.0 - 3.7.0

    Naming, guides, and manual packing

    Sparrow XML gained animation naming for FNF and Starling, the blog became a structured guides section, and packed atlases can be forced to an exact size and rearranged by hand.

Every release is listed in the changelog, which is generated from the same file these milestones were taken from.

What it will not do

No accounts to use it

Sign-in exists only to save projects to the cloud. Every tool, every export format, and every guide works with no account at all, and that is not going to change into a gate later.

No server-side processing

Packing, decoding, and encoding all run in your tab. It rules out features that need a render farm, and it also means no art of yours sits on a disk somebody else administers.

No generated art

This is a tool for arranging and exporting sprites you or your artist made. There is no model in here inventing frames, and no plan to add one.

Not a full art program

The pixel editor is for fixing a frame in place, not for drawing a character from nothing. Aseprite and its peers are better at that and are worth the money.

Who writes this

Dennis Postma

Maintainer and author

Builds 2D games in Godot and Unity, runs the browser MMORPG Noxious, and has packed enough broken sheets to know where the seams show up. Writes every guide on this site.

What it stands for

Free to use

No paywalls, no premium tier, no export watermark. The whole tool, at no cost.

Nothing uploads

Your frames stay in the tab. No server, no account, no analytics on your art.

Open formats

Export PNG, JSON, GIF, and ZIP, ready to drop straight into Godot, Unity, or Phaser.

Shaped by users

Padding, trim, and onion skinning all came from feedback, not a roadmap.

Under the hood

Worth writing down, because a free tool with no company behind it invites a fair question about whether it will still be here next year. The answer is in the shape of the thing: almost all of it is static files and code that runs in your browser, which is the cheapest kind of software to keep alive.

LayerWhat it usesWhy
InterfaceNuxt 4, Vue 3, TypeScriptServer rendered content pages for crawlers and shareable links, with the editor hydrating into a normal client side app once it loads.
StylingTailwind CSS 4One utility layer instead of a stylesheet nobody dares delete from. The comic panel look is a handful of custom classes on top of it.
Packing and exportHand-written TypeScript on canvasMaxRects bin packing, trimming, atlas writing, and every engine format are plain functions in the bundle. No service call, so they work offline once the tab is open.
GIF encodinggif.js in a web workerEncoding a long animation blocks a thread for seconds. Putting it in a worker keeps the editor responsive while a GIF is written.
Optional accountsPocketBaseA single small backend for saved projects, the gallery, and the contact form. Nothing about the editor requires it to be up.
HostingStatic output behind CaddyThe content pages are prerendered files. That keeps hosting cheap enough that the free tool does not need a paid tier to survive.
How it stays free

Advertising on the content pages covers the hosting and the domain. Ads run on pages like this one, the guides, and the feature pages, and they are kept off the editor entirely, because an ad slot next to a canvas you are dragging sprites around on would be a bad trade for everyone.

There is also a Ko-fi page for anyone who wants to chip in, and it is genuinely optional: nothing is unlocked by it and no feature is held back for it. What it buys is time, since the alternative funding model for a tool like this is a subscription, and a sprite packer is not worth a monthly bill.

Get in touch

Bug reports, feature requests, and corrections all land in the same inbox: [email protected], or use the contact form. Fixes ship in the changelog.

Ready to make your first sheet?