---
title: "FNF Sprite Sheet Maker and XML Generator"
description: "Make a Friday Night Funkin sprite sheet and Sparrow XML from your pose PNGs, or extract the frames from a mod sheet. Free, in the browser, no account."
canonical_url: "https://spritesheetgenerator.online/fnf-sprite-sheet-maker"
meta:
  author: "Dennis Postma"
  "og:description": "Make a Friday Night Funkin sprite sheet and Sparrow XML from your pose PNGs, or extract the frames from a mod sheet. Free, in the browser, no account."
  "og:image": "https://spritesheetgenerator.online/og-image.png"
  "og:image:alt": "Spritesheet Generator editor showing sprites arranged on a sheet grid"
  "og:title": "FNF Sprite Sheet Maker and XML Generator"
  "twitter:image": "https://spritesheetgenerator.online/og-image.png"
  "twitter:image:alt": "Spritesheet Generator editor showing sprites arranged on a sheet grid"
---

> Index of every page on this site: [llms.txt](https://spritesheetgenerator.online/llms.txt)

# **FNF sprite sheet and XML maker**

Drop in your character's poses, name the animation, and download a PNG with a Sparrow XML that Psych Engine reads. It also works the other way: pull every frame out of a mod's existing sheet.

[Open the editor](https://spritesheetgenerator.online/editor) [**Psych Engine setup notes**](https://spritesheetgenerator.online/engines/fnf)

**Animation name****Frames: 4**

```
<TextureAtlas imagePath="spritesheet.png">
  <SubTexture name="singLEFT0000" x="0" y="0" width="150" height="150"/>
  <SubTexture name="singLEFT0001" x="150" y="0" width="150" height="150"/>
  <SubTexture name="singLEFT0002" x="300" y="0" width="150" height="150"/>
  <SubTexture name="singLEFT0003" x="450" y="0" width="150" height="150"/>
</TextureAtlas>
```

This is what the export writes. Casing is kept, and the four digit index is added for you.

## **New character, or one you already have**

Most people show up with one of two jobs. Both happen in the same editor, and a sheet you extract can go straight back out as a new XML.

### **Make a sheet from poses**

1. **1**Drop your pose PNGs on the editor, in the order they should play.
2. **2**Rename the layer to the animation name, for example singLEFT. The export reads it from there.
3. **3**Click Format, pick Sparrow / Starling XML and download the ZIP.
4. **4**Rename spritesheet.png and spritesheet.xml to the character name and update imagePath inside the XML to match.

### **Extract frames from a mod**

1. **1**Drop the PNG from the mod on the editor. The Import image dialog opens.
2. **2**Choose Atlas and pick the .xml that shipped with it.
3. **3**Each SubTexture comes in as its own frame, in the order the XML lists them.
4. **4**Fix a pose, recolor the set, or export every frame as a separate PNG with ZIP.

Ask before reusing another mod's art in a release. Pulling frames apart to learn how a sheet is built is a different thing from shipping them.

## **When the mod loads but the animation doesn't**

Almost every broken FNF sheet comes down to the frame names. Sparrow has no animation list. A frame belongs to an animation because its name starts with that animation's prefix.

<dl>

<dt>**The mod says an animation was not found.**</dt>
<dd>Prefixes are case sensitive. singLEFT and singleft are two different animations, so copy the name from the character file exactly.</dd>

<dt>**singLEFT plays the miss frames too.**</dt>
<dd>Flixel matches from the start of the name, so singLEFT also collects singLEFTmiss0000. Give the two animations names where neither is the start of the other, or keep them in separate sheets.</dd>

<dt>**The name lost its spaces.**</dt>
<dd>Only letters, digits, underscores and hyphens survive the export. Write the name without spaces in both the layer and the character file.</dd>

<dt>**A pose sits a few pixels too high.**</dt>
<dd>Leave the sheet alone and change that animation's offsets in the character file. Moving pixels in one frame shifts it against every other frame.</dd></dl>

## **Questions modders ask**

###

###

###

###

## **Build the sheet for your next week**

Free, no account, and your art stays on your machine.

[Open the editor](https://spritesheetgenerator.online/editor)

```json
{"@context":"https://schema.org","@graph":[{"@id":"https://spritesheetgenerator.online/#website","@type":"WebSite","description":"Free online tool to create spritesheets for game development. Upload sprites, arrange them, and export as a spritesheet with animation preview.","name":"Spritesheet Generator","url":"https://spritesheetgenerator.online/","publisher":{"@id":"https://spritesheetgenerator.online/#identity"}},{"@id":"https://spritesheetgenerator.online/fnf-sprite-sheet-maker#webpage","@type":"WebPage","description":"Make a Friday Night Funkin sprite sheet and Sparrow XML from your pose PNGs, or extract the frames from a mod sheet. Free, in the browser, no account.","name":"FNF Sprite Sheet Maker and XML Generator","url":"https://spritesheetgenerator.online/fnf-sprite-sheet-maker","breadcrumb":{"@id":"https://spritesheetgenerator.online/fnf-sprite-sheet-maker#breadcrumb"},"isPartOf":{"@id":"https://spritesheetgenerator.online/#website"},"potentialAction":[{"@type":"ReadAction","target":["https://spritesheetgenerator.online/fnf-sprite-sheet-maker"]}],"primaryImageOfPage":{"@id":"https://spritesheetgenerator.online/#logo"}},{"@id":"https://spritesheetgenerator.online/#identity","@type":"Organization","description":"A free, browser based sprite sheet generator for 2D game developers and pixel artists.","name":"Spritesheet Generator","url":"https://spritesheetgenerator.online","logo":{"@id":"https://spritesheetgenerator.online/#logo"},"sameAs":["https://discord.gg/2vvfqwn5k7"]},{"@id":"https://spritesheetgenerator.online/fnf-sprite-sheet-maker#breadcrumb","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","name":"Home","item":"https://spritesheetgenerator.online","position":1},{"@type":"ListItem","name":"FNF Sprite Sheet Maker","item":"https://spritesheetgenerator.online/fnf-sprite-sheet-maker","position":2}]},{"@id":"https://spritesheetgenerator.online/fnf-sprite-sheet-maker#/schema/question/1","@type":"Question","inLanguage":"en","name":"Does the XML work in Psych Engine?","acceptedAnswer":{"@type":"Answer","text":"Yes. It is a standard Sparrow TextureAtlas, the format Psych Engine, Codename Engine and the base game read. Put the PNG and XML side by side in the character images folder with the same file name."}},{"@id":"https://spritesheetgenerator.online/fnf-sprite-sheet-maker#/schema/question/2","@type":"Question","inLanguage":"en","name":"Can I put every animation in one sheet?","acceptedAnswer":{"@type":"Answer","text":"Not from one export. Each export writes one animation name, so the simple route is one sheet and one XML per animation. Sparrow does allow several prefixes in one file, so merging the SubTexture lines by hand works if a mod needs a single file."}},{"@id":"https://spritesheetgenerator.online/fnf-sprite-sheet-maker#/schema/question/3","@type":"Question","inLanguage":"en","name":"How do I extract sprites from an FNF mod?","acceptedAnswer":{"@type":"Answer","text":"Drop the mod PNG on the editor, choose Atlas in the Import image dialog and pick the XML that came with it. Every SubTexture becomes a frame you can edit, or download them all as separate PNGs with the ZIP export."}},{"@id":"https://spritesheetgenerator.online/fnf-sprite-sheet-maker#/schema/question/4","@type":"Question","inLanguage":"en","name":"Does it work on a phone?","acceptedAnswer":{"@type":"Answer","text":"The editor runs in mobile browsers, so you can build and export a sheet there. Picking a dozen files and editing pixels is a lot easier with a mouse."}},{"@id":"https://spritesheetgenerator.online/#logo","@type":"ImageObject","caption":"Spritesheet Generator","contentUrl":"https://spritesheetgenerator.online/web-app-manifest-512x512.png","inLanguage":"en","url":"https://spritesheetgenerator.online/web-app-manifest-512x512.png"}]}
```

## Sitemap

See the full [sitemap](https://spritesheetgenerator.online/sitemap.md) for all pages.
