v1.13.0 Runs on Windows, Linux

Spritify is a tool for the fast and easy generation of 2D sprites.
It transforms simple input images consisting of smart pixels into many distinct output images with varying properties, such as gradient, noise and color which can then be exported and used in your projects.


Spritify in action

Demo version

There’s a demo version of Spritify that you can get for free to evaluate it.
In the demo some of the import and export functions are disabled.
Also many of the sizes and factors are greatly limited (Palette, Canvas, Sprite counts, Scaling factors, …).
All other features are available.


Quick overview


Note that several functions can also be performed via hotkeys. Hover your cursor over functions to see if there’s a hotkey mapped to it.


On the canvas you can draw your input image which is then used to generate your sprites.
The canvas displays both the color and behavior of individual pixels.
The color is displayed as a pixel’s color, the behavior as a character (More under Brushes).
You can left click to draw single pixels, drag while holding the left mouse button to draw a path or right click to flood fill.

default canvas
By default the canvas is filled with the Background color and None behavior

hover canvas
When hovering with your cursor, the currently active brush will be displayed

draw canvas
The canvas after drawing several pixels

The Preview

Below the canvas there’s a preview of the sprite.
It will display the same result you’d receive by performing an export.
Please note that the preview’s pixels are scaled to always use all available space, your exported result will likely have smaller pixels.

The sidebar contains all of Spritify’s settings and controls. The sidebar is split in groups which can be expanded and collapsed by clicking a group’s header.

Import | Export

Here you can save and load projects and export your sprites.
* Load Import a previously saved Spritify project
You can also import projects by opening the files with Spritify or using drag&drop
* Save Save your current project
* Result.zip Export your sprite as .zip archive containing the individual .bmp images
* Result.bmp Export your sprite as a single .bmp image (What you see in the preview)


Your current brush and pixels on the canvas consist of a color and behavior.
The different brushes are described below.

Color brushes

The color brushes set the color a pixel will have.
color brushes
The currently active brush is highlighted with [>
You’ll notice that each name here has its distinct color. These colors are also placed on the canvas when drawing with that brush.
* Background Drawing pixels with the background color (similar to erasing pixels)
You can set the background color in the Colors controls
* Fixed Drawing pixels with the fixed color
Pixels using this color will always have the same color. You can define which color to use in Colors
* Dynamic Drawing pixels with the dynamic color
Pixels using this color will vary in color. They might each end up with a different color, noise and shading in your final sprite.
Many settings affect how these pixels behave, see more under Flags, Shading, Noise and Palette
* Dynamic | Background Pixels will randomly either become a Dynamic or Background pixel with a 50/50 chance
* Fixed | Background Pixels will randomly either become a Fixed or Background pixel with a 50/50 chance
* Fixed | Dynamic Pixels will randomly either become a Fixed or Dynamic pixel with a 50/50 chance
* Fixed | Dynamic | Background Pixels will randomly either become a Fixed, Dynamic or Background pixel with a 33/33/33 chance

Behavior brushes

The behavior brushes define the behavior of a pixel during the generation process.
behavior brushes
The currently active brush is highlighted with [>
You’ll notice that the first character of each brush is highlighted. That’s the character that is being placed onto the canvas if you use this brush.
* None This is basically the ‘background’ or ‘off’ of the behaviors. Pixels of this type are considered to not exist at all during the simulation
* Static This is basically the ‘on’ of the behaviors. Pixels of this type are always active and considered to be present during the simulation
* If Pixels of this type are considered to be Static if they have a neighbor, otherwise they are considered to the None.
With these pixels you can define areas that all turn on or off together
* Walker These pixels will leave a trail on the canvas by following a random path. They’ll stop randomly or if they hit something.
They behave similar to the Snake game
* Filler Pixels of this type will fill their surrounding area to a random degree. They are similar to the Walker pixels but instead of creating a trail, they create more radial shapes like drops of ink
* Jiggler Jigglers will move randomly to a neighbor position or remain where they are
* Any Chooses any of the other behaviors randomly

example behaviors
In this example you can see two groups of If pixels and a group of Filler pixels.
In the result you’ll notice that the If groups are either present entirely or not at all. Whenever one of the Filler pixels ‘reached’ one of the groups, the entire group got activated. (One of the If pixels activates due to having a neighbor, which then can activate another If pixel until the entire group is active)


Here you can find various functions to edit the canvas.
controls * <- Undo the last canvas action (drawing, resizing)
* -> Redo the last canvas action (drawing, resizing)
* ++ Zoom in, displaying the canvas with larger pixels
* Zoom out, displaying the canvas with smaller pixels
* + Increase the size of the canvas by adding a row or column depending on the location of the button * - Decrease the size of the canvas by removing a row or column depending on the location of the button
* 7x6 The current size is displayed at the center
* ClearI Clear the canvas resetting all invisible pixels (outside of current drawing area)
* ClearA Clear the canvas resetting all pixels


In this group you can find multiple flags to control the sprite generation.
* Mirror right Mirror all pixels drawn onto the canvas to the right
* Mirror down Mirror all pixels drawn onto the canvas downwards
* Edge If the right or bottom edge should also be mirrored
* Outline Outline the final result with Fixed pixels
* Remove lonely Remove pixels without any neighbours


Below some examples explaining the mirroring flags:

mirror off
All mirroring is disabled and there’s 4 pixels drawn to the bottom right of the canvas

mirror right
Mirroring to the right is enabled, the edge is not mirrored. In addition to the 4 pixels we now see two of them being mirrored

mirror right edge
Now both mirroring to the right and edge mirroring is enabled. There’s now 8 pixels visible since all 4 input pixels were mirrored

mirror both
Additionally downwards mirroring is now enabled (no edge)


When this is active the Fixed color is used to outline the generated images.
This usually only makes sense when also setting the Scaling to > 1, since otherwise most pixels will be overwritten.

outline off
Here the Outline setting is disabled

outline on
Here the Outline setting is enabled

Remove lonely

remove lonely off
Removal of lonely pixels disabled, there’s pixels without any neighbours in the output

remove lonely on
Removal of lonely pixels enabled, there’s no pixels without any neighbours in the output

Sprite counts

Here you can set the number of images your sprite will have.
sprite counts
* Count in x Number of images per row
* Count in y Number of image rows


In this group you can configure the shading.
* Enable shading Here you can toggle the shading
* Brightness Sets the brightness of the shading * Specific direction Enable this if you want to set a specific shading direction for all your sprite images. Otherwise a random direction is chosen per image
* Direction Sets the shading direction if Specific direction is enabled
Below some example shading configurations:

shading off
Here shading is disabled. There’s no brightness gradient within the images

shading bright
Shading is enabled, the brightness is set to high

shading dark
In this image shading is enabled, the brightness set to low

shading down
Here the shading direction is set to down


noise * Strength Sets the strength of the noise (how noisy the sprite will be)

noise low
A low noise value

noise high
A high value is set for the noise


You can scale your output image, creating several output pixels per input pixel.
Be careful when combining this with high sprite counts since the sprite generation can then use a lot of memory and time.
Also avoid setting high values for both scaling factors, since their multiplication affects the performance (both set to 10 -> ~100x worse)



  • Factor before This factor is applied before the simulation having an impact on it (more pixels with different values)
    This has a huge impact on the performance
  • Factor after This factor is applied at the end, only affecting the size of the output (pixels duplicated with their values)
    This has less impact on the performance, but still must be used with caution

scaling one
A scaling (before) factor of one. Every input pixel creates an output pixel

scaling two
A scaling (before) factor of two. Every input pixel creates 2x2 (4) output pixels

scaling 16
Scaled with a factor (before) of 16. Creating 16x16 (256) output pixels per input pixel


* Fixed The color of Fixed pixels
* Background The color of the background

colors default
The default color configuration of black Fixed pixels and a white background

colors other
Using different colors


Here you can choose an image that will be used as source for Dynamic pixel colors.
If you don’t choose an image, random colors are used. Otherwise your image’s pixels are used as input.
* Reset Unset the image and use random colors instead
* Load Load an image as color source

palette fire
An image of a fire being used as palette

palette sky
An image of the sky used as palette


Here you can define a seed used for the random generation. Changing this seed has a huge impact on the generated outcome.
* Edit Text You can use the text field to set a specific seed
* Roll Click to use a randomly chosen seed

seed one
Result with a specific seed

seed two
Using another seed but the same configuration and input yielding a different result