Aseprite Scripts Collection

Hey everyone! :smiley:

I apologize for not updating this list recently, as I’ve been quite busy lately. However, I wanted to share a small Aseprite script I just finished working on. It allows you to import images from a folder into new layers.

You can find the script here:

Feel free to give it a try and let me know if you have any feedback or suggestions. Enjoy! ^^/

1 Like

Hi JJ, this script is exactly what I’ve been looking for. Tho I can’t seem to run it, it keeps giving me this error:
“Unexpected symbol near ‘<’”

Thank you for making this btw :))

I suspect that the problem is that you downloaded the file as “html”, and not as “lua”.

Please, try downloading it from here: Bitbucket
Click that link > Click on the 3 points at the top right > right click on “open raw” > save link as “import_images_as_layers.lua”

If it still doesn’t work, please create a .lua file (you can use notepad++ for example) and paste this code inside:

-- Aseprite script: Import images as layers

-- Author: JJHaggar
-- Generated with the assistance of an AI model

-- License: CC0 1.0 Universal 

-- Prompts the user to select a file
local dlg = Dialog("Select file")
    id = "instructions_label",
    label = "Instructions: ",
    text = "Select an image in the folder that contains all the images you want to add as layers"
  id = "file",
  label = "File:",
  open = true,
  save = false,
  onchange = function(file) dlg:modify{id="file", text=file} end
dlg:button{ id = "ok", text = "OK" }

-- Extracts the directory path of the selected file
local file =
local dir = app.fs.filePath(file)

-- Gets a list of files in the selected directory
if app.fs.isDirectory(dir) then
    local files = app.fs.listFiles(dir)
    for _,filename in ipairs(files) do
        -- Check if the file is an image by its extension
        local extension = string.sub(filename, -4)
        if extension == ".png" or extension == ".jpg" or extension == ".bmp" or extension == ".gif" then
            -- Extract the full path to the file
            local filePath = app.fs.joinPath(dir, filename)

            -- Check if there is an active sprite
            local sprite = app.activeSprite
            if not sprite then
                return app.alert("There is no active sprite.")

            -- Creates a new layer with the file name
            local newLayer = sprite:newLayer()
   = filename

            -- Load the image
            local image = Image{ fromFile=filePath }

            -- If the image could be loaded, add it to the sprite
            if image then
                -- Get the current frame
                local currentFrame = app.activeFrame

                -- Adds the image to the layer at the current frame
                sprite:newCel(newLayer, currentFrame, image)
                app.alert("Could not load image: " .. filename)

            -- Refreshes the sprite view
    print("Error. Select an image in the folder you have all the images.")

And please let me know if it works :slight_smile:


It works! Thank youuu, have been using aseprite for 3 years now but I didn’t know these scripts are such a game changer :joy:

1 Like

Lil script that helps with seamless tiles of any shape, like isometric ones.


Script for editing XML atlases for Towerfall. I know it is only useful for a few people, but the code could be helpful to look at.

1 Like

…Okay, this is a script for viewing txt, xml, and json files. Editing not supported.

1 Like

Cool, maybe I’ll use them in the future!

Hi everyone, I made an extension for exporting spritesheets / frames + layers as seperate images.

Hope you like it! if you have any suggestions please tell me.

You can download it for free over here:


Hi emscape,

thanks so much for this script!

I was dealing with my own exporter and couldn’t get aseprite to only save specific frames with SaveFileCopyAs. Your way works perfectly! Thanks again so much, this is a huge bugbear of mine dealt with :sweat_smile:!

Happy that it suits your needs!

Edit: forgot to mention exporting tiles also splits frames :slight_smile:

1 Like

I’m new at scripting for aseprite, i wanna something to select some blocks of 32x32 in the canvas, then flip it and move it one pixel for right or left.
i Found this to move


and about flip i got this


its good, but now i need something to select the location before move it.

Hi all, I’ve been at it again. Made a script to create a Paint Drip animation.
Here you can download it for free.

If there’s animo I can make it support masks and have some layer options as well as optimization

1 Like

I’ve made s script to emphasise the layer you’re working on so you’re able to see better what you’re doing. There’s a free download for all patreon members (including the free ones) so please sign up for free:slight_smile:

I made a script for isometric “tiled mode”. It clones the selection to see how the texture fits. I hope it Helps! You can download the files at github.

1 Like

Hi @JJHaggar - feel free to add my latest script to the list :slight_smile: There’s a post about it here.

Palettize (by @Projectitis) Gives you finer control when applying a fixed palette to an image, including tweaking HSV of separate channels, excluding specific color matches, and a preview before applying.

1 Like

Hi, again, Aseprite buddies! :smiley:

I finally updated the first post, with lots of scripts (and since I only added the ones posted on this list, I’m sure I missed several ones XD)

These are the new ones I added to the first post (on 2024-04-18)

I don’t have much free time, and this post is getting hard to maintain ^_^U Maybe it would be a better idea to create a Github repo for this list? That way, anybody could help updating it! What do you think? ^^

1 Like

Great idea!

If no-one beats me to it I will create a markdown page of your initial post and submit it to the official aseprite “script examples” repo this weekend.

A markdown library of community scripts that Ives in the official repo would be awesome. If the authors agree :slight_smile:

What do you think!

1 Like

Aseprite is working on an official scripts and extensions database with some amazing functionality.

In the meantime I have copied the scripts to an “unofficial” community scripts collection repo. Like @JJHaggar, I don’t have tons of free time, but it will be easier to manage a list this way. When the official database is ready, the scripts can be moved there instead.

Scripts can be submitted to this list by filling in an issue form: Submit a script.