Chickxel

Chickxel guide

You don't need to read from start to finish. Follow the first-time path, or choose the task you want to do and read only what you need.

First-time path

  1. Install and launchChoose the right download for your operating system and handle the first-launch warning.
  2. Learn the screenFind the canvas, toolbar, timeline, and other main areas.
  3. Draw an imageLearn the basic controls for colors, brushes, and selections.
  4. Save and exportSee how projects, PNG files, and Unity files are saved.

If you know the feature name, enter it in the search box on the left. The table of contents separates common tasks from feature reference.

Getting started

Chickxel is a pixel art editor for games (especially Unity 2D). Frames, layers and tags (animations) are stored in a .chickxel project, and saving also produces a PNG sprite sheet and a Unity .meta. You don't need to install .NET or anything else.

Installation

OSDownload (latest version)Run
Windows 10/11Chickxel-windows-x64.zipUnzip and double-click Chickxel.exe
macOS 12 or later, Apple Silicon (M1 and later)Chickxel-macos-arm64.zipUnzip, move Chickxel.app to the Applications folder, then double-click it
macOS 12 or later, IntelChickxel-macos-x64.zipSame as above

To see which chip your Mac has, open Apple menu → About This Mac. Changes from earlier versions are listed on the releases page.

Installing from the terminal

macOS — paste this into Terminal to download the file for your chip, install it to /Applications/Chickxel.app and launch it.

ARCH=$(uname -m); [ "$ARCH" = x86_64 ] && ARCH=x64
curl -fL -o /tmp/Chickxel.zip "https://github.com/1000Pro-1997/Chickxel/releases/latest/download/Chickxel-macos-$ARCH.zip" \
  && rm -rf /Applications/Chickxel.app && ditto -x -k /tmp/Chickxel.zip /Applications \
  && xattr -dr com.apple.quarantine /Applications/Chickxel.app; rm -f /tmp/Chickxel.zip; open /Applications/Chickxel.app

Windows — paste this into PowerShell to install to %LOCALAPPDATA%\Programs\Chickxel, create a Start menu shortcut and launch it.

$d = "$env:LOCALAPPDATA\Programs\Chickxel"; $z = "$env:TEMP\Chickxel.zip"; $x = "$env:TEMP\Chickxel-x"
Invoke-WebRequest "https://github.com/1000Pro-1997/Chickxel/releases/latest/download/Chickxel-windows-x64.zip" -OutFile $z
Expand-Archive $z $x -Force; New-Item -ItemType Directory -Force $d | Out-Null
Copy-Item "$x\Chickxel-windows-x64\Chickxel.exe" $d -Force; Unblock-File "$d\Chickxel.exe"; Remove-Item $z, $x -Recurse -Force
$s = (New-Object -ComObject WScript.Shell).CreateShortcut("$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Chickxel.lnk"); $s.TargetPath = "$d\Chickxel.exe"; $s.Save()
Start-Process "$d\Chickxel.exe"

Both methods install to a location your account can write to, so later updates happen automatically inside the app.

First launch

  • The app isn't developer-signed, so you'll see a warning the first time.
    • Windows "Windows protected your PC": More info → Run anyway.
    • macOS "unidentified developer": right-click → Open on Chickxel.app. If that doesn't work, go to System Settings → Privacy & Security → Open Anyway.
Chickxel's first screen with no document: the start screen in the middle with the Open folder button, recent folders and recent files lists and the Unity Hub project list, and the file browser on the left
① Open folder… · ② Recent folders · ③ File browser (shows the images once you choose a folder) · ④ Unity Hub project list
  • Choose a folder (① Open folder…, ② recent folders) or Unity project on the start screen and the ③ file browser on the left shows that folder's images. ④ Projects registered in Unity Hub can be opened directly from the list.
  • On first launch the display language follows your computer's language (Korean or English; English if there's no match). See Language to change it.

On macOS, read Ctrl in this guide as ⌘ (Command) (e.g. ⌘+S to save). The eyedropper is ⌥+click, and holding ⌘ switches temporarily to the Move tool. Menus and tooltips also show ⌘.

Updates

The Update button with the new version number at the right of the top bar, left of the Grid button
① Update button (opens the update dialog again)

Chickxel checks for a new version every time it starts. If one is available, the update dialog opens and an ① Update button appears in the top bar.

The update dialog: new and current version, the list of changes from the CHANGELOG, and the Update now, Don't show until the next update, Open release page and Later buttons
② Update now · ③ Later · ④ Don't show until the next update · ⑤ New version, current version and release date · ⑥ Changes
  • ② Update now: downloads and verifies the file for your OS, then closes the app, replaces it with the new version and restarts. You're asked about unsaved work first, and if anything fails the previous version stays as it is.
  • ③ Later reminds you on the next launch; ④ Don't show until the next update skips that version.
  • The dialog shows ⑤ the new and current versions and ⑥ the changes between your version and the new one.
The Help menu open with the Check for updates… item marked
⑦ Help > Check for updates…
The Updates part of the General tab in Preferences: the Check for a new version at startup checkbox and the current version note
⑧ Check for a new version at startup (clear it to turn off automatic checks)
  • Check manually any time with ⑦ Help > Check for updates…, and ⑧ turn off automatic checks in Edit > Preferences… > General.

Network and privacy

There are no accounts, analytics or ads, and your images and files are never sent anywhere. The network is used only in these cases:

The General tab of Edit > Preferences… with the Check for a new version at startup checkbox in the Updates part marked
① Check for a new version at startup: clear it and Chickxel no longer goes online to check for updates
  • ① Check for updates: asks GitHub for the latest version (can be turned off).
  • Palette web (Lospec): downloads palette lists and sample images only when you open that window. Favorite palettes are stored only on your computer.
  • AI chat: only while you use that window, the Claude Code or Codex CLI installed on your computer connects to Anthropic or OpenAI with your login.

Feedback

The Help menu open with the Report a bug or idea (Discord)… and About Chickxel… items marked
① Help menu · ② Report a bug or idea (Discord)… · ③ About Chickxel…
The About Chickxel window: version, the GitHub repository, Releases, Discord and Report an issue buttons, the Website and Buy the developer a coffee buttons, license and AI chat notes
④ Discord (bugs and ideas) · ⑤ Report an issue (GitHub Issues) · ⑥ Version · ⑦ Buy the developer a coffee

Please post bugs, annoyances and feature ideas on the Chickxel Discord. In the app, ① Help > ② Report a bug or idea (Discord)… opens it directly; in the ③ Help > About Chickxel… window, the ④ Discord button does the same. If you have a GitHub account, you can also use GitHub Issues (⑤ Report an issue in the About window).

To support development, use Support Chickxel development on the website, the Support development button at the top right of the in-app guide (F1), or ⑦ Buy the developer a coffee in ③ Help > About Chickxel…. The Website button in the same window opens the Chickxel website in the app's language.

When reporting a bug, including the following helps get it fixed quickly:

  • Version: shown in ③ Help > About Chickxel… at ⑥.
  • OS: Windows 10/11, or your macOS version (Apple Silicon or Intel).
  • Steps: what you did, what happened, and what you expected.
  • Error log: if an error dialog appeared, its log file (When errors occur). A screenshot helps too.

Screen layout

The whole Chickxel window: top bar, toolbar, file browser, palette, colors, document tabs, canvas, timeline, preview, tool options and status bar
① Menu and top bar · ② Toolbar · ③ File browser · ④ Palette · ⑤ Colors · ⑥ Document tabs · ⑦ Canvas · ⑧ Timeline · ⑨ Preview · ⑩ Tool options · ⑪ Status bar

Chickxel's layout is similar to Aseprite. The ① menu and top bar run across the top, the ② toolbar and ③ file browser are on the far left, the ④ palette and ⑤ colors next to them, the ⑥ document tabs and ⑦ canvas in the middle, the ⑧ timeline below, the ⑨ preview and ⑩ tool options on the right, and the ⑪ status bar at the very bottom.

Menu and top bar

Top bar below the menu: tool name and hint, view options, zoom, Fit and the AI chat button
① Tool name · ② Usage hint · ③ View options · ④ Zoom box · ⑤ Fit · ⑥ AI chat

The left side of the bar just below the menu shows the current tool's ① name and ② a one-line usage hint. The right side has ③ view options, ④ the zoom level and ⑥ the AI chat button.

  • ③ View options: grid, tile grid, tiled mode, pivot, onion (overlay previous/next frames). Right-click a button to open that view's settings popup; changes apply immediately (and turn the view on if it was off).
Zoom box right-click list: Fit to screen and 100%–6400%
⑦ Zoom box right-click list
  • ④ Zoom box: click to type a value, drag left/right to change one step at a time, right-click for ⑦ Fit to window and a 100%–6400% list.
  • ⑤ Fit toggle: when on, images are fitted to the window each time you open one. Ctrl+0 fits the current view at any time.
Grid button right-click popup: color and the zoom it appears from
⑧ Grid settings popup
Tile grid button right-click popup: width, height, 8×8–64×64 and color
⑨ Tile grid settings popup
Tiled mode button right-click popup: repeat size and dim around the center
⑩ Tiled mode settings popup
Onion button right-click popup: previous/next frames, intensity and tint
⑪ Onion skin settings popup
ViewRight-click settings
⑧ GridColor (alpha = intensity), zoom at which it appears (2–16×, default 6×)
⑨ Tile gridTile width/height (quick picks 8, 16, 32, 64), color
⑩ Tiled modeRepeat size (auto, 3×3, 5×5, 7×7), dim around the center
⑪ OnionNumber of previous/next frames (0–5), intensity (fainter with distance), tint (previous red, next blue)

Detailed tool settings are in Tool options on the right.

Number fields and menus

Dragging the Size number field in Tool options left and right, picking a value from the right-click list, and clicking to type a number
Common values list opened by right-clicking the Size field in tool options (dot at the current 4 px)
① Number field (Size) · ② Right-click value list
  • ① Number fields have no up/down buttons; drag left/right to change the value. Hold Shift to go 10× slower, or Ctrl to change by 10. When you hit the edge of the screen while dragging, the cursor wraps to the other side so you can keep going.
  • Click without dragging to type a value. Clicking elsewhere (such as the canvas) after typing confirms it.
  • When not typing, right-click a number field to pick from ② a list of common values (the current value is marked with a dot).
  • Only one right-click or button menu can be open at a time across the app. It closes when you click outside, scroll, press Esc, switch windows, or press the button that opened it again.

Toolbar

The vertical bar on the far left. Hover an icon to see its shortcut in the tooltip.

Toolbar: folder button, the fill slot expanded by right-click, Save and Revert buttons
① Folder button · ② Grouped slot · ③ Expanded tool list · ④ Save · ⑤ Revert to saved
  • The ① folder button at the top collapses and expands the file browser (F8).
  • Similar tools ② share one slot, marked with a small triangle in the bottom-right corner. Long-press or right-click to ③ expand it sideways and switch. See the Tools chapter for each tool.
  • At the bottom are ④ Save (same as Ctrl+S) and ⑤ Revert to saved. They're enabled only when there are unsaved changes, and revert is disabled for a new project that has never been saved (see Files).

File browser

File browser: folder tree, search, include subfolders, thumbnail list with the .chickxel badge and red dot
① Folder tree · ② Thumbnail list · ③ Search · ④ Include subfolders · ⑤ New pixel file, New folder, Refresh · ⑥ .chickxel badge · ⑦ Unsaved changes (red dot)

It has ① a folder tree, ② a thumbnail list of .chickxel and PNG files, ③ search, and ④ an option to include subfolders; changes to files in the folder are picked up automatically. You can also open projects straight from the Unity Hub list. Open folder is Ctrl+Shift+O, Open Unity project is Ctrl+Shift+U.

  • ⑤ Three icons on the right of the title row: New pixel file (creates and opens a .chickxel in the selected folder), New folder, Refresh.
  • .chickxel projects get ⑥ a blue layer badge in the bottom-right of the thumbnail. PNGs exported by a project (same-name PNG, frame sheet, part atlas) are hidden from the list so only the single .chickxel is shown. Hover it to see the exported file names; searching by those names also finds it.
  • JPG, BMP, GIF, WebP, APNG, ICO, AVIF and HEIC images and videos (MP4, WebM, MOV, MKV, AVI, …) are listed too (thumbnail = first frame). Videos get a film badge, with a first-frame thumbnail when ffmpeg is available. Clicking one opens it in a new tab as in Opening images, animations and videos.
Right-click menu with two files selected
⑧ Several files selected · ⑨ Right-click menu
  • A plain click selects and opens one file. Ctrl+click (add/remove one at a time), Shift+click (range), or drag a rectangle over the list to ⑧ select several (multiple selections don't open).
  • Press a file and drag it out of the list to the left or right (toward the canvas) to drag the file instead (if the item was already selected, all selected files). Dropping it on the canvas adds it as a new layer.
  • ⑨ Right-click menu: new project, merge, rename, show in Explorer/Finder, select image folder, delete, delete .chickxel files only, restore last deleted, view app trash.

Unsaved changes (red dot)

Every open document lives in a document tab above the canvas, and switching tabs never asks you to save. A document with unsaved changes gets a ⑦ red dot in the top-left of its thumbnail (and next to its tab title); clicking a file that's already open goes to its tab. The status bar shows "N unsaved files".

  • Renaming a dotted file keeps track of it; sending it to the trash keeps the tab and marks it modified (saving recreates the file).
  • If the file changes outside the app, the current tab asks whether to reload; another tab only notifies you when it has unsaved changes (otherwise it reloads when you select it).
  • Only closing the tab of a document with unsaved changes asks Save / Don't save / Cancel.

Merge

Select two or more files and choose Merge… from the right-click menu to combine several images into one .chickxel. In the dialog you set:

Merge dialog: order, name, mode, canvas, preview and timeline layout
⑩ Order · ⑪ Name · ⑫ Mode · ⑬ Canvas size, anchor, delete originals · ⑭ Preview · ⑮ How it will look in the timeline
  • ⑩ Order: drag rows or use the up/down buttons (top = first).
  • ⑪ Name: suggested automatically from words common to the file names (e.g. potato_growing, potato_mature → potato); you can edit it.
  • ⑫ Mode: see the table below. With As a group, turn on Empty thumbnail to create it with the parts hidden.
  • ⑬ Canvas size (default = largest file), anchor (9 directions), delete originals (to the app trash).
ModeResult
As layersOne layer per file (first file on top)
As a groupOne group with a part per file (file sizes kept)
As skinsOne skin per file within a single group (skin name = file name). For tile or item variants swapped in the same spot
As framesFrames appended in file order

Along with ⑭ a preview (played if there are several frames), ⑮ "How it will look in the timeline" shows the resulting timeline layout, plus notes on what is kept and how. Structure in .chickxel files such as layers, groups, skins, effects and tags is carried over in every mode. The result is saved as <name>.chickxel in the first file's folder and opened right away. If a file with that name already exists, nothing is merged and you're told.

Deleting and the app trash

  • Deleted files (Delete, multiple allowed) and originals removed by merging go to the app's own trash without asking (including their PNG and .meta files).
  • Press Ctrl+Z in the file list to restore the last deletion to its original place.
App trash window: retention policy, deleted files with preview, restore/delete/empty
⑯ List and preview · ⑰ Restore, Delete permanently, Empty · ⑱ Retention policy
  • In View app trash… on the right-click menu, browse ⑯ previews and ⑰ restore (double-click), delete permanently or empty the trash.
  • ⑱ Retention policy: Time limit (off by default; when on, items older than N days are permanently deleted) and Size limit (default 1 GB; oldest items are deleted first when exceeded). Change them in the trash window or Edit > Preferences….
  • Delete .chickxel files only: sends only the project file to the trash and keeps the exported PNG and .meta.
  • Select image folder: when viewing with subfolders included, finds and shows the folder that actually contains the file in the tree.

Palette

Palette panel: primary/secondary, DB32 and a palette made from the image, New palette button
① Primary/secondary · ② Stacked palette · ③ New palette · ④ Header · ⑤ Active palette blue line · ⑥ Primary swatch (white border) · ⑦ Secondary swatch (blue border)

The ① primary/secondary colors are at the top (the secondary defaults to transparent), and below them you can stack ② multiple palettes (DB32 to begin with). ③ New palette at the bottom adds an empty one.

  • ④ Each palette's header has a collapse arrow, its name (double-click to rename), the color count and a menu button.
Menu opened from the palette header menu button
⑧ Palette menu
  • ⑧ Menu actions apply to that palette: add current color, remove primary color, sort by hue, load .hex/.gpl, palette web (Lospec), save .hex, create from image, convert to palette colors, rename, move up, move down, clear, delete.
  • The palette you last clicked or edited is the active palette (⑤ blue line under the header). Palette features in the Edit menu and the AI palette tools use the active palette.
  • The swatch matching the primary color has ⑥ a white border, and the one matching the secondary color ⑦ a blue border. The transparent swatch only appears at the start of the first palette.
  • The palette list (names, colors, collapsed state, order) is saved in the settings and kept next time.

Convert to palette colors

Convert to palette colors dialog: target, dithering, before/after preview, color count
⑨ Target · ⑩ Dithering · ⑪ Before/after preview · ⑫ Color count

Replaces the colors in the image with the nearest colors in the palette. ⑨ Choose the target from current cel (only inside the selection, if any), all frames of the current layer or all layers and frames (locked layers are skipped), and ⑩ dithering from none (default) or ordered dithering (Bayer 4×4). Dithering mixes two palette colors in light intensity (linear light) and compares the mix with the source in OKLab to set the ratio (e.g. a half black, half white pattern stands for sRGB 188 gray); it is used only when the mix is still closer to the source than the nearest single color after adding how visible the pattern is (lightness difference counts fully, hue and chroma differences half). Colors within a just-noticeable difference (OKLab 0.02) of a palette color are not dithered. ⑪ A before/after preview and ⑫ the change in color count are shown; alpha is kept and fully transparent pixels are left alone. It's a single undo step.

Palette web (Lospec)

Browse the lospec.com palette list inside the app (internet required).

  • Filter by sort order (popular, downloads, newest, name), color count and tag (e.g. gameboy, pico8). Entering a palette name in the tag field shows that palette at the top.
  • Selecting a palette shows its colors along with example art made with it.
  • Use as palette (replaces the current palette; same as double-click), Add to current palette (skips duplicate colors), Save as .hex, View on Lospec.
  • Favorites: click the star at the right of a list row or next to the selected palette's name to add or remove it. Favorite palettes, including their example art, are kept on your computer (<settings folder>/Chickxel/Lospec).
  • Choose Favorites in the sort box to show only your favorites, most recently added first (no internet needed). The color count and tag/name fields still filter them. If Lospec can't be reached, use View favorites next to the error.
  • The last sort you chose is kept the next time you open the window.

Palette copyrights belong to their respective authors.

Color picker

Color picker in Square mode: saturation/value box and hue bar, alpha bar, inputs, recent colors
① Alpha bar · ② RGB · ③ HSV · ④ Alpha (A) and HEX · ⑤ Recent colors · ⑥ Mode tabs · ⑦ Square

The color picker sits below the palette. It has ① an alpha bar, ② RGB, ③ HSV and ④ alpha (A)/HEX inputs and ⑤ the 16 most recent colors; switch modes with ⑥ the tabs on the right of the "Color" header (remembered in settings).

Color picker in Honeycomb mode
⑧ Honeycomb
Color picker in Color wheel mode
⑨ Color wheel
Color picker in Sliders mode
⑩ Sliders
ModeLayout
⑦ Square (default)Saturation/value box + vertical hue bar
⑧ Honeycomb127 hexagonal cells. White in the center, getting more saturated and darker toward the edge, with 13 gray cells below
⑨ Color wheelOuter ring = hue, inner square = saturation/value
⑩ SlidersR, G, B, H, S, V bars

Every mode changes the color you're currently picking (primary or secondary).

Canvas

Shows the current frame (all visible layers combined) and draws onto the current layer's cel.

Canvas with the Gem part layer selected: the part at its own size, the rest semi-transparent
① Selected part · ② Rest of the frame, semi-transparent
  • Selecting a part layer shows ① only that part at its own size, with ② the rest of the frame shown semi-transparently so you can line things up. Selecting a group layer lets you drag parts to arrange them (see Part (group) layers).
Canvas view features: checkerboard, pixel and tile grids, symmetry guide, pivot, selection, onion skin
③ Checkerboard · ④ Pixel grid · ⑤ Tile grid · ⑥ Symmetry guide · ⑦ Pivot · ⑧ Selection · ⑨ Onion skin
Canvas in tiled mode, repeating the image
⑩ Tiled mode (the center is the tile you edit)
  • Supports 1–64× integer zoom, ③ checkerboard background, ④ pixel/⑤ tile grids, ⑩ tiled mode (for seamless patterns), ⑥ symmetry guides, ⑦ pivot, ⑧ selection and ⑨ onion skin.
  • Hold H to peek at the previous frame.
  • Even with heavy effects on large images or many frames, the window doesn't freeze while effects compute. When a frame takes a while, the canvas gets a gray semi-transparent veil with the partial result showing underneath as it is computed, plus a loading icon and progress bar at the top right of the image area. The veil lifts all at once when the frame is done. If computing falls behind while you draw, new strokes appear right away without effects and the effects catch up afterwards. Light images update immediately without a veil.

Document tabs and split view

Dragging tabs to reorder them, dropping a tab on the right edge of the canvas to split it into two panes, and closing a tab to remove the split
Document tab strip: tab title, red dot, full path tooltip, close X, new tab
① Tab title · ② Red dot · ③ Full path · ④ Close (X) · ⑤ New project (+)

The tab strip above the canvas has one tab per open document (① title = file name, ② a red dot for unsaved changes, ③ full path on hover). Clicking a file in the file browser opens it in a new tab; if it's already open (even in the other pane), it isn't opened again — its tab is selected and that pane gets focus. A document is open in only one tab. Open, recent files, New project and AI tools also open new tabs.

  • Clicking a tab switches documents; the timeline, preview, layers, undo history (per document), window title and status bar follow. Zoom, position, current frame, layer and selection are remembered per tab.
  • Close with the tab's ④ X, a middle click or Ctrl+W. The ⑤ + at the end of the strip creates a new project in a new tab.
  • Closing every tab shows the start screen below the tab strip. Only + remains on the strip, so you can create a new project in a new tab.
Tab right-click menu: Close, Close other tabs, Move to the other pane
⑥ Tab right-click menu
  • Drag tabs left and right to reorder them; Ctrl+Tab / Ctrl+Shift+Tab cycle through them. ⑥ Right-click = Close, Close other tabs, Move to the other pane.
Canvas split into left and right panes
⑦ Move to the other pane button · ⑧ Right pane · ⑨ Focused pane accent line
  • Move to the other pane (tab right-click, ⑦ the move button at the right end of the strip, the View menu) or dragging a tab to the right edge of the canvas moves that tab into ⑧ a right pane, splitting the canvas into left and right panes, each with its own tab strip. Once split, the same actions move tabs between panes. A pane's only tab isn't moved.
  • The focused pane (⑨ accent line under its tab strip) is the one the timeline, preview and panels work on; clicking the other pane focuses it. Closing the last tab of a pane removes the split.
  • Tabs open when you quit (including the split and order) are reopened next time; missing files and never-saved new documents are skipped.

Timeline

At the bottom of the screen: rows are layers, columns are frames and the strip at the top shows tags.

Timeline: layer rows (a group with parts, the locked Shadow layer), six frames, tags idle and hit, frame 4 playing
① Eye · ② Lock (locked layer) · ③ Opacity · ④ Group collapse triangle · ⑤ Parts (indented) · ⑥ Frame number and duration · ⑦ Thumbnail · ⑧ Tag strip · ⑨ Add empty frame · ⑩ Copy last frame · ⑪ Add empty layer · ⑫ Copy bottom layer · ⑬ Frame being played
  • Layer rows: ① eye (visibility) and ② lock icons, ③ opacity, name. Groups collapse and expand with a ④ triangle, and their ⑤ parts appear indented below.
  • Frame columns: ⑥ number, duration, ⑦ live thumbnail. Double-click the number to change the frame duration.
  • ⑧ Tag strip: colored brackets show groups of frames.
  • Column after the last frame: the ⑨ plus icon in the header = add an empty frame; the ⑩ copy icon below = add a copy of the last frame.
  • Row below the last layer: the whole name cell is a ⑪ plus button = add an empty layer at the bottom; the whole frame area is one ⑫ copy button (icon every 10 frames) = add a copy of the bottom layer at the bottom (a group comes with its parts).
  • While the preview plays, the frame column being shown gets a ⑬ green outline.
  • When effects take a while to compute, thumbnails of frames being recomputed get a gray veil. On heavy images, dragging an effect box's range moves only the box, and the canvas updates when you release.
You can't draw on a locked layer, but you can draw on a hidden one. A hidden normal layer appears semi-transparently on the canvas only while editing and doesn't appear in the preview or exports.
Frames 1 to 3 selected, right-click menu of the frame 3 header
⑭ Selection line at the top of the menu · ⑮ Right-clicked frame header

There are no separate tool buttons; everything is in the right-click menu. The top of the menu shows ⑭ what's selected (e.g. "Frames 1–3 selected").

Right-click menu of a cel with an image (Body layer, frame 4)
⑯ Right-clicked cel
Right-click menu of the Body layer name
⑰ Right-clicked layer name
Create-new menu from right-clicking the empty top-left cell of the timeline
⑱ Right-clicked empty area (top-left cell)
Where you right-clickMain menu items
⑮ Frame headerCreate tag; empty frame, duplicate, delete, move, duration; copy, cut, paste frames; pivot, cell name
⑯ CelClear cels, copy image from previous frame, copy, cut, paste cels, add effect, tag, empty frame, duplicate, duration, pivot, cell name
⑰ Layer nameName, opacity, effects, visibility, lock, part size, position; new layer, group, part; duplicate, order, merge, delete
⑱ Empty area (such as the top-left cell)Create new
Layer opacity dialog from the layer menu (0-255)

Selecting in the timeline

Dragging over cels to select a rectangle, extending it with Shift+click, and clicking an empty area to clear the selection

You select one kind of thing at a time (frames, layers or cels). What you click becomes the current frame/layer.

Timeline with frames 2 to 4 selected, and the status bar
① Selected frames 2–4
A block of cels selected (Body and Shadow × frames 2–3) with the status bar hint
② Selected block of cels · ③ Status bar hint
  • Click a ① frame header to select that frame, a layer name for that layer, or a ② cel for that cell; the selection gets a blue border.
  • Drag to select everything the rectangle touches. Shift+click = extend to a range, Ctrl+click = add/remove one at a time.
  • Arrow keys (after clicking the timeline): ←→ = adjacent frame, ↑↓ = adjacent layer. Shift+arrow extends the selection.
  • Icons such as the eye, lock, collapse triangle and fx only do their own job and don't select. Click an empty area to clear the selection.
  • The ③ status bar shows what's selected and what Delete will do.

Editing the timeline

Dragging selected frame headers to a new position, dragging a block of cels to move it, and holding Ctrl while dropping to copy it
Right-click menu of a block of cels (Body and Shadow × frames 2–3)
① Selected block of cels · ② Copy, cut, paste cels
Right-click menu of an empty cel (Shadow, frame 3)
③ Right-clicked empty cel · ④ Copy image from previous frame
To do thisHow
DeleteSelect, then Delete. Frames → delete frames, layers → delete layers (groups include their parts), cels → clear the image only. You can't delete every frame or layer.
ReorderDrag an already selected frame header or layer name. Other columns/rows move aside to make room; Esc cancels. Parts move only within the same group.
Move or copy a block of cels① Select several cells, then click inside and drag to move; hold Ctrl (or Alt) when dropping to copy. Cels can't move to rows of a different size or type.
Copy and pasteCtrl+C (or X), then Ctrl+V (or ② copy, cut, paste in the right-click menu). Cels overwrite the same shape with the clicked cell as top-left, frames are pasted as new frames after the selected frame, and layers as new layers above the original.
Bring in the previous frame's imageRight-click an ③ empty cel → ④ "Copy image from previous frame"

New layers created by copying get their trailing number increased by 1 (item_1 → item_2, tile_009 → tile_010, or _1 if there's no number). Duplicate in the layer menu follows the same rule. Every edit is a single undo step.

Tags

Selecting frames 1–4 and creating a tag from the right-click menu, then dragging the end of the tag box to change its range and playing it
Frames 5 and 6 selected, Create tag in the frame header menu
① Selected frames 5–6 · ② Create tag…
New tag dialog: name hit, frames 5–6, direction Forward, Loop, color
③ Name · ④ Frame range · ⑤ Direction and loop · ⑥ Color
  • ① Select a range of frames and choose ② Create tag from the right-click menu. In the dialog, set the ③ name, ④ frame range, ⑤ playback direction and loop, and ⑥ color.
Right-click menu of the idle tag
⑦ Tag box · ⑧ Tag right-click menu (Tag properties…, Play this tag, Delete)
  • Hover near either inner end of a ⑦ tag box until the cursor becomes ↔, then drag to change the range.
  • Right-click a tag for the ⑧ menu with Tag properties… (the same dialog as when creating; double-clicking the tag also opens it), Play this tag and Delete.
  • Select a tag and play the preview to loop within that tag.

Layer effects

Dragging the end of an effect box in the timeline's effect row to change its frame range, and dragging its body to move the whole range

Layer effects are non-destructive: they're applied only when displayed, without changing cel pixels. They automatically apply to anything you draw later and are all rendered per pixel (no blur or anti-aliasing).

Right-click menu of the Body layer name with Effects… (2), and the fx mark in the name cell
① Effects… · ② fx mark
  • Right-click a layer name and choose ① Effects… to open the effects dialog. Layers with effects show ② fx on the right of the name.
  • Normal layers and parts apply effects to their cel; groups apply them to the combined shape of their parts. For example, a group outline is drawn as a single line around the whole character.
  • Effects stack from the top of the list down (outline → shadow means the shadow includes the outline) and can be toggled individually.
  • Each effect has a frame range ("All frames" or a start–end frame).

Effect types

EffectWhat it does
Outline1–3px thick, 4 or 8 directions, outside or inside. Color mode: a fixed color, or Shade from neighbors (each line pixel is the touching sprite pixel's color made darker or lighter by Shade −100 to +100% — dark blue next to blue, dark grey next to grey). Turn on Hide original (outline only) to erase the sprite and keep just the line (inside: only the edge ring). Effects clipped to this outline apply to the line only
ShadowPlaces a copy of the image's shape behind it, offset by X/Y. Dither (25%, 50%, 75%) gives pixel-art style shadows
Edge light and shadeLight color on the edges facing the light (8 directions), shade color on the opposite side
Color overlayBlends a solid color or gradient with normal, multiply or screen. The gradient's "Whole sprite, one color (over time)" mode shifts the whole image through the stop colors over the effect range, with speed and ping-pong settings (formerly the gradient map effect)
Inner glowBlends a color from the edge inward by 1–8px
Color replace (palette swap)A list of "from color → to color" pairs. For turning red clothes blue without changing the cel
Hue adjustGrayscale, sepia, hue shift, brightness/contrast, saturation
ReflectionPlaces a flipped copy below (floor/water), above (ceiling), left or right (wall). Height (width for sides), opacity, dither, tint, ripple

The following are animated effects that change over their frame range. A longer range makes them slower and a shorter one faster. They all share Speed (fast start, constant, slow start, slow start and end) and Loop (once, repeat N times, ping-pong N times).

EffectWhat it does
ExplodePixels burst outward in pieces and vanish. Distance, center, randomness, gravity, piece size, flash, seed
Light sweepA band of light sweeps diagonally across the image (the glint on coins or buttons)
Squash and stretchWobbles like jelly, then returns to its original shape
Hit flashFlashes a single color (white, red, etc.) 1–8 times
BlinkRepeatedly shows and hides (invincibility frames). Fully transparent, semi-transparent or dither 50%
ShakeShakes horizontally, vertically or both by whole pixels
BobSmoothly floats up and down (floating items). Start and end connect seamlessly
Appear / disappearOpacity, dither, wipe (from top, bottom, left or right), pixel scatter
Fade in/outChanges the whole image's opacity between 0 and the original
MeltEach column drips downward and disappears (stretch or vanish)
RotateRotates around an anchor (pivot, center, bottom center). Uses RotSprite so pixel lines break less
AfterimagePlaces previous frames' images behind, gradually fainter (count, spacing, tint)
Color cycleRotates through the colors in a list (water, fire, neon)
Shockwave ringA pixel ring spreads out from the center
HologramSingle-color shaded image + scanlines, bright band, flicker, glitch, edge glow

Effect colors and clipping

Hit flash settings: color swatch, the Solid color/Gradient list opened, Clip to effect above
③ Color swatch · ④ Solid color / Gradient · ⑤ Clip to effect above
  • Clicking a ③ color swatch opens a popup with the same square, honeycomb, color wheel and slider modes as the main color editor, plus the palette, recent colors and an eyedropper; the canvas updates as you pick.
  • Each color setting can be a ④ solid color / gradient. For gradients, choose static / animated (the band moves or rotates over the range) for each of linear, radial, square and angular, and set the direction, count and angle. Stop editing, the Color space (RGB / HSL / OKLab / OKLCH; new gradients use OKLCH) and the right-click presets on the bar work as in the gradient tool; picking a preset in an effect also applies its shape, angle, direction, repeat and animation.
  • Turn on ⑤ Apply to → Clip to effect above to apply only to pixels changed by the previous effect. Example: clipping a Color overlay under an Outline gives a gradient outline.
Color popup opened from a color swatch: square picker, mode tabs, palette and eyedropper

Effects dialog

Effects dialog for the Body layer: effect types, Outline and Hit flash in the list, common settings, outline settings, before/after preview and frame strip
⑥ Effect types · ⑦ Custom tab · ⑧ Add range · ⑨ Effect list with Delete, Up, Down, Apply permanently · ⑩ Selected effect's settings · ⑪ Before/after preview with play/pause · ⑫ Frame strip · ⑬ Expand canvas to fit effects · ⑭ Extend frames
Custom tab: the Save all effects and Asset Manager buttons and two saved effect recipes
⑮ Save all effects
  • The ⑥ Effect types list on the left shows each effect applied to the current image, four per row. Double-click one to add it at the end of the list, or drag it into the effect list to add it at that position. The Script effects group at the bottom of the Built-in tab adds effects written in JavaScript (see Script effects). On the ⑦ Custom tab, ⑮ Save all effects saves the current effect list as an effect recipe, and you can insert your saved recipes plus recipes and script effects from installed packages (see Effect recipes).
  • Middle: ⑧ Add range, ⑨ the effect list (checkbox = on; delete, move up, move down, apply permanently) and ⑩ the selected effect's settings.
  • Right: a ⑪ before/after preview of the current frame with play/pause. Click the preview to open the enlarged view. Below the enlarged view are play/pause, previous and next frame, the current frame number and the Selected effect range only and Loop end to start checkboxes (they change together with the same checkboxes in the effects dialog); Space = play/pause, ←/→ = previous/next frame, Esc = close. In the ⑫ frame strip, click a cell to view that frame or drag to set the frame range.
  • ⑬ Expand canvas to fit effects (on by default): enlarges the canvas when effects extend beyond it. Choose minimal, keep ratio, or keep center (default).
  • ⑭ Extend frames: increases the number of frames in the effect's range (e.g. a 12-frame explosion on a 4-frame animation). Methods: with original frames, same ratio, first frame, last frame, repeat. Dragging the end of the range past the last cell in the frame strip also extends it.
  • Hover the i marks for explanations in tooltips.
  • On large images where effects take a while to compute, cells being redrawn in the ⑫ frame strip get a gray veil, and the "after" side of the ⑪ preview shows a veil and a loading icon until it is ready. Playback waits until the next frame is ready. While you drag a number field (such as the frame count) or the frame strip, the previous image stays under the veil and everything is redrawn at once when you release (light images update while you drag). The ⑬ canvas expansion size note changes only after all frames are drawn; clicking OK before that shows a Measuring effect bounds progress overlay that closes when it finishes.
Pressing Enter while typing a setting doesn't close the effects dialog. Changes apply only when you click OK at the bottom, and everything you changed in the dialog is a single undo step. Cancel or closing the window restores the original.

Effect rows in the timeline

Two effect rows under the Body layer: Outline (all frames) and a Hit flash box (frames 5–6)
⑯ Effect rows (on/off checkbox and name) · ⑰ Effect box (Hit flash, frames 5–6)

Like a video editor, ⑯ each effect gets a thin row under its layer, and the effect appears as a ⑰ rounded box spanning the frames it applies to. Click fx (②) in the layer name cell to collapse or expand the effect rows.

Body cels 5–6 selected, Add effect… in the right-click menu
⑱ Add effect…
  • Select cells to add an effect: select cels and choose ⑱ Add effect… from the right-click menu to open the effects dialog with Add range filled in with that frame range.
  • Drag either end of a box to change its range, or drag the body to move the whole range. Double-click a box to open the effects dialog.
  • Drag an effect name up or down to reorder it, or drop it on another layer's row to move it to that layer. Select and press Delete to delete, Ctrl+C/V to copy.
Right-click menu of the Hit flash effect box
⑲ Right-clicked effect box
Right-click menu of an empty cell outside the box in an effect row (frame 2)
⑳ Extend to here and Add copies from here (empty cells outside a box only)
  • ⑲ Box right-click menu: effect settings, to all frames, this frame only, from this frame to end, from start to this frame, on/off, delete, apply effect permanently, copy, paste. Empty cells outside a box also offer ⑳ Extend to here and Add copies from here.
  • Effect ranges follow frame numbers just like tags. Inserting frames inside a range extends it, and deleting all frames in a range deletes the effect too.

Deleting frames in the effects dialog

Effects dialog frame strip: the delete cell after the last cell dragged left, with the trailing frames covered in red
㉑ Delete cell being dragged and the frames to delete (red veil)

The dashed trash cell after the last cell of the ⑫ frame strip is the ㉑ delete cell. Grab it and drag left: the cells from there to the last cell get a red veil and border, and releasing marks those frames for deletion. The first frame can't be deleted.

Frame strip after releasing the delete cell: fewer cells, and the trash cell shows the number of deleted frames in red
㉒ Number of frames you can bring back
  • ㉒ The trash cell shows how many frames you deleted last, in red. Click the trash cell without dragging to bring back only that last deletion (earlier deletions can't be restored).
  • While frames are marked for deletion, the preview and frame strip show the order after deletion, and effects whose range lies only in the deleted frames appear turned off (they are removed when you click OK).
  • If you then drag a range end past the last cell or raise the frame count with ⑭ Extend frames, the deleted frames are discarded (no longer restorable) and new frames are added after the remaining ones.
  • The frames are removed from the project when you click OK or Apply permanently. This is one undo step together with the effect changes, and effect ranges and tags shrink just as when you delete frames in the timeline. Cancel deletes nothing.

Applying permanently and where effects show

  • Apply effect permanently bakes the effect into the cel pixels and removes it from the list (you can then edit it like any drawing). Enabled effects above the selected one are baked too, so the result looks exactly as it did. Group effects and locked layers can't be applied permanently. While baking, a Baking effects progress overlay (percentage) appears and closes when it finishes (both in the effects dialog and from the timeline effect box's right-click menu).
  • Duplicating a layer also copies its effects, and Merge down bakes the upper layer's effects.
  • Effects are shown on the canvas, preview, frame sheets and thumbnails. The drawing view for a selected part shows the plain image without effects.
  • The part atlas includes only the part's own effects; spreading effects such as outlines or shadows make the sprite wider by that amount (the pivot is shifted so it points at the same spot).
  • Effects this version doesn't know (for example, ones added in a newer Chickxel) are not thrown away. Opening such a project shows the notice "Unknown effect (type ID) on layer "…" is not drawn; it is kept as is when you save.", and the effect list shows a dimmed Unknown effect · type ID row (its checkbox is locked). Selecting it only explains that it can't be drawn or edited and Apply permanently is off, but you can still reorder or delete it. Its timeline effect row is gray.

Effect recipes

An effect recipe is a named bundle of several effects with their values and clipping relationships. Insert it into other layers or projects in one go from the Custom tab of the effects dialog; with parameters, a few values adjust the whole bundle.

Custom tab of the effects dialog: Asset Manager button, personal recipe tiles, a recipe tile from an installed package, and a script effect tile with the code icon
① Asset Manager · ② Personal recipes · ③ Recipe from an installed package · ④ Script effect (code icon)
  • Build an effect list in the effects dialog and click Save all effects to save it as a ② personal recipe. ③ Recipes and ④ script effects from enabled packages show on the same tab. Double-click a tile or drag it into the effect list.
  • Tile right-click menu: personal recipes have Rename, Edit parameters, Delete and Show in Asset Manager; recipes from packages only have Show in Asset Manager. To change a package recipe, copy it to your personal assets in the Asset Manager.
  • ① Asset Manager opens the Asset Manager filtered to effects. Inserted recipes are copied by value, so they stay in the project and remain editable even if you turn off or delete the original recipe or package.

Setting parameters

Recipe parameters window: parameter list with Add and Remove on the left; name, linked settings and default on the right
⑤ Parameter list with Add and Remove · ⑥ Name · ⑦ Linked settings · ⑧ Default (and range for integers)
  1. Right-click a personal recipe on the Custom tab and choose Edit parameters (the personal recipe details in the Asset Manager have the same button).
  2. Click Add to create a parameter in the ⑤ list and give it a ⑥ Name.
  3. Under ⑦ Linked settings, check the settings this value changes together. Each recipe effect lists the settings it can expose as "number. effect name · setting key (kind)". The first link sets the parameter's kind and default (that setting's current value); settings of another kind and settings already linked to another parameter are disabled.
  4. Depending on the kind, set ⑧ the Default, the Range for integers or the Choices for choices, then click OK.

Invalid links or ranges are listed as problems at the bottom of the window, and OK stays off until they are fixed. The recipe details in the Asset Manager list the number of parameters with their names and kinds.

Using a parameter recipe

Effects dialog: a parameter recipe as a single row in the effect list, with only the recipe name, source and parameters in the settings
⑨ Recipe group row · ⑩ Parameters · ⑪ Show effects and Ungroup
  • ⑨ A recipe with parameters appears in the effect list as one row, "recipe name · recipe, N effects" (with an expand arrow and a group icon).
  • ⑩ Selecting that row shows only the recipe name, source and parameters in the settings; changing a value updates every linked effect setting together.
  • ⑪ Show effects lists the effects inside under the group row so you can edit them one by one, and Hide effects folds them again. Ungroup turns them into ordinary effects with their current values (the parameters go away).
  • A collapsed group moves, drags, deletes and applies permanently as one unit.

Script effects

A script effect is a layer effect you write yourself in JavaScript. Declare effect({ name, settings, render(img, ctx, s) { … } }) and the settings panel is built for you; previews, the timeline and exports draw it exactly like built-in effects. Scripts run in an isolated engine with no file or network access, and the source is saved inside the project file.

Effects dialog with a script effect selected: the Script effects group at the bottom of the Built-in tab, and the name, status line, edit buttons, Save as asset and settings in the settings panel
① Script effects group (New script, Open JS file) · ② Name, author, hash and status line · ③ Edit script… and Open JS file… · ④ Save as asset · ⑤ Settings built from the declaration
  • ① The Script effects group at the bottom of the Built-in tab: New script adds an effect from the light sweep example and opens the editor. Open JS file… adds a .js file as an effect; if the source has errors, it is not added and the editor shows the errors.
  • With a script effect selected, the top of the settings shows ② the declared name, the author, the first 12 characters of the source hash and a status line (time per frame in the current preview, or an error). ③ Edit script… opens the editor, and Open JS file… replaces this effect's source with a file (settings with the same key keep their values).
  • ④ Save as asset: saves the source as a personal script asset you can reuse from the Custom tab and the Asset Manager and export in a package. Only scripts allowed to run can be saved, and saving the same source twice keeps one copy.
  • ⑤ The settings come from the declared settings: integer and number = slider with number field, on/off = checkbox, color = color swatch, choice = list. A script declared as animated also gets Speed and Loop, like the built-in animated effects.

Script editor

Script editor: declaration hint, source, error list with line and column, Apply and Close buttons
⑥ Declaration hint · ⑦ Source · ⑧ Error list · ⑨ Apply and Close
  • Edit the source in the ⑦ monospace text box, following ⑥ the declaration hint at the top. ⑨ Apply (Ctrl+Enter) shows the result in the effects dialog and on the canvas right away.
  • ⑧ Syntax and declaration errors are listed as "Line n, column m: …"; click one to move the cursor there. The line after them shows the run status in the current preview (time per frame, or a run error).
  • Applying an edited source switches the effect to the new source; old sources no longer used are dropped from the project when you save.

Allowing scripts to run

Run script effects window: checkbox, name, author and hash for each script, Run and Don't run buttons
⑩ Checkbox, name, author and hash for each script · ⑪ Run and Don't run

Opening a project with scripts you haven't seen before (with Open, drag and drop and so on) shows the Run script effects? window. ⑩ Each script has a checkbox (on at first), its name, author and full hash; ⑪ Run runs only the checked ones and Don't run runs none.

  • Your choice is remembered on this computer per source hash. Effects that don't run aren't drawn and stay in the project as they are; you can allow them later with Allow to run in the effects dialog settings.
  • Scripts written or imported on this computer and scripts saved as personal assets run right away without asking. Scripts from packages (file or online) aren't drawn when inserted; selecting the effect shows the not-running status and an Allow to run button, which draws it immediately.

When a script can't draw

When a script effect can't draw, a warning icon appears at the end of its effect list row and on its timeline effect row (at the right end of the name cell and of the effect box); hover the icon in the effect list for the reason.

StatusCause and fix
Missing sourceThe project doesn't contain the source. Open the same JS file to draw it again.
Not allowedThe script isn't allowed to run. Click Allow to run in the settings.
Source errorThe source has syntax or declaration errors. Fix them in the editor.
FailedA frame went over the limits (2 seconds, 50 million statements, 256 MB of memory) or the script threw an error. Only this effect is skipped on that frame.
StoppedIt failed 3 times in a row, so computing stopped. Fix it, then click Run again in the settings or turn the effect off and on.

Script assets

  • The Custom tab of the effects dialog also shows personal and installed script effects as tiles. Tiles containing scripts have a code icon (two angle brackets) at the top right, and their tooltip says so when they include scripts not yet allowed to run. A personal script tile's right-click menu has only Delete and Show in Asset Manager (its name comes from the declaration in the source).
  • When you save a recipe containing script effects as a personal asset, export it in a package or publish it online, the source goes with it, so it draws the same on another computer once allowed to run.
  • In the Asset Manager, script effects have the kind Script effect and show under the Effects filter; their details list the author, source hash, Script run (allowed / not allowed) and the number and names of settings. Packages with scripts and assets not yet allowed get an orange note, and package contents include "Script effects: N". Scripts from installed packages can also be copied with Copy to Personal Assets (allowing them to run is separate).

Asset Manager

The Asset Manager installs, turns on and off, and removes asset packages (.chickxel-asset) that bundle effect recipes, gradients and script effects. It also downloads packages from the online list and exports or publishes your own personal assets.

  • Open it with Tools > Asset Manager….
  • The Asset Manager button on the Custom tab of the effects dialog opens it filtered to effects, and the Asset Manager button under the list in the Presets window opens it filtered to gradients. Show in Asset Manager in a Custom tab tile's right-click menu opens it with that asset selected.

Installed tab

Installed tab of the Asset Manager: filters, search and the import, export and publish buttons at the top; personal assets and installed packages on the left; details and buttons of the selected package on the right
① Tabs (Installed, Browse, Updates) · ② Kind filter and name search · ③ Import from File, Export Personal Assets, Publish Online · ④ List · ⑤ Details and buttons of the selected item
  • ① There are Installed, Browse and Updates tabs.
  • ② Filter by All / Effects / Gradients and search by name. Effects shows effect recipes and script effects together.
  • ③ Import from File… checks and installs a .chickxel-asset file (a newer version of an installed package updates it). Export Personal Assets… bundles the personal assets shown in the list into one package file, and Publish Online… builds a public package to submit to the online catalog.
  • ④ The list shows Personal assets, Installed packages with their assets, and Recently deleted packages, in that order.
  • ⑤ Shows the details and buttons of the selected item, as listed in the table.
Selected itemWhat it shows and its buttons
PackageStatus, ID, version, author, license, required app version, source, install time and contents. Turn Off/Turn On, Export as Package File…, Roll Back to Previous Version (updated packages only), Open File Location, Open Web Page (when the author has a website), View License (when there is a license file), Delete
AssetPreview (effects animate on a sample image, gradients show a strip), kind, source, author; for recipes, the effect list, insert range and parameters. Personal assets: Rename…, Edit parameters (recipes), Export as Package File…, Publish Online…, Delete. Package assets: Copy to Personal Assets. Gradients also have a favorite button
Recently deleted packagesDeletion time. Kept for 30 days; Restore reinstalls it during that time
  • Recipes and gradients of a package that is off disappear from the Custom tab of the effects dialog, the gradient menu and Presets window, and the AI tool list (the files stay) and come back when you turn it on. Effects and gradients already inserted into projects are copied by value, so turning off or deleting the package doesn't change them.
  • Importing from a file checks the file list, sizes, checksums, effect settings and preview images before installing. If anything is wrong, each problem is listed and nothing is installed; a package that needs a newer Chickxel tells you which version it needs.
  • On first launch, your old custom effects and gradient presets move into personal assets. The old files stay in the settings folder as effect-presets.backup-date.json and gradient-presets.backup-date.json.

Browse tab

Browse tab: filters, search, tags and Refresh at the top; online package list on the left; preview, information and Install button of the selected package on the right
⑥ Filters, search, tags, Refresh · ⑦ Online package list · ⑧ Details of the selected package and Install
  • ⑥ The online list is downloaded from the website the first time you open the tab ("Loading the online list…" while loading, then "N packages · list from time"). It has the All / Effects / Gradients filter, search (name, description, author, tags), the All tags list and Refresh.
  • ⑦ Each row shows the name, version, author, contents (numbers of effect recipes, gradients and script effects) and status (installed version, new version, or can't be installed on this version).
  • ⑧ Preview image, short description, ID, version, installed version, author, license, contents, required app version, size, published, updated, review (Official Chickxel / Reviewed) and tags, with Install (or Update to …, Show in Installed) and Open Web Page.
  • Install shows a progress bar, percentage and Cancel in its place. If the downloaded file doesn't match the checksum in the list, only an error is shown and nothing changes. A package that can't be used on this version shows why (for example "Can't install: requires Chickxel 1.20.0 or later") and its Install button is off. Packages installed online have the source Online catalog.
  • Official packages hold one asset each: 8 gradients (Rainbow, Repeating Rainbow, Sunset, Ocean, Transparent Fade, Fire, Forest, Grayscale) and 3 effect recipes (Outlined Drop Shadow, Hit Reaction, Shiny Pickup).

Updates tab

  • Check for updates downloads the online list again and shows, for each package with a newer version, an "Installed 1.0.0 → new version 1.1.0" row and an Update to … button. New versions are installed only when you click; the previous version is kept for rollback, and effects already in your projects don't change. The tab name shows the number of updates (e.g. Updates (1)); with none, it says "All installed packages are up to date."
  • Without an internet connection, the Browse and Updates tabs say in orange that the online list couldn't be reached and show the last downloaded list instead. Installed assets keep working.

Using package assets

  • The Custom tab of the effects dialog shows recipes from enabled packages after your personal recipes (see Effect recipes).
  • In the gradient Presets window, package gradients show the package name next to their name, and Rename and Delete are off. Edit one and click Save as Personal Asset to keep the original and create a personal copy (see Gradient).
  • To modify a package asset, make a personal copy with Copy to Personal Assets in its details.

Publish Online

Bundle personal assets into a public package, check it, save it and open the online catalog submission form. Publish Online… at the top of the Installed tab starts with the personal asset selected in the list (or, with none selected, all personal assets shown in the list); Publish Online… in a personal asset's details opens the Publish Online window with that asset checked. If you saved the same assets before, that package information and asset selection are filled in again.

  • Author: author ID (lowercase letters, digits and hyphens; the first part of the package ID, which can't change after publishing), display name and website (optional). Remembered on this computer for your next publish and for personal exports.
  • Package: name, package ID (follows "author-id.name" unless you edit it), version, short description (up to 200 characters) and tags (comma-separated). If the ID was published before, the last version and a suggested next version appear under the version field; Use suggested version fills it in.
  • License: choose CC0-1.0, CC-BY-4.0, CC-BY-SA-4.0, CC-BY-NC-4.0, MIT or Apache-2.0 to see a one-line summary. Custom needs a license ID starting with LicenseRef- and the license text.
  • Included assets: checklist of personal assets (checked ones first) with "M of N personal assets".
  • List preview: the image shown in Browse. Pick one of the included assets' previews or use a PNG (up to 512×512, 1 MB) with Replace with Image File….
  • Pre-upload check: checked as you type, with the same rules as the online catalog. Red X = error (blocks saving), orange exclamation mark = warning (you can still save).
  1. With no errors, a blue check says all checks passed and Save and Open Submission Page… turns on. Click it.
  2. Choose where to save. Chickxel saves <ID>-<version>.chickxel-asset and <ID>-<version>-submission.zip in the same folder, shows the zip in your file manager and opens the GitHub asset submission form in your browser with the package information filled in.
  3. Drag the zip file into the form and submit it. Chickxel uploads nothing itself; submitted packages appear in Browse after review.
  • Main errors: author ID, display name or website (https) format; package ID, version (SemVer), name, short description or tag format; missing license or license text; the personal-export author; a package ID whose first part differs from the author ID; the official-only author ID chickxel; no list preview; and, compared with the last downloaded online list, changed contents for the same version, a lower version or a name clashing with another package. Warnings: no tags, an uncommon license ID, or the same version saved on this computer with different contents.
  • Export Personal Assets… and Export as Package File… make personal packages that can't be published online. They use the display name remembered in the Publish Online window as the author name.

Preview

Preview panel: playback, FPS, zoom button, background
① Playback · ② FPS · ③ Zoom button (Fit) · ④ Background
NumberItem and use
①Plays the current tag in real time; if there is no tag it plays all frames.
②Sets a separate FPS for the preview.
③Click to cycle fit → 1× → 2× → 4×; right-click to go in reverse.
④The background button. Click it to open the background list.
Preview right-click menu: Copy image, Copy enlarged, Save frame, Save as GIF
⑤ Right-click menu

⑤ Right-click the preview image to open copy and save commands.

CommandWhat it does
Copy imageCopies the shown frame to the clipboard as a transparent PNG without the preview background.
Copy enlarged (×4)Copies a PNG enlarged 4× with crisp pixels. This is useful for pasting into chats such as Discord.
Save frame…Saves the shown frame as <document>_<frame number>.png.
Save as GIF…Opens the Export as animated GIF dialog.

During playback it copies or saves the frame that was visible when you right-clicked; you do not need to stop playback.

Preview background list: checker, black, white, gray, green, custom color
⑥ Background list

⑥ Choose checkerboard, black, white, gray, green, or a custom color from the background list.

If effect computing falls behind, playback keeps showing the current frame until the next one is ready (it never inserts blank frames), with a loading icon while it waits.

Export dialog

Export dialog: settings on the left, output preview on the right, two tabs and the Export button
① Export button · ② Export tab · ③ Import Settings tab · ④ Settings · ⑤ Output preview · ⑥ Divider

Open it with Ctrl+E or File > Export…. Settings apply as soon as you change them (one undo step per setting), and the blue ① Export button at the bottom closes the dialog and exports. If export on save is on, Ctrl+S alone exports too. There are two tabs: ② Export and ③ Import Settings.

  • ④ Left = settings, ⑤ right = output preview (sheet and cell name list per file). Drag ⑥ the divider to split the width; the dialog size and collapsed sections are remembered.
Export dialog with all setting sections collapsed
⑦ Common · ⑧ Files · ⑨ Frame sheet · ⑩ Part atlas · ⑪ Advanced
  • The frame sheet and part atlas share the same sheet settings. Turn on ⑪ Advanced > Per sheet to keep separate settings for the part atlas.
SectionMain settings
⑦ CommonOutput (frame sheet, part atlas, both), skins (current outfit, chosen skins), skin packing, layout (grid, auto layout), sort order, cell count, separate files, cell names, spacing between cells, trim borders, power of two
⑧ FilesExport on save, folder, file format (PNG/JPG/TGA/BMP), Unity .meta (off, auto, always)
⑨ Frame sheetName, Single frame, path
⑩ Part atlasName, keep original positions, Sprite Library, path
⑪ AdvancedPer sheet
Common section of the Export dialog
⑫ Cell count · ⑬ Order · ⑭ Separate files · ⑮ Cell names · ⑯ Skin and Choose skins
  • ⑫ Cell count: auto (smallest sheet), N columns, N rows.
  • ⑬ Sort order: drag the part, skin, tag and frame rows or use Alt+↑/↓ to reorder them, and use New row here between rows to set where lines break. Sorting changes only positions; cell names stay the same.
  • ⑭ Separate files: split files per tag, per part or per skin (can be combined).
  • ⑮ Cell names: Frame number or By tag (default for new projects). They're used as sprite names in Unity .meta, so changing them shows a warning.
  • ⑯ Choose skins…: choose skins to export, outfit presets and layers to include in the composite.
Popup opened by the Preset button: save, load, manage, reset to defaults
⑰ Preset popup
  • ⑰ Preset (far right of the tab row): saves the current settings under a name in the app settings so you can load them in other projects. Includes built-in presets ("Frame sheet (default)", "Part atlas + Sprite Library", "Separate file per skin"), reset to defaults, rename, overwrite, delete, and JSON export/import. Per-project values such as file names and folders aren't included.
Import Settings tab of the Export dialog
⑱ Import Settings tab
  • ⑱ Import Settings tab (shown only when writing .meta): sets the same names and values as Unity's Texture Importer (Sprite Mode, Pixels Per Unit, Mesh Type, Pivot, Filter Mode, Compression, etc.). Defaults suit pixel art (Point, no compression, mipmaps off, Clamp).

When an export takes a while, a dark translucent overlay covers the whole window until it finishes. A box in the middle shows Exporting, a spinning loading icon, the percentage with a progress bar and Editing is paused until this finishes; meanwhile drawing, shortcuts and file drops are ignored and other windows (such as the AI chat) are disabled.

See also the Files chapter for saving and Unity integration.

Export as animated GIF

File > Export as animated GIF… creates a single GIF for sharing. The project isn't changed.

Export as animated GIF dialog: range, zoom, loop, background, preview, result info
① Range · ② Zoom · ③ Loop · ④ Background · ⑤ Preview · ⑥ Output size, frames, duration, colors
Choose tag list opened
⑦ Tag list
  • ① Range: current tag, all frames, ⑦ choose a tag.
  • ② Zoom: 1–10× (default = the zoom that makes the result about 256px).
  • ③ Loop: loop forever or play N times.
  • ④ Background: transparent (alpha below 50% becomes transparent) or composited over a background color.

⑤ The preview on the right plays with the actual frame durations and ⑥ shows the output size, frame count, duration and color count. With 255 colors or fewer it's saved losslessly. The default location is <project>.gif next to the project (<project>_<tag>.gif for a tag). You can assign a shortcut in Preferences > Shortcuts.

If compositing the preview frames or writing the GIF takes a while, a dark translucent overlay covers the whole window until it finishes, with Compositing frames or Creating GIF and the percentage with a progress bar in a box in the middle.

Tool options

Tool options panel for the Pencil
① Title row · ② Settings of that tool

Below the preview on the right. ① The title row shows the selected tool's name (e.g. Tool settings · Pencil) and ② only that tool's settings appear. Tool settings aren't part of undo and are kept for the next launch. Per-tool details are in the Tools chapter.

Pivot (Pivot tool K)

Tool options for the Pivot tool: 5×5 buttons, X/Y, Current frame only, target
③ Target · ④ 5×5 buttons · ⑤ X and Y · ⑥ Current frame only
  • ③ Shows the pivot of the drawing target (the part if one is selected, otherwise the frame) in pixels.
  • The ④ 5×5 buttons pick 0, 1/4, 1/2, 3/4 or end positions horizontally and vertically.
  • ⑤ Enter X (from the left) and Y (from the bottom, as in Unity) in 0.5px steps.
  • ⑥ Turn on "Current frame only" to use a per-frame pivot.

Status bar

Status bar: coordinates, color, size, frame/layer, zoom, save state, hints
① Cursor coordinates · ② Color · ③ Size · ④ Frame/layer · ⑤ Zoom · ⑥ Save state · ⑦ Hints

The very bottom of the screen shows ① the cursor coordinates, ② color, ③ canvas size (part size for parts), ④ frame/layer, ⑤ zoom and ⑥ save state. ⑦ Hints such as what's selected in the timeline or the number of unsaved files also appear here.

Tools

Tool list

Chickxel window with the pencil selected: the toolbar on the left and Tool options on the right
① Toolbar · ② Tool options (shown as “Tool settings”)

When you select a tool in the ① toolbar, its settings appear in ② Tool options in the right dock. Long explanations live in i icon tooltips so they don't take up space: usage hints for Rectangle select, Ellipse select, Lasso select, Magic wand, Move and Gradient sit next to the Tool settings · … title, and the explanations of the canvas size, transform, gradient, 9-slice and eyedropper groups sit next to each group title. Hover the i to read them.

The tool slots of the toolbar
③ Pencil · ④ Eraser · ⑤ Fill/gradient group · ⑥ Eyedropper · ⑦ Shape · ⑧ Select group (rectangle, ellipse, lasso, magic wand) · ⑨ Move · ⑩ Lighten/darken · ⑪ Dithering · ⑫ Color replace brush · ⑬ Pivot · ⑭ 9-slice
ToolShortcutWhat it does
③ PencilBPaints pixels. Supports pixel perfect (P, at size 1) and symmetry
④ EraserEErases pixels
⑤ FillGFills an area of the same (or similar) color
⑤ GradientFDrag to paint a linear gradient
⑥ EyedropperI, Alt+clickPicks a color from the canvas
⑦ ShapeRDraws lines, curves, rectangles, ellipses, triangles, polygons, stars and more. Pick the shape in Tool options; L switches straight to the line. Most shapes can be filled (U) (Shape)
⑧ Rectangle select / Ellipse selectMDrag to select an area
⑧ Lasso selectQDraw an outline to select
⑧ Magic wandWSelects an area of similar color
⑨ MoveVMoves the selection. With no selection it shifts the whole cel; has a wrap around option
⑩ Lighten/darkenDChanges the brightness where you brush
⑪ DitheringTPaints by mixing primary and secondary colors in a pattern
⑫ Color replace brushCReplaces colors where you brush
⑬ PivotKSets the pivot
⑭ 9-sliceSSets the Unity sprite border

Whatever tool you're using, holding Ctrl over the canvas temporarily switches to the Move tool, and releasing it returns to the original tool. In drawing tools, holding Alt temporarily switches to the eyedropper.

Drawing basics

Window with the pencil selected: primary and secondary color slots, the Right button = eraser option and the tool hint in the top bar
① Primary color · ② Secondary color · ③ Right button = eraser · ④ Tool hint in the top bar (Shift+click line and more)
  • Left button = ① primary color, right button = ② secondary color (or eraser, depending on ③ options).
  • Pressing the other button mid-stroke cancels that stroke.
  • ④ Shift+click = straight line from the last point. In brush tools such as the pencil, holding Shift shows the line that will be drawn (including brush size and symmetry) as a translucent preview. While drawing shapes, Shift keeps the proportions (15° steps for lines, perfect squares and circles, and so on).
The Edit menu opened
⑤ Add outline · ⑥ Replace color · ⑦ Flip/rotate · ⑧ Canvas size
  • The Edit menu has ⑤ add outline, ⑥ replace color, ⑦ flip/rotate and ⑧ canvas size.

Tool groups

Tool list expanded by right-clicking the select group slot
① Fill group · ② Select group (small triangle in the bottom-right corner) · ③ Expanded group list (names and shortcuts)

Similar tools share one toolbar slot: ① Fill (fill, gradient) and ② Select (rectangle, ellipse, lasso, magic wand). Group slots have a small triangle in the bottom-right corner.

  • A plain click selects the tool shown in the slot.
  • Long-press or right-click to expand ③ the list of tools in the group.

Brush settings

Shared by the pencil, eraser, lighten/darken, dithering and color replace brush.

Brush settings of the pencil (circle, size 7)
① Brush shape (Square, Circle, Diamond) · ② Pixel shape preview · ③ Size
  • Shape: ① Square / Circle / Diamond. ② A preview of the actual pixel shape appears beside it.
  • ③ Size 1–32: drag the number field left/right or use [ / ].
Line width and pen shape settings of the Shape tool
④ Line width and pen shape of the Shape tool
  • ④ Line thickness and pen shape for the Shape tool are set the same way.
Lighten/darken tool settings
⑤ Lighten/darken Strength
Dithering pattern list expanded
⑥ Dithering Pattern: checker / sparse / dense
  • Lighten/darken has ⑤ Strength 1–50% (default 10%); Dithering has a ⑥ Pattern: checker (50%) / sparse (25%) / dense (75%).

Shape

Tool options of the Shape tool: shape buttons with the star selected, drawing hint, points and Fill
① Shape buttons · ② Drawing hint · ③ Per-shape count (star Points) · ④ Fill

The Shape tool (R) draws 11 shapes by dragging, from lines and curves to stars and cubes. The left button draws with the primary color and the right button with the secondary color (or erases, depending on options); line width, pen shape and symmetry work as in Brush settings.

  • ① Pick the shape to draw with the shape buttons. L switches straight to the Shape tool's line.
  • ② The line under the shape buttons explains how to draw the chosen shape and what Shift does.
  • ③ Set Corners (3–32) for the Regular polygon, Points (3–32) for the Star and Turns (1–10) for the Spiral.
  • ④ Turn on Fill (U) to paint the inside too; the shape button icons turn filled as well. Lines, curves and spirals can't be filled.
ShapeHow to draw
LineFrom where you press to where you release. Shift = 15° steps
CurveDrag to set both ends, release, then move the mouse to bend it (the middle of the curve passes through the mouse; it's only a preview until confirmed). Click the same button or press Enter to confirm; the other button, Esc or Ctrl+Z cancels. Shift = 15° steps while dragging the ends, and a circular arc through both ends and the mouse while bending
RectangleThe dragged box. Shift = square
EllipseAn ellipse that fits the dragged box. Shift = circle
Equilateral triangleThe dragged line becomes one side (drag right to point up, left to point down). Shift = 30° steps
Isosceles triangleFits the dragged box. Drag down for the tip on top, up for the tip at the bottom. Shift = equilateral proportions
Regular polygonWith the set number of corners (5 = pentagon, 6 = hexagon), fitted to the dragged box. Shift = keep it regular
StarWith the set number of points, fitted to the dragged box. Shift = keep it regular
SpiralA spiral that winds outward from the center to fill the dragged box; drag left to wind the other way. Never filled. Shift = square
CylinderTop ellipse, both sides and the front half of the bottom. Shift = square
CubeA cube with three faces in 2:1 isometric lines. Shift = square
Shape tool options with the line selected: Pixel steps Diagonal and Orthogonal
⑤ Pixel steps: Diagonal / Orthogonal
  • ⑤ Lines and curves have Pixel steps: Diagonal (default) also joins pixels diagonally for the thinnest line, while Orthogonal steps only sideways or up/down so every pixel touches the next by an edge.

Selection tools

All four selection tools create the same kind of selection. Once you have one, cut, copy, delete, flip, rotate, move, outline and replace color apply only inside it, and drawing is limited to it as well.

Canvas with the character's head selected by rectangle select
① Area selected with rectangle select (dotted border)
  • ① Rectangle / Ellipse select: drag to select (Shift = square/circle). Drag inside the selection to move its contents, and press Enter to drop.
Canvas while drawing an outline with lasso select
② Lasso select while dragging: the area to be selected (blue dotted line)
  • ② Lasso select: draw an outline and release; it closes back to the starting point. The area to be selected is shown with a blue dotted line while dragging.
Canvas with the hair selected by the magic wand, and its tool options
③ Hair area selected with the magic wand · ④ Magic wand settings (same as Fill)
  • ③ Magic wand: selects the area of similar color to where you click. ④ Settings are the same as Fill. To move it, use Move (V) or the arrow keys.
  • Right-click the canvas with a selection tool or press Ctrl+D = deselect.
  • Pressing M repeatedly cycles rectangle → ellipse → lasso → magic wand.

Fill

Fill tool options with the source list expanded
① Tolerance · ② Contiguous only · ③ Connect diagonally too · ④ Source list (labeled “Anchor”): Current layer / All visible layers
  • ① Tolerance 0–100%: 0 fills only the exact same color; higher values include similar colors.
  • ② Contiguous only: when off, fills every matching color (Shift+G).
  • ③ Connect diagonally too: connects areas in 8 directions.
Eyedropper tool options
⑤ Eyedropper source
  • ④ Source: current layer / all visible layers (the area is determined from the composite, but paint goes on the current layer). ⑤ The eyedropper has the same source setting.

Gradient

Canvas while dragging a gradient on a new layer under the character, and the gradient tool options
① Start point · ② End point (a guide line joins them while dragging) · ③ Gradient bar (top = opacity stops, bottom = color stops) · ④ Position and Delete · ⑤ Color · ⑥ Interpolation · ⑦ Color space · ⑧ Dithering · ⑨ Usage hint i icon

Drag on the canvas from the ① start point to the ② end point to paint in that direction (Shift = 45° steps). With a selection it paints only inside it; otherwise the whole cel.

  • ③ Gradient bar: opacity stops sit above the bar and color stops below. Click an empty spot to add a stop, drag to move it and press Delete to remove it.
  • You can edit the selected stop's ④ position % and ⑤ color (or opacity %).
  • ⑥ Interpolation: smooth / steps. ⑦ Color space: the space smooth blending runs in, RGB / HSL / OKLab / OKLCH. New gradients default to OKLCH; older settings and projects without a color space load as RGB. It applies to both the preview and the painting; steps and Bayer dithering still use only the stop colors. ⑧ Dithering: none / 2×2 Bayer / 4×4 Bayer (for pixel art that mixes with patterns instead of semi-transparency).
  • Settings are kept for the next launch. Usage hints such as how to drag are in the ⑨ i icon next to the Tool settings title; hover it to read them.
Preset menu opened by right-clicking the gradient bar
⑩ Save current gradient · ⑪ Saved presets (color strip under each name) · ⑫ Manage Gradient Presets
  • Right-click the bar for the preset menu: ⑩ Save current gradient… saves the current settings under a name, and picking one of the ⑪ saved presets (a gradient preview under each name; favorites come first) applies it right away. A preset stores the color and opacity stops, interpolation, color space and dithering; picked in a layer effect's color gradient editor it also applies the shape, angle, direction, repeat and animation.
  • The built-in presets are Rainbow, Repeating Rainbow (red at both ends), Sunset, Ocean, Transparent Fade, Fire, Forest and Grayscale. Deleted or edited built-ins can be restored on the Presets tab of Preferences.
Gradients tab of the Presets window
⑬ Preset list · ⑭ Add to favorites, Rename, Delete · ⑮ Preview and editor of the selected preset · ⑯ Save changes · ⑰ Asset Manager
  • ⑫ Manage Gradient Presets… (or Tools > Presets…) opens the Gradients tab of the Presets window. ⑬ Pick a preset from the list and ⑭ add it to favorites, rename or delete it, or ⑮ edit its stops and settings on the right while watching the preview, then press ⑯ Save changes.
  • ⑰ Asset Manager: opens the Asset Manager filtered to gradients.

Gradients from installed packages show the package name next to their name in the list, and Rename and Delete are off. Edit one and click Save as Personal Asset to keep the original as is and save a personal copy. Gradients of a package that is off are hidden from the gradient menu and the Presets window.

Transform mode (rotate/size)

Entering transform mode with Ctrl+T, dragging just outside the border to rotate, dragging the handles to resize, and dragging inside to move

Ctrl+T or Transform (rotate/size)… in the Edit menu. Rotate, scale and move the selection (or, with none, all painted pixels in the current cel) using the handles on the orange dotted border.

Transform mode with the head selected and rotated 18 degrees, and its tool options
① Inside (move) · ② Square handle (size) · ③ Just outside the border (rotate) · ④ Rotation center · ⑤ Apply · ⑥ Cancel · ⑦ Angle, width/height %, center X/Y · ⑧ Resampling
ActionResult
① Drag inside, arrow keysMove (1-pixel steps)
② Drag one of the 8 square handlesResize (Shift = keep ratio, Alt = from center; dragging past the opposite side flips)
③ Drag just outside the borderRotate (Shift = 15° steps)
④ Drag / double-click the orange rotation centerMove the rotation center / reset to center
Enter or ⑤ ApplyApply (one undo step)
Esc, Ctrl+Z or ⑥ CancelBack to before the transform
  • You can also enter ⑦ the angle, width/height % and center X/Y as numbers in Tool options.
  • ⑧ Resampling: RotSprite (default; rotated lines break less and no new colors are created) / Nearest.
  • Dragging repeatedly always redraws from the original, so it doesn't get mushy. Doing something else, such as switching tools or saving, applies it first.
Window after selecting four frames by their headers and pressing Ctrl+T
⑨ Four cels selected by frame header · ⑩ Handle box around the drawings of all cels · ⑪ Number of cels transforming together in the status bar
  • Transforming several cels at once: select ⑨ several cels in the timeline (for example frames 1–6 of one layer; frame-header and layer-name selections work too) and press Ctrl+T — every selected cel gets the same rotation, scale and move. ⑩ The handle box surrounds the drawings of all those cels, the canvas shows the current cel moving, and the other cels change when you apply (one undo step; Esc cancels them all). Empty cels and cels on locked layers are skipped. Dragging with the Move tool or nudging with the arrow keys also moves all selected cels together. ⑪ The status bar shows how many cels are transforming together.

Canvas size mode

In canvas size mode, dragging the handles to widen the canvas or shrink it to crop, and dragging inside the image to move it
Canvas size mode widening the canvas to 69×88 and cropping the bottom
① New canvas border (light-blue dotted line) · ② Area to be cropped (dimmed) · ③ Handle · ④ Inside the image · ⑤ OK · ⑥ Cancel · ⑦ Canvas width/height · ⑧ Anchor at canvas center · ⑨ Stretch with 9-slice and middle fill (off here because the sample has no 9-slice borders) · ⑩ Image width/height · ⑪ Keep image ratio · ⑫ Image position X/Y · ⑬ 9-direction anchor

Ctrl+Alt+C or Canvas size… in the Edit menu. Set the new size and image position right on the canvas instead of in a dialog. The canvas border is a ① light-blue dotted line and ② areas to be cropped are dimmed.

ActionResult
③ Drag a handleMoves only that canvas edge (adds margin or crops the image)
Ctrl+drag a handleAlso resizes the image (Ctrl+Shift = keep ratio). With Stretch with 9-slice on, the image is stretched or shrunk with 9-slice
④ Drag inside the image, arrow keysMove the image within the canvas
Enter or ⑤ OKApply (one undo step)
Esc, Ctrl+Z or ⑥ CancelExit without changes
  • Tool options: ⑦ canvas width/height, ⑧ Anchor at canvas center, ⑨ Stretch with 9-slice and the middle fill (Stretch / Tile), ⑩ image width/height %, ⑪ Keep image ratio, ⑫ image position X/Y, ⑬ 9-direction anchor.
  • Applies to all frames and layers; parts and pivots are adjusted as well.

Stretch with 9-slice

Setting the green lines with the 9-slice tool, then stretching and shrinking with 9-slice in canvas size mode, and switching the middle fill to Tile so the middle pattern repeats
  • When the frame (or a part) has 9-slice borders, ⑨ Stretch with 9-slice is on by default. The controls are the same as in the table above (plain drag = margin, Ctrl+drag or image width/height = image size); when the image is resized, corners stay as they are, edges stretch in one direction only and only the middle grows, like a Unity UI image with Image Type = Sliced. When it's off or there are no borders, the whole image is scaled nearest-neighbor.
  • Middle fill: Stretch = nearest-neighbor stretch or shrink (Unity Sliced), Tile = repeat the original pattern at its size (Unity Tiled — good for patterned middles).
  • While dragging, the borders are shown as green dotted lines, and the image can't get smaller than both borders plus one pixel.
  • After applying, the L, T, R and B values stay the same number of pixels from the image edges (plus any margin you left), so the Unity Sprite Border still matches. Parts with their own borders are stretched with those, and pivots follow the same mapping.

9-slice

Sample UI button (32×20) with the four green 9-slice lines, and the tool options
① Four green lines (L5, T5, R5, B6) · ② L, T, R, B values · ③ All 0 · ④ Target (every cell of the frame sheet)

Sets the Unity Sprite Border. ① Four green lines appear on the canvas; drag them to change ② the L, T, R and B values. In Tool options you can enter numbers or reset with ③ All 0.

With a part selected it applies to that part; otherwise to every cell of the frame sheet (④ Tool options shows the target). When scaled up, everything outside the lines (corners and edges) stays the same and only the center stretches, which suits UI buttons and panels used with Image Type = Sliced in Unity. You can resize the image the same way inside Chickxel with Stretch with 9-slice in canvas size mode.

Files · saving · export

File types

FileRole
.chickxelThe editable source. Layers, effects, frames, tags, parts, skins, outfit presets and export settings are all stored only here.
Exported images (PNG)The output, used in Unity or other programs.
.metaUnity settings (sprite cells, pivot, etc.).
.spriteLibUnity Sprite Library. Created only when turned on (see Parts · skins).
.chickxel-assetAsset package. Bundles effect recipes, gradients and script effects for installing and sharing with the Asset Manager.

Projects saved by this version use a new .chickxel format (format version 4) that stores effects by stable type IDs, so older versions of Chickxel can't open them. Older projects and custom effects open as before. Effects this version doesn't know (for example, ones added in a newer Chickxel) aren't drawn but are kept when you save, and script effect sources are saved inside the project file (see Script effects).

Saving

The File menu opened, with Save (+ export sheets) marked 1
① Save (+ export sheets) in the File menu — Ctrl+S
The status bar after saving, with the message about the saved file and exported sheet marked 2
② The status bar after saving: the saved .chickxel and the exported sheet and cell count

Saving the .chickxel with Ctrl+S (① File > Save (+ export sheets)) also exports the image and .meta, depending on your settings, and ② the status bar shows the result. A .meta is created when the file is inside a Unity project's Assets or already has a meta. Existing guids and spriteIDs are kept by name, so references on the Unity side don't break.

The Save failed dialog, with the message that the project was saved but the sheet export failed marked 3
③ The project was saved but exporting the sheet/.meta failed (Save failed)

If the .chickxel was saved but only the image export failed (for example because another program has the file open), ③ you're told about it.

If saving or opening a project takes a while, a dark translucent overlay covers the whole window until it finishes. A box in the middle shows Saving or Opening, a spinning loading icon, the percentage with a progress bar and Editing is paused until this finishes. Meanwhile drawing, shortcuts and file drops are ignored and other windows (such as the AI chat) are disabled; AI tool calls run once it finishes. Closing the window then closes it after the save completes.

Autosave

The status bar with the Autosaved message marked 1
① The Autosaved message in the status bar after an autosave

On by default. After 3 seconds without edits, it saves without asking, just like Ctrl+S (including export), and shows Autosaved in ① the status bar.

  • It waits while you're drawing, dragging, transforming or while the AI is working.
  • It only saves files that already have a .chickxel on disk. New projects and imported PNGs must be saved manually once.
  • Autosave writes in the background without the overlay, so you can keep editing while it saves; changes made meanwhile go into the next autosave. Only very large documents (over about 768 MB of pixels) show the overlay during autosave too. Saving, exporting, Revert to saved or closing the window during an autosave continues once the autosave finishes.
The Save group of the General preferences, with the Autosave check box marked 2 and the seconds field marked 3
② Autosave on/off · ③ Wait time in seconds
  • ② Turn it on/off and change ③ the wait time (1–600 seconds) in Preferences > General.

Revert to saved

The revert button at the bottom of the toolbar after an edit, marked 1
① The revert button at the bottom of the toolbar, enabled after an edit (status bar: Modified)
The File menu opened, with Revert to saved marked 2
② Revert to saved in the File menu
The Revert to saved confirmation, with the Yes button marked 3
③ The confirmation to discard unsaved changes — Yes reverts

① The button at the bottom of the toolbar or ② File > Revert to saved discards unsaved changes after ③ confirmation and reopens the file. The current layer, frame and zoom stay the same. The revert itself can't be undone.

Undo history that survives closing

On by default: even after closing a file or quitting the app, you can keep using undo and redo when you reopen it. History is kept only up to the saved state; changes discarded with "Don't save" aren't kept. The history is stored separately in the app settings folder, not in the .chickxel.

The Undo history group of the General preferences, with the keep-history check box, retention period, max size and Clear all history marked 1 to 4
① Keep undo history after closing files · ② Retention period · ③ Max size · ④ Clear all history

① Turning it on/off, ② retention period (default 30 days), ③ maximum size (default 500 MB) and ④ Clear all history are in Preferences > General.

Opening (importing) PNGs

Opening a PNG imports it as a project. If a .chickxel with the same name exists, or a project in the same folder exports that PNG, that project opens instead.

  • If the meta contains cell information and the cells differ in size, it's imported as parts (one group + one part per cell).
The Import PNG dialog, with As parts marked 1 and As animation frames marked 2
① As parts · ② As animation frames
  • If all cells are the same size, you're asked to choose "① As parts / ② As animation frames".
The Frame·Layer menu opened, with Split into frames by grid marked 3
③ Split into frames by grid in the Frame·Layer menu
The Split into frames by grid dialog with the method list open, marked 4
④ Split method: Grid - cell size / Grid - cell count / Auto (per blob)
The Split into frames by grid dialog, with the cell size, cell count and auto minimum size rows marked 5 to 7
⑤ Cell size (Cell width · Vertical) · ⑥ Cell count (Columns · Rows) · ⑦ Auto: minimum size
  • Sheets without cell information can be split with ③ Frame·Layer > Split into frames by grid: ④ pick the method and split by ⑤ cell size, ⑥ cell count or ⑦ automatically (by blobs).

Opening images, animations and videos

The File menu opened, with Open marked 1
① Open (.chickxel · image · GIF · video)… in the File menu — Ctrl+O
A new document from an animated GIF, with the new tab, the layer named after the file and the four frames marked 2 to 4
A new document from an animated GIF (slime_bounce.gif, 4 frames): ② new tab · ③ one layer named after the file · ④ one frame per image frame (120 ms kept)

① File > Open (.chickxel · image · GIF · video)… (Ctrl+O) lets you pick several files at once and opens each in ② its own tab. Images other than PNG (JPG, BMP, GIF, WebP, ICO, animated PNG) become a new document: canvas = image size, ③ one layer named after the file, ④ one frame per image frame.

  • Frame durations come from the file (0–10 ms become 100 ms, like browsers). Transparency is kept, and partial GIF/APNG frames with their disposal (restore to background / previous) are composited so every frame is a complete picture. Photos follow their EXIF rotation.
The question shown for an image with more than 300 frames, with its three buttons marked 5
⑤ The question for an image with more than 300 frames (Open all / First 300 only / Cancel)
  • Files with more than 300 frames ask ⑤ "Open all / First 300 only / Cancel".
  • There's no .chickxel yet, so the first save asks where to put it. Clicking in the file browser, recent files and dropping on the window open files the same way.
The Video (ffmpeg) tab of Preferences, with the tab, the ffmpeg executable field and Browse marked 6 to 8
⑥ The Video (ffmpeg) tab of Preferences · ⑦ ffmpeg executable (empty = find automatically) · ⑧ Browse…
  • Videos (MP4, WebM, MOV, MKV, AVI, …) and AVIF/HEIC images need ffmpeg (not included with Chickxel and never downloaded automatically — ffmpeg.org, or winget install Gyan.FFmpeg on Windows). It's found automatically on PATH or in common install locations; otherwise choose ⑦ the executable in ⑥ Edit > Preferences… > Video (ffmpeg) with ⑧ Browse….
The Import video dialog, with range, frames per second, max frames, size, Smooth, estimate and Import marked 9 to 15
Import video (example: 8.4 s, 1280×720, 30 fps): ⑨ Range · ⑩ Frames per second · ⑪ Max frames · ⑫ Size · ⑬ Smooth · ⑭ Estimate · ⑮ Import
  • Opening a video first shows the Import video window: ⑨ range (start–end seconds), ⑩ frames per second (default: the video's, at most 12), ⑪ max frames (default 120), ⑫ size (original / fit long side — turn ⑬ Smooth off to keep pixels crisp), and ⑭ an estimate of frames, size and memory. ⑮ Import shows a progress window you can cancel; each frame lasts 1000 ÷ frames per second.

Dropping images onto the canvas

The canvas while dragging an image: the edge lights up and the dashed rectangle for the heart image is marked 1
While dragging: the canvas edge lights up and ① a dashed rectangle shows where the image goes

Drag images (PNG, JPG, BMP, GIF, WebP, APNG, …) or videos from Explorer/Finder or the file browser onto the canvas and each file becomes a new layer. While dragging, the canvas edge lights up and ① a dashed rectangle shows where the image will go.

The whole window after dropping a heart image, with the new heart layer, the transform handles and the status bar hint marked 2 to 4
After the drop: ② new layer named after the file (heart) · ③ transform mode right away · ④ status bar hint (Enter applies, Esc keeps it as inserted)
  • ② The new layer is added above the current layer and named after the file (without the extension). Several files stack in drop order, and the last one ends up on top as the current layer. With a part or group selected, it goes above that group, like Add layer.
  • The image is placed with the pixel you dropped on at its center, in the current frame, with its colors unchanged; anything outside the canvas is cut off. An image larger than the canvas is centered on the canvas and you're told it was cut — to keep all of it, enlarge the canvas first in Canvas size mode.
  • Animated GIF, WebP and APNG files and videos (after the Import video window) go into one layer starting at the current frame; if there aren't enough frames, new ones are added at the end (with the image's or video's frame durations).
  • The whole drop is a single undo step (Drop image).
  • Dropping outside the canvas (file list, start screen, tab strip, panels) doesn't add layers — each file opens in its own tab. Dropping only a .chickxel on the canvas opens it in a new tab too.
  • A single-frame image goes straight into ③ transform mode (the last one if you drop several; ④ the status bar explains the keys): the whole uncropped image is held, so move or resize it and press Enter to apply — parts outside the canvas are cut only then — or Esc to keep it as inserted (insert and transform are two undo steps). Multi-frame images are inserted without transform mode.

Cleaning up old outputs and renaming files

The status bar after saving with a new export name, with the notice about moving the old output to the app trash marked 1
① Saved with a new export name: the status bar notes the old output moved to the app trash
The file list context menu, with Restore last deleted marked 2 and View app trash marked 3
File list context menu: ② Restore last deleted (Ctrl+Z) · ③ View app trash…
The App trash window, with the old output moved on save marked 4 and Restore marked 5
App trash: ④ the old output moved on save (Export cleanup) · ⑤ Restore

Old output files (and their .meta) that are no longer produced because you changed the export method or name are moved to the app trash on the next save, with ① a notice in the status bar. Restore them with ② Ctrl+Z in the file list or ③ View app trash (in the app trash window, pick ④ the entry and press ⑤ Restore).

Renaming or deleting a .chickxel in the file browser also moves the outputs exported under the default name and their .meta, or sends them to the app trash. Unity guids are kept.

Only files recorded as exported by Chickxel itself are cleaned up. Files you created yourself, or files with a custom export folder or name, are never touched.

Export cell names

The timeline frame context menu, with Export cell name marked 1
① Export cell name… in the frame header context menu
The Cell name dialog, with the name field marked 2
② The cell name field — empty uses the rule ({Tag}_{Number})

Right-click a frame in the timeline and set ① Export cell name…. ② If left empty, the {Tag}_{Number} or {File}_{Number} format is used. The overall rule is set under "Cell naming rule" in the export dialog.

Save prompt on quit

The Unsaved changes dialog with two files, with the file list and the three buttons marked 1 to 4
① Unsaved files (check the ones to save) · ② Save selected files · ③ Don't save · ④ Cancel

When you close the window or quit the app, ① unsaved files are gathered in a single dialog with their thumbnails and names.

  • ② Save selected files: saves the checked files (including export) and quits. If any save fails, the app doesn't quit.
  • ③ Don't save: quits without saving.
  • ④ Cancel: doesn't quit.

Preferences

The Edit menu opened, with Preferences marked 1
① Preferences… in the Edit menu — Ctrl+,

Change settings in ① Edit > Preferences… (Ctrl+,).

The General tab of Preferences, with the tab, undo steps, undo history, autosave and app trash retention marked 2 to 6
② General tab · ③ Undo steps · ④ Undo history · ⑤ Autosave · ⑥ App trash retention
  • ② General: ③ undo steps (default 1000, max 10000), ④ undo history retention, ⑤ autosave, ⑥ app trash retention, and more.
The Shortcuts tab of Preferences searching for save, with the tab, the Change/Add/None/Default buttons, the search box and the JSON buttons marked 7 to 10
⑦ Shortcuts tab · ⑧ Change · Add · None · Default · ⑨ Search (e.g. save) · ⑩ Export / Import (JSON)
The shortcut conflict question, with Yes marked 11
⑪ Asked when the key (Ctrl+S) is used by another command — Yes removes it there and assigns it here
  • ⑦ Shortcuts: ⑧ change, add, clear or reset the key for any command or tool, with ⑨ search. You're ⑪ asked if a key conflicts with another command. ⑩ Export and import as JSON (see Shortcuts).
  • Presets: Restore auto optimize presets and Restore gradient presets add back built-in presets you deleted and reset edited built-ins to their original values. Presets you made and favorites stay. The presets themselves are managed in the Gradients and Auto optimize tabs of Tools > Presets….

Settings file location:

OSLocation
Windows%AppData%\Chickxel\settings.json
macOS~/Library/Application Support/Chickxel/settings.json

Export setting presets are in export-presets.json in the same folder.

When errors occur

The unexpected error dialog, with the message and log file name, Open log folder and Report on Discord marked 1 to 3
① The unexpected error dialog (example error, with the log file name) · ② Open log folder · ③ Report on Discord

Even when an unexpected error occurs, the app doesn't quit; it shows ① a "You can keep working" dialog. Details are logged in Chickxel/Logs in the settings folder (last 20).

The Help menu opened, with Open error log folder marked 4
④ Open error log folder in the Help menu
Find the logs with ④ Help > Open error log folder (or ② Open log folder in the error dialog). Report right away with ③ Report on Discord in the error dialog or see Feedback, and please attach that file. If the error forces the app to quit, modified documents are saved separately in Chickxel/Recovery/.

Pixelate AI images

AI-generated "pixel-look" images have inconsistent pixel sizes (e.g. 7–9 px), blurred edges, JPEG noise and hundreds of colors. This window turns such images (with a solid or transparent background, or sprite sheets with several frames) into clean pixel art.

Opening

The AI menu open
① Pixelate AI image…
The empty Pixelate window opened without a source
② Message in the middle · ③ Browse… · ④ Apply (off) · ⑤ Auto optimize (off)
  • ① AI > Pixelate AI image…: opens an empty window. As ② the message in the middle says, drop an image on it, paste one with Ctrl+V, or ③ Browse… for a file (PNG, JPG, BMP, GIF, WebP). ④ Apply and ⑤ auto optimize stay off until there's a source.
The AI menu showing Pixelate current layer…
⑥ Pixelate current layer…
  • ⑥ AI > Pixelate current layer… (right below Pixelate AI image…): uses the current layer as the source. If several frames have content, they're joined side by side and split as a grid, one cell per frame.
Right-click menu of an image file in the file browser
⑦ Image file · ⑧ Pixelate AI image…
  • In the file browser, right-click ⑦ an image file > ⑧ Pixelate AI image…: opens with that file as the source.
The bar under the source with a source loaded
⑨ Replace source

Loading or replacing the source: drop an image file anywhere on the window (the first image if several), press Ctrl+V outside text boxes (an image file copied in Explorer or an image file path as text first, otherwise the clipboard image), or Browse… (starting in the folder selected in the main window's file browser). With a source loaded, ⑨ Replace source in the status row, or another drop or paste, swaps it: candidates, preview and optimizer results are cleared, the frame split is applied again to the new image and everything is built again. The window can stay open while you do other things, such as using the AI chat.

When a source comes in, the frames are split once with the current method, and each preset checked in the Auto Optimize Settings window runs once with its saved settings, giving one tile per preset in the candidate row (marked As set (score)). The tile of the preset that is open is selected. With Auto optimize on load (off by default) turned on, all checked presets are auto-optimized instead. If no preset is checked, or the window was opened with AI drawing's View conversion settings, only the current settings run once (Current settings).

Pipeline settings

Left side of the window with the settings column collapsed
① Settings column bar

The settings are in a left column that starts collapsed to a thin vertical bar, so the preview and candidates get the room. Click ① the bar (settings icon and arrow) to slide it open, and again to collapse it; the state is remembered. At the top of the column is the preset bar, which stays in place while the settings scroll (Presets and Clean up), followed by 0. Optimize criteria (Auto optimize), steps 1–8, Output and AI (experimental). Each step can be collapsed, and steps with an Optimize check in their header decide whether Clean up and Auto optimize try other values for that step. Changing a value doesn't rebuild anything — press Clean up to see the result of the new values.

Background and frames

Settings column with 1. Background and 2. Frames expanded
② 1. Background · ③ 2. Frames
  • ② Background: Keep · Auto (the most common border color; if the border is mostly transparent, the existing alpha is used) · Pick color. Tolerance (RGB distance, Auto from border noise), Only background connected to the border (flood fill from the border, so near-black outlines touching a black background and eyes are kept), use existing transparency, alpha threshold, speck size (small detached specks are removed).
  • ③ Frames: Single · Auto (split by fully empty rows/columns; small detached pieces such as effects are merged into the nearest frame within a distance; sprites that touch or overlap sideways, so no empty column separates them, end up as one piece much wider than the others and are parted at the thinnest vertical line) · Grid (columns × rows — pixels aren't cut along the cell lines but assigned by connected blob, so hands and feet crossing a cell line don't leave fragments at the edge of the neighbouring frame; two touching sprites are parted at the thinnest spot near the cell line). Align bottom-center (default) · center · keep offsets; all frames get the same canvas size. The frames are split once with the current method when a source is loaded or replaced; after that, changing the split values or running Clean up or Auto optimize keeps the last applied boundaries. Press Apply frame split to split again with the new values (candidates are rebuilt too). You can also drag the frame boundaries directly in the source view (Source and preview).

Pixel grid and output size

Settings column with 3. Pixel grid and 4. Output size expanded
④ 3. Pixel grid · ⑤ 4. Output size
  • ④ Pixel grid: Pixel size from chooses Auto (best edge match) · Outline thickness · Color edges · Block edges (used when cleanup's Fit outline to 1 px is Thin outline only, Redraw as vector or Off; disabled with By shrinking). Pixel sizes from 3 to 256 px are measured, so blocks enlarged past 100 px are found at their real size too. Color edges estimates the pixel size as a decimal from run lengths between color changes, tolerant to jitter and preferring the finer of two harmonics. Outline thickness measures the dark band touching transparency across many horizontal and vertical sections and picks the size at which the outline becomes 1 px. Block edges ignores weak texture such as paper grain (only neighbor OKLab differences above the image's noise level count) and picks the spacing at which strong color edges line up within a row (preferring the full block even when half blocks are mixed in), and the cell lines follow those strong edges too. Auto uses block edges when the block spacing is clear, otherwise fits cell lines for each of the three values and picks the one that best matches the source's strong edges (the match has the chance level removed — what the same edges give after shuffling their positions — because larger cells have more room to land on an edge by chance; on a near tie: outline, then block edges, then color edges, and a value that is 2× or 3× the chosen one and matches about as well wins). By shrinking only picks among values within ±12% of the outline thickness (a half-block value would make the outline 2 px) — unless the outline is thinner than a pixel (e.g. a blurred 1-px rim) and a larger value matches clearly better, then it shrinks to that. Clean images with at most 256 colors use the exact integer factor they were enlarged by (2–256), and 1-px pixel art (including flat fills with 1-px outlines) uses 1. Noisy or JPEG images with more than 256 colors are still detected when they are pixel art at original size (1-px cells) or 2× (2-px cells) (the reason reads "{n}px cells of noisy pixel art"). Cell boundaries are then fitted onto real edges even when cells vary 7–9 px. The pixel size and boundaries are always found per frame (output by scale factor or fixed size and refitting use each frame's boundaries too), with a jitter allowance %. Manual takes a pixel size and X/Y offset; Use detected as manual copies the auto result. The detected size, offset and edge fit % are shown, along with the three values, their edge match, the chosen one and why, e.g. "Color edges 5.75px (3%) · outline 24.75px (9%) · block edges 19px (8%) → Outline thickness (edge match 9%)". With By shrinking it shows "By shrinking: only values within ±12% of the {o}px outline are used, shrinking to a {s}px pixel size" (or "the {o}px outline is thinner than a pixel … so it shrinks to {s}px"); with Thin outline only or Redraw as vector, when the outline is about an integer multiple (2× or more) of the pixel size, an "outline is drawn {n} pixels thick…" note is added. Local cell correction (on by default) re-fits the image-wide cell boundaries per band (2 cells by default) to the strong block edges in that band (each boundary within Max shift, 35% of a cell by default; cell widths 70–130% of the original; smooth between neighboring bands) — so images drawn half a cell off in places are followed too. Boundaries are straight inside a band, so cells stay rectangles and the boundaries bend where bands change. Each band counts color edges that continue over several rows, drops short 1–2 px noise and weights high-contrast edges more, so sharp, continuous edges are matched first. When two sharp edges fall within one cell spacing (e.g. two black→skin edges 5 px apart), one cell line can't fit both. It is skipped when the average cell size is below Minimum cell size (px) (default 4 px, 1–16 px).
  • ⑤ Output size: From pixel size · Fit a fixed size (W × H, e.g. 32/48/64, keep aspect, padding) · Scale factor. Auto next to the mode is the same setting as Auto in the bar under the source (off = fit a fixed size, on = the last automatic mode).

Optimize grid fit first at the top of 3. Pixel grid (saved with the preset) makes Clean up and Auto optimize first try only the grid values (pixel size, size jitter, pixel size source and local correction; offset X/Y for a manual grid) to find the grid with the best cell split score, then keep that grid while optimizing the other steps that have Optimize on. The cell split score looks only at the source and the cell boundaries: it is the average of Cell edge fit (higher when the cell lines miss none of the source's strong edges and the lines crossing the sprite lie on source edges — cells smaller or larger than the real ones both score low) and Cell color purity (higher when each cell's interior holds only similar colors). When other steps are optimized too, the grid stage uses up to half of the trial and time budget, and while this is on the Optimize check in the 3. Pixel grid header is disabled (this check takes its place). Preview cells next to it adds a tile of that name at the front of the candidate row and selects it, showing the cell boundaries over the source (grid view is turned on) — with the check on it runs only the grid stage, with it off it runs once with the values as set; the grid values it finds are loaded on the left but never written into a preset. Add to auto pixel size (px) and a manual grid's offset X/Y depend on the image, so Clean up uses them but presets and the settings remembered for next time don't store them (changing only these doesn't turn the save button red).

Cell color and palette

Settings column with 5. Cell color and 6. Palette expanded
⑥ 5. Cell color · ⑦ 6. Palette · ⑧ Color distance · ⑨ Prefer shade family
  • ⑥ Cell color: most frequent color after light snapping (default) · median · center pixel · mean · Center-weighted mean (the cell's center counts more) · Dominant-color weighted mean (groups similar colors and averages only inside the dominant group, so different fills such as skin and black clothing aren't mixed). Ignore cell border %, transparency threshold %. Color snap step is used only by most frequent color and dominant-color weighted mean.
  • ⑦ Palette: the methods are OKLCH grouping (default) · k-means (OKLab) · Median cut · Existing palette (palettes from the palette column and Lospec favorites) · Keep original colors · Distance grouping. OKLCH grouping merges colors whose lightness, chroma and hue differences are all within Group within L · C · H° (default 0.1 · 0.1 · 20) into one color — the color that groups the most pixels becomes a center first, a color within reach of several centers joins the nearest, and hue is ignored for near-gray colors. Distance grouping merges colors the same way when their difference measured with ⑧ Color distance is within Group radius (default 0.04, 0.005–0.3). Because OKLCH grouping ignores the hue of grays, a light gray can end up grouped with an apricot of the same lightness; distance grouping with CIEDE2000 as the color distance groups it with the white it looks like instead. With these two methods the limits decide the color count, so Colors and Auto are disabled. k-means and median cut use a color count of 2–64 or Auto (the elbow of the error curve, raised until small salient colors such as a red scarf are kept); the built-in preset Fewer colors (16) uses k-means with 16 colors. Don't optimize next to the method (only when the Palette step's Optimize is on; saved with the preset) keeps the palette method when optimizing and tries only that method's other values (color count, grouping range and so on). Palette colors (k-means, median cut and the two grouping methods): Original colors (default — after grouping similar colors, each group uses the cell color actually used most, so blurred edge colors can't pull a white robe toward grey) · Average colors (the group average, the old behavior). Edge cell weight 0–1 (0.25 by default, original colors only): when grouping colors and picking the auto color count, cells touching transparency and blurred cells between two neighbor colors (including between the outline and a fill) count only this much. One palette for all frames (default), dither None (default) · Bayer 2×2 · Bayer 4×4 (same as converting to palette colors) — Don't optimize next to the dither (on by default) keeps optimizing from changing the dither (a dither pattern's average color is close to the source, so it easily raises the score, yet zooming in shows a checkerboard or stray colored dots). Snap near-black colors to one outline color (the most-used palette color at or below the outline darkness — with original colors, an actual cell color). Dithering mixes two palette colors in light intensity (linear light) and compares the mix with the source in OKLab to set the ratio (e.g. a half black, half white pattern stands for sRGB 188 gray). The pattern is used only when the mix is still closer to the source than the nearest single color after adding how visible the pattern is (the lightness difference of the two colors counts fully, hue and chroma differences count half), and colors within a just-noticeable difference (OKLab 0.02) of a palette color are not dithered.
  • ⑧ Color distance (palette): the distance used when cells take a palette color (without dithering), for pinned-color matching, excluded-color replacement, the original-color pick and Distance grouping (the score uses the scoring color distance in 0. Optimize criteria). OKLCh hue-weighted (default — hue differences count more by the hue weight. The hue weight is 0–1000, default 2: 0 ignores hue differences, 1 equals OKLab distance, and very large values almost always pick a color of the same hue family first, before lightness and chroma) · CIEDE2000 · OKLab (the old straight distance). k-means and OKLCH grouping stay in OKLab, and dithering (Bayer) compares the light-blended mix in OKLab (see ⑦ Palette). Keep distinct hues (on by default): if a source color group with enough chroma (default 0.04) and area (default 4 cells) would turn into a palette color whose hue differs by 20° or more (e.g. small apricot ear shading → gold), that color is put in the palette — added with an automatic count, or swapped for the least important color with a fixed count (at most a quarter of the palette; pinned colors are never swapped). In-between colors blurred between two palette colors are not added. Optimizing the Palette step tries other values for both.
  • ⑨ Prefer shade family (on by default, under the color distance): if a palette color has a similar hue and chroma to the cell color (a lighter or darker shade of the same color), the cell takes the family member with the nearest lightness instead of a different-hue color of similar lightness. Dithering also never mixes in a chromatic color of a different hue — deep apricot hand shading no longer turns gold or gets gold dots. Optimizing the Palette step tries it on and off.

Cleanup and outlines

7. Cleanup with the Fit outline to 1 px list open
⑩ 7. Cleanup · ⑪ Fit outline to 1 px list
  • ⑩ Cleanup: remove orphan pixels (with a max contrast so pupils survive), fill 1-px holes, outline (as is · unify to the darkest color · ensure a closed 1-px outline), reduce L-corner doubles on outlines, ⑪ Fit outline to 1 px: By shrinking (default — the pixel size becomes the outer outline thickness, so the whole sprite scales down and the outline becomes 1 px; leftover double pixels get one light thinning pass; a manual grid size wins; the pixel size starts from the measured outline thickness so the outline band is exactly one cell, and may only move to a larger value that clearly fits the edges better, never to a smaller one such as half the thickness (a 2-cell outline); the thickness is measured at outline darkness 0.24 even if you lower it) · Thin outline only (keeps the grid's pixel size and peels up to 3 outline layers doubled inward, never breaking the line and leaving inner dark shapes such as eyes alone) · Redraw as vector (keeps the grid's pixel size like Thin outline only, traces the center line of the outline band touching transparency in the background-removed source, simplifies it and redraws it through the actual cell boundaries as a 1-px pixel-perfect line; old outline cells off the new line become transparent outside and the nearest inner color inside, so no double outline remains, and small dark shapes not touching the outline such as eyes stay; adjust with Vector simplify (px) and Keep small blobs (cells)) · Off.

Frame consistency

8. Frame consistency
⑫ 8. Frame consistency
  • ⑫ Frame consistency: match neighbor frames — pixels that differ slightly from identical previous and next frames take that color.

Presets and Clean up

The preset bar with the preset list open
① Preset list · ② Save preset · ③ Rename · ④ Copy · ⑤ Delete · ⑥ Clean up

A preset holds the settings of steps 1–8 (without pinned and excluded colors), each step's Optimize check and 0. Optimize criteria. The preset bar at the top of the settings column stays in place while the settings scroll.

  • ① Choosing a preset in the list only loads its values on the left; nothing is rebuilt. If there are unsaved changes, choosing another preset asks whether to save them (Cancel keeps the current one). New preset at the end of the list makes a new preset from the current values; it joins the list when you save it.
  • ② The save button turns red when the values on the left differ from the chosen preset and is disabled when they match what's saved. Click it to save the current values to the chosen preset.
  • ③ Rename, ④ Copy (saves name copy 1 with the current values right after the chosen preset and selects it — 2, 3… if the name is taken; copying a copy just raises the number on the original name; the Auto optimize check starts off), ⑤ the red Delete (the last preset can't be deleted).
  • ⑥ Clean up (the green play icon) runs the chosen preset once with the current values on the left and replaces only its tile in the candidate row (other candidates stay; with no tile of that name, a new one is added at the front). If any step has Optimize on, only those steps are auto-optimized (starting from the values shown, with the budget and scoring of 0. Optimize criteria); otherwise it cleans up once as set (the tile shows As set (score)). Run with a saved preset as is, the values found are written straight into that preset (if it's open, the values on the left follow while it runs; Revert reverts the preset too); with unsaved edits it runs as a preset name (modified) tile and leaves the preset unchanged (an unsaved new preset uses its own name, and with no preset chosen the tile is Current settings). Changing values or choosing a preset never rebuilds by itself.
The Rename the chosen preset window
⑦ Preset name

Rename asks for ⑦ the preset name. If another preset already has that name (ignoring case), it says so and asks again.

The built-in presets are Default · Small sprite (32px) · Fewer colors (16) · Keep original colors without optimization, and OKLab · Quick check · Faithful to source · Clean pixels · Same hue family with optimization on; all of them use no dithering. All can be edited and deleted, and Reset in the Auto Optimize Settings window brings back the installed state (Auto optimize). Presets are stored in the app settings, and the last settings and chosen preset are remembered.

On the bundled sample (a 4-frame walk cycle, 2172×724 px) the outline is 16.3 px thick (color edges 8.25 px, block edges 15.5 px). The default By shrinking gives cells of about 16 px, about 29×35 per frame, about 24 colors and about 99% of outer outline pixels 1 px thick (with local cell correction; about 96% without); Thin outline only with pixel size from Color edges gives cells of about 8 px and about 99% (with Auto the outline thickness ties on edge match, so 16 px). The OKLab distance (local correction off) from the source's 10 most-used colors to the nearest palette color averages 0.011 (max 0.025) with original colors and 0.013 (max 0.026) with average colors.

Candidates and scores

Selected candidate line, score breakdown, one tile per preset and a not-yet-run preset tile at the end
① Candidate tiles · ② Outline fit mode · ③ Preset name · ④ Score breakdown · ⑤ Preset tile not run yet (Not run yet)

The candidate row holds one tile per preset — after a source is loaded, the checked presets run as set (Opening); after Clean up or Auto optimize, their results. ① A candidate tile shows a thumbnail, ③ the preset name, the color count, size and frame count, and ② the outline fit mode; the blue text at the bottom is why the tile was made and its score (As set (73.4), or for an optimized result the stop reason from Auto optimize). The line under the preview shows the selected candidate as preset name · score · pixel size · colors · size · frames.

  • ④ The selected candidate's score breakdown (each item's value, badness % and weight) is shown under the preview.
  • The score (0–100, computed without AI) is a weighted sum of fidelity (the result compared cell by cell with the background-removed source — computed as described in the background item under Source and preview), orphan pixels, outline gaps, 1-px outline (the share of outer outline pixels that are only 1 px thick; doubled bands of 2 px or more count against it; default weight 4, the largest after fidelity — measured on the final placed result pixels, at outline darkness 0.24 even if you lower it, so leaving black outlines uncounted earns nothing; 1-px lines running inward from the outline are not doubling), color count vs. target, frame consistency, grid fit and Block repetition (the share of edge cells, judged by each cell's average source color, that sit in a same-color 2×2 block — close to 1 when the pixel size is half the real pixel or less so the result is still an enlarged image; dithering can't hide it; fine up to 65%, worst at 95%; default weight 2). The weights and target color count are set per preset in 0. Optimize criteria (Auto optimize), and each candidate is scored with the criteria of the preset that made it. When the selected result's long side exceeds 256 px, "Large result ({w}×{h}) — check the pixel size" is shown under the preview.
  • ⑤ Presets checked in the Auto Optimize Settings window that have no result yet hold a place at the end of the candidate row as empty tiles (preset name · Not run yet). They show even before a source is loaded, appear as soon as you check a preset and disappear when you uncheck it (tiles that already have a result stay). Right-click an empty tile > Run only this preset to run just that preset (once the first preparation is done and nothing else is running); its result takes that place.
  • Click a candidate tile to select it and load its settings on the left. For a preset tile the preset list switches to that preset too, and each step's Optimize check, 0. Optimize criteria, and the output size Auto and size become the values the tile was run with. For a tile run from a saved preset as is, the save button turns off; for a tile run with modified values, it turns red. If you've edited values on the left and not yet pressed Clean up, clicking another tile asks whether to save them first (Cancel keeps the current selection). Double-click a tile to apply it right away.
  • Running tiles (Clean up, Rerun, Auto optimize and the first candidate row) have a slowly blinking yellow border, and their thumbnail shows the best result found so far whenever it improves. Click a running tile to see that best result in the large preview, the source's cell boundaries and the enlarged view; it follows the best as it changes (the selected candidate line shows (running)). Colors can't be excluded or pinned meanwhile, and when that preset finishes its result tile is selected (if it ends without a result, the tile you had selected before comes back).
Tooltip over a candidate tile
⑥ Score breakdown in the tooltip
  • ⑥ Hovering a candidate tile shows a tooltip with the preset name in bold (in full, even when cut off on the tile), the reason and score, colors and size, the pixel size, and the per-item score breakdown below.
  • Right-click a candidate tile for Copy image, Copy enlarged (×4) and Save as PNG… (multi-frame results use the first frame; the file is named source name_preset name). Copies go to both Chickxel's clipboard and the system clipboard, so you can paste into the canvas or other apps. Rerun only this preset at the bottom of the same menu reruns just that tile and replaces it in place — a tile run from a saved preset as is uses that preset's currently saved values, and a tile whose name ends in (modified) uses the values it was run with (disabled while something runs or if the preset was deleted).
  • Failed results: a result that is empty (all transparent), nearly empty (covers less than ¼ of the source sprite), single-colored, or has every frame under 8×8 is treated as a wrongly detected pixel size: it scores 0, sorts last and is never preselected or picked as the auto-optimize winner. Selecting it shows why under the preview, such as "The result is empty (all transparent) — the pixel size was detected wrong (183px)". With the auto grid such a result is redone automatically with the next-best estimate (another pixel-size source, or ½ or ⅓ of the detected size), and the window says so. The auto pixel size never exceeds 1/5 of a frame's (sprite's) shorter side (the grid info shows the limit), so frame spacing or large blobs in a sheet aren't taken for a pixel.

Auto optimize

Start and review results

The bar after an auto-optimize run and the optimized candidates
① Auto optimize · ② Settings button · ③ Best-score graph · ④ One-line result · ⑤ Revert · ⑥ Stop reason and score marker: Optimized · Time limit · Trial limit · Cancelled
The bar and preset tiles while auto optimize runs
⑦ Cancel · ⑧ Progress line · ⑨ Running preset tile (Optimizing) · ⑩ Waiting preset tile (Waiting)

Click ① Auto optimize above the candidates to start right away. Each preset checked in the Auto Optimize Settings window starts from its own settings, tries values for the steps that have Optimize on and keeps the highest-scoring settings by that preset's 0. Optimize criteria; each preset contributes its single best result as a candidate. Next to the button you see ③ a best-score graph (the best score so far after each trial, a faint vertical line where a new pass starts, and the best score at the bottom right — it stays after the run), ④ a one-line result ("n/m presets · t s", or for a single preset "preset name: k passes · a → b · n trials · t s · reason") and, after a run, a small ⑤ Revert button. ② The settings button (sliders icon) opens the Auto Optimize Settings window.

  • While it runs the button turns into a red ⑦ Cancel, and ⑧ "preset name (i/n) · pass p · trial n/budget · best s" shows next to the graph. The candidate row turns into the presets to run: ⑨ the running tile blinks with a yellow border and shows Optimizing (best score) and the best picture so far, ⑩ tiles waiting their turn show Waiting, and each fills with its result as the preset finishes. Cancelling everything before any result brings back the tiles from before the run. Pinned and excluded colors don't rebuild anything, so changing them leaves the preset tiles as they are.
  • ⑦ Cancel stops only the preset that's running, leaves its best result so far in its tile (Cancelled (score)) and moves on to the next preset (stopped before its first trial, the tile is dropped without a result). To stop the remaining presets too, right-click the button > Cancel all. Replacing the source, applying a frame split or closing the window discards the run.
  • When it finishes, the candidate row holds one best tile per checked preset; the tile of the open preset is selected (or the first tile, or the tile you picked while it ran) and its settings are loaded on the left. The values found are written into each preset right away. The blue text ⑥ at the bottom of a tile shows why it stopped and that candidate's score: Optimized (87.6) when it stopped improving, Time limit (60.4) when the time budget ran out, Trial limit (…) when the trial budget ran out, and Cancelled (…) when cancelled. ⑤ Revert next to the graph restores the settings from before the run, including the presets the run wrote into.

Auto Optimize Settings window

The Auto Optimize Settings window
⑪ Preset checklist · ⑫ Main button · ⑬ Trial history · ⑭ Auto optimize on load · ⑮ Reset
  • ⑪ Checked presets in the list run with Auto optimize and hold a place in the candidate row (edit their values in the settings column on the left).
  • ⑫ The Main button picks the preset used to pixelate images generated by AI drawing (only the chosen one is green; it's independent of the checkboxes; Same hue family at first). Conversion uses that preset's saved step settings, per-step optimize and criteria, and an output size set in the chat comes first.
  • ⑬ Expand Trial history to see the last run of the preset selected in the list and its top 50 trials by score with their changed values.
  • ⑭ With Auto optimize on load on (off by default; your choice is remembered), every time a source is loaded (open, drop, paste, browse or replace source) all checked presets are auto-optimized instead of each running once as set.
  • ⑮ The red Reset asks first, then returns the preset list, checkboxes, main preset, preset values (including values written by optimization) and Auto optimize on load to how they were when first installed, and deletes presets you created and the trial history (this can't be undone).

Per-step optimize and criteria

The settings column with 0. Optimize criteria expanded and the Optimize check in the 1. Background header
⑯ 0. Optimize criteria · ⑰ Optimize check
  • ⑯ 0. Optimize criteria (top of the settings column, saved with the preset) holds the budget and scoring rules for Clean up and Auto optimize. Trials and Seconds are the budget. Target colors lowers the score in proportion to the colors over the target (Auto, the default, ignores the color count; Strict next to it penalizes fewer colors than the target by the difference too). The Fidelity row sets how results are compared with the source: Cell by cell (default — each result pixel is compared only with its own source cell's color, so a stray colored dot inside an outline or a dither pattern costs points) · Blended with neighbors (blurred with neighboring cells before comparing — a dither pattern that blends from a distance counts as a match), and Center weighted (on by default — pixels near the cell center count more). Cell color is Dominant group (default — the largest group of similar colors in the cell, leaving out an outline or bleed crossing the cell edge) or Cell average, and Group range is how different colors may be within one group (OKLab, default 0.06). Scoring color distance (major shift, cell match) is OKLab, CIEDE2000 or OKLCh hue-weighted (with a weight for each of the lightness L, chroma C and hue H differences, default 1 · 1 · 2); it's separate from the palette's conversion distance and measures every candidate with the same ruler. Score weights (0 = ignore) sets how much each score item counts (0 = ignored).
  • ⑰ Optimize: only steps with this check on in their header (1. Background · 3. Pixel grid · 5. Cell color · 6. Palette · 7. Cleanup) are varied by Clean up and Auto optimize, starting from the values shown; steps with it off use their values as set (saved with the preset). A checked step tries everything it can change — Background: remove sticker border · Grid: pixel size, size jitter, pixel size source, local cell correction (with max shift and band in trials that use it) and a manual grid's offset X/Y · Cell color: cell color method, ignored cell border, transparency threshold, color snap step · Palette: palette method (all five, plus an existing palette when starting from one), color count, grouping range, group radius, palette colors, edge cell weight, color distance, keep distinct hues, prefer shade family, dither, snap outline color, outline darkness · Cleanup: cleanup on/off, outline fit mode, vector simplify, keep small blobs. Values tied to a method change only in trials using that method, and a palette method or dither with Don't optimize on is never changed. The pixel size is never shrunk without evidence: By shrinking searches only within ±15% of the source outline thickness; otherwise the search sweeps between the three estimates and their 2×, 3×, ½ and ⅓, going down only to 0.75× of the starting size and the auto estimate (smaller cells always improve fidelity, which would make results needlessly large). An exact multiple of a clean image keeps its pixel size. The pixel size is changed through Add to auto pixel size (px) for an auto grid, the pixel size for a manual grid and the factor for scale-factor output; a fixed output size skips it.

Search method and stopping conditions

  • It first tries each item on its own (7 spread-out values for numbers, every value for choices), then climbs from the best few points with small steps (shrinking the step when nothing improves). Identical settings are never run twice, and background removal and frame splitting are done once, so the trials run quickly on several threads.
  • When one search (a pass) ends with no further improvement, the same search runs again from the best result. A new pass also climbs from the top result not yet used as a start whose settings differ most from the best and from a small fixed nudge of the best, so it doesn't get stuck in one spot. A pass that raises the best score by less than 0.1 points doesn't stop the search right away: up to three more passes start from other top results and wider nudges before it stops, so optimizing an already optimized result doesn't give up after its first pass. Settings already tried are never run again. The same image and settings always give the same result when the run ends on the trial budget rather than the time limit.
  • Each preset stops at the Trials or Seconds of its 0. Optimize criteria, whichever comes first (one budget shared by all passes of that preset; 2000 trials and 120 seconds for a new preset). With Optimize grid fit first on and other steps optimized too, the grid stage uses up to half of it.

On the bundled sample (default settings, the earlier default items and budget — pixel size, color count, cell color method, cleanup and palette colors; 200 trials, 60 s) it took about 3 s and 162 trials to go from 70.3 to 80.8 (cells about 16.1 → 14.9 px, 26 colors, fill holes off, palette colors kept as original colors, 99% of outline pixels 1 px).

Source and preview

Source view and output size

The whole Pixelate window with a source and candidates
① Source view · ② Large preview (Result and Source) · ③ Color swatches (N colors) · ④ Playback controls and frame strip · ⑤ Candidate tiles
The bar under the source
⑥ Show background removed · ⑦ Output size Auto · ⑧ Width × height · ⑨ Link button · ⑩ Show grid
  • ① Source view: wheel to zoom, drag an empty area to pan, double-click to fit. The boundaries and numbers of the applied frame split are always shown on the source, whether or not the grid is shown. ⑥ Show background removed shows the source without its background.
  • Drag inside a frame to move it, or drag its edges and corners to resize it (in source pixels, kept inside the source). On release the frames are split with those boundaries and the candidates are rebuilt; edited boundaries are saved with the settings and presets. Changing the split conditions, such as the split mode or frame count, clears the edited boundaries, but the boundaries on screen stay until you press Apply frame split. Right-click the source for Copy image and Save as PNG… (with Show background removed on, the background-removed source is used and the file name ends in "nobg"); right-clicking inside a frame adds Copy frame N and Save frame N as PNG… at the top for just that frame (the file name ends in the frame number). While picking a color, right-click cancels the eyedropper instead, so no menu opens.
  • Output size in the bar under the source: with ⑦ Auto on (the default) the size follows the pixel size and ⑧ the width × height boxes show the selected result's size in grey. Turn it off to fit the result to the width × height you enter (changing them rebuilds); with ⑨ the link button on, changing the width updates the height (and vice versa) by the current result's ratio. It's the same setting as 4. Output size on the left, so changing either updates the other.
  • ⑩ Show grid (on by default) draws the cell boundaries the selected candidate actually used (its actual pixel size and each frame's own uneven boundaries, so the lines match the color blocks) on the source view on the left (not on the Source image of the large preview, but they are in the enlarged view's source pane; with local correction the bent boundaries are drawn as they are). They're thin light lines with a dark edge that follow zoom and pan, and they fade or hide when cells are smaller than about 3 screen pixels. Hovering a source cell highlights that cell and the matching result pixel, and the preview jumps to that frame.

Local cell correction

Local cell correction in the 3. Pixel grid step
⑪ Local cell correction, Max shift, Band, Minimum cell size
  • ⑪ Local cell correction is enabled under Pixel grid on the left. Minimum cell size (px) is the average source-pixel size required to adjust boundaries; set it from 1 to 16 px (default 4 px). Lower values can correct small cells but may follow blurred-edge noise. Maximum shift is 5–99% of a cell and Band spans 1–32 cells; neighboring cell-width limits may constrain the actual shift. The grid stays straight when cells are below the selected threshold or no boundaries move. The selected result shows whether correction took effect. With Optimize on for 3. Pixel grid, Clean up and Auto optimize also try correction on and off along with the max shift and band.

Excluded and pinned colors

Color swatches with one color excluded
⑫ Excluded swatch (dimmed at the end) · ⑬ Exclusion notice and Restore all · ⑭ Add color from source (+)
  • Color swatches and result pixels work the same way — Left-click: show where used · Right-click: exclude/restore. Right-click a swatch to exclude that color from the current result only, without rebuilding (only its pixels change, to the remaining color nearest their source cell's color, so N colors drops by exactly the number excluded; ⑫ the swatch stays at the end, dimmed, with a red border and a diagonal line), and right-click again to bring back the original result. Right-clicking a pixel in the large preview's result image or the enlarged view's result pane excludes the color currently shown there (if it's already a replacement for an excluded color, that replacement color). The last remaining color can't be excluded (the status line says so), and right-clicking a pinned color unpins it. Left-click briefly highlights that color's pixels in the result (other colors dimmed, each connected patch of that color outlined in yellow around its edge only) and the swatch itself — for an excluded swatch, where the color used to be. While colors are excluded, ⑬ "N colors excluded · Restore all" is shown; newly built candidates and auto-optimize results get the same exclusion, and it stays when applying (a color within OKLab 0.03 counts as the same color, so slightly different settings still match). Exclusions aren't saved in presets and are cleared when the source is replaced.
  • Pinned colors: the ⑭ + at the end of the swatches (Add color from source) starts an eyedropper (the + stays pressed). The source view on the left, the large preview's source image and the enlarged view's source pane show the eyedropper cursor and highlight the cell under it, and the border of every visible source image slowly brightens and dims in the accent color (about a 1.2 s cycle) to say "pick here" (it disappears as soon as the eyedropper ends); clicking a cell pins its representative color (using the selected candidate's cells and cell color mode). The eyedropper ends after one color (Shift+click keeps it on); Esc, right-click or pressing + again stops it. Like exclusions, a pinned color is added to the current result without rebuilding — the other colors, candidate order and scores stay; only pixels whose source cell color is closer to the pinned color than to their current color take it, so the color count grows by one, and unpinning puts those pixels back. A pinned color is never excluded. Pinned swatches get a blue border and a blue corner triangle (shown dimmed when unused); right-click one to unpin, and "N pinned colors · Clear all" is shown. Pinned colors carry over to candidates, auto-optimize results (never changed) and applying; they aren't saved in presets and are cleared when the source is replaced. Colors can't be excluded or pinned while you watch a running tile.

Background and color comparison

The 1. Background step
⑮ Remove sticker border · ⑯ Keep background (one color)
  • Background: ⑮ Remove sticker border (on by default) finds the white band around the outline and removes it (optimizing the Background step tries it on and off), and ⑯ Keep background (one color) keeps the detected background flattened to the background color. The one-pixel blended fringe between a solid background and the sprite is removed too. The score's Major color shift is how much a widely used color changed as a whole, and Fidelity is (opacity mismatches + structure loss inside cells + color difference) ÷ number of samples. Structure loss is how far the source pixels inside a cell scatter from the cell average; it is large for a cell that splits a sharp edge in half and doesn't depend on the result color. The color difference follows the Fidelity setting in 0. Optimize criteria: Cell by cell (default) compares each result pixel only with its own source cell's color using the scoring color distance, and Blended with neighbors converts the source cell averages and the result into lightness, red-green and blue-yellow channels in light intensity (linear light), blurs them with neighboring cells (lightness a little, hue more), then compares them in OKLab (the S-CIELAB approach — a 1 px alternating dither pattern that blends into the original color counts as a match).
  • ② The selected candidate is shown large, animated at the FPS, next to the matching source frame; the two images are labeled Result and Source.
  • Left-clicking a result pixel: press and release (without dragging) on a pixel in the enlarged view's result image to show where that color is used — its swatch is highlighted in both swatch rows with a thick accent border and a short grow-and-return pulse (scrolled into view if the row overflows), the clicked pixel is marked and the same-color regions are outlined (as with left-clicking a swatch) for 1.2 s, the status line shows the HEX value and output coordinates, and the color decision row for that pixel opens (Enlarged view). Right-click excludes or restores that color (see the swatches above).
  • Left-clicking a source cell: press and release (without dragging) on a cell in the enlarged view's source pane to outline that cell and its matching result pixel in blue; the result's swatch and same-color regions are highlighted, and the color decision row for that result pixel opens. The source image is not recolored. The status line shows "Source cell #representative → result #result" (the representative is the cell's color before the palette). Right-clicking a source cell does nothing. While the eyedropper is on, the click adds a pinned color instead.
  • A source cell whose representative color is black can still produce a yellow result: Fit outline to 1 px in Thin outline only or By shrinking mode replaces inner dark outline cells with nearby light colors to make the outline one pixel thick. Try switching outline fit Off to keep that dark cell. Local correction adjusts boundary positions instead of performing this recoloring.

Enlarged view

The enlarged view with the color decision row open
⑰ Result pane · ⑱ Source pane · ⑲ Show grid button · ⑳ Color swatches · ㉑ Color decision
  • Enlarged view: left-click the result or the source image in the large preview once (without dragging) to open a panel covering the dialog (showing where a color is used happens in the enlarged view — the left-clicks above; right-clicking the large preview's result image excludes or restores that pixel's color). ⑰ The left pane shows the current frame's result (at the largest integer zoom that fits, on a checker), ⑱ the right pane the same frame's source at the same on-screen size (with cell boundaries when Show grid is on); wheel to zoom, drag to pan and double-click to fit — both panes move together. The previous, play/pause and next buttons and Space/Left/Right share the large preview's frame and FPS, and it follows the selected candidate and color exclusions. Close with Esc, a click outside the panel or the ✕ button. Clicking outside the images only gives the preview keyboard focus, and clicking an image keeps that focus, so the keys work right after closing.
  • Next to the enlarged view's play button, the ⑲ Show grid button (pressed = on, kept in sync with the dialog's Show grid check) draws the actual cell boundaries on the source pane and a one-cell-per-pixel grid on the result pane in the same line style (hidden when a pixel is under 4 px on screen). Below the images are the same ⑳ N colors swatches as the large preview (left-click shows where the color is used, also in the enlarged result pane — for an excluded color, where it used to be, now another color; right-click excludes or restores, or unpins a pinned color; the + at the end adds a color from the source) and the frame strip (hidden for a single frame); changes in either place show in both.
  • ㉑ The Color decision row: left-click a result pixel or a source cell in the enlarged view (when the eyedropper is off) and a Color decision (x, y) row appears above the swatches. It reruns that pixel with the same settings and shows the color at each step as a swatch and HEX value, in order: Cell color (cell color method) → Palette (Palette (prefer shade family) when the shade family rule picked something other than the nearest color, Palette (dithering) with dithering) → only the later steps that changed the color (snap outline color, redraw as vector, remove orphan pixels, fill 1-px holes, thin outline to 1 px, outline, reduce L-corner doubles, remove outer L corners, match neighbor frames, pinned color, excluded color). The last, bold color is the result. The Closest palette colors (color distance): line below lists the three palette colors nearest the cell color with their distance and, in parentheses, the OKLCh difference from the cell color (lightness ± · chroma ± · hue); the chosen one is bold — OKLab distance weighs the three equally, so a color with the same lightness plus some chroma can come out closer than a neutral color differing only in lightness. Hover a step name for its rule, or the cell color for its OKLCh lightness and chroma. Working out how this color was chosen… shows while it computes, and the row disappears when you change the selected candidate or the excluded or pinned colors (click again to recompute).
  • ④ At the bottom of the large preview are previous/next frame buttons, play/pause, an FPS box and a frame strip (numbered thumbnails, the current frame outlined in blue; click to go to that frame and pause). When the preview has focus, Space plays or pauses and Left/Right change the frame.
  • ③ Above that, the colors the selected candidate uses are shown as N colors with 14 px swatches, most-used first. The tooltip shows the HEX value and the pixel count over all frames (with the click hint on a second line); left-clicking a swatch briefly highlights the pixels of that color in the result preview (others dimmed). The swatches take at most half of the large preview's height at first and scroll when they overflow. Drag the short handle at the top of the swatches up or down to change that maximum height (remembered separately for the large preview and the enlarged view); double-click it to go back to half.
  • ⑤ Candidate tiles: click to select one and load its settings on the left, double-click to apply (Candidates and scores).

Output

The Output step in the settings column
① New layer in the current document · ② New document · ③ Frame duration · ④ Also save the colors as a new palette
  • ① New layer in the current document: starts at the current frame and adds frames if needed. One undo step. A single-frame result goes straight into transform mode holding the whole uncropped result: move or resize it and press Enter (parts outside the canvas are cut then), or Esc to keep it as inserted.
  • ② New document: canvas = output size, one frame per sprite frame, with ③ a frame duration setting. Opens in a new tab.
Buttons at the bottom of the window
⑤ Add to new tab · ⑥ Apply
  • ⑤ Add to new tab (the button before ⑥ Apply): creates a new document exactly the size of the selected result in a new tab regardless of the output setting, and closes the window. Enter is not a shortcut for applying; click Apply or Add to new tab yourself.
  • ④ You can also save the colors as a new palette.

Refining with AI (experimental)

The AI (experimental) step
① Touch up with AI after applying · ② Prompt · ③ Model (Claude or Codex) · ④ Add the source to AI references · ⑤ Ask AI to rank candidates · ⑥ Candidates to send
The model list open
⑦ Model list (Claude, Codex)
  • Turn on ① Touch up with AI after applying to edit ② the prompt (by default it asks to fix broken outlines, eyes and face, and stray pixels while keeping the palette, size and frames) and choose ③ Claude or Codex (⑦). After applying, the chat opens with the original image attached and the prompt filled in. It isn't sent; press send yourself.
  • ④ There's also an option to add the source to the AI references.
  • ⑤ Ask AI to rank candidates: attaches the original and the top ⑥ K candidates and fills in a ranking request (not sent).

Part (group) layers · skins

Draw parts of different sizes, like a character's head, body, arms and legs, for each frame, arrange them within a frame to use as an animation, and export them as per-part sprites too. You can also draw several sets (skins) of body types, outfits or gear with the same part setup and swap between them.

Groups and parts

Canvas and timeline with the Character group selected: indented Head, Body and Legs part rows under the Character group row, each with a size label and frame cells, and a dotted border around each part on the canvas
① Group row (Character) · ② Part rows (Head, Body, Legs) · ③ Part canvas size (47×40) · ④ A different part image in each frame · ⑤ Part position in the frame (Head, shared by all frames)
  • ② Part layers go under a ① group layer.
  • Each part has ③ its own canvas size (e.g. Head 8×5) and ④ its own image in each frame.
  • ⑤ A part's position within the frame is shared by all frames.

Creating

New project dialog: Start with parts chosen, with the first part's name, width and height fields enabled below it
① Start with parts · ② First part name and size
  • In a new project (Ctrl+N), choose ① "Start with parts" and set ② the first part's name and size.
Frame·Layer menu open, showing New group (Ctrl+Shift+N) and New part… (Shift+P)
③ New group · ④ New part…
  • Frame·Layer > ③ New group (Ctrl+Shift+N)
New part dialog: name field (Arm) with quick name buttons, width and height fields with quick size buttons
⑤ Part name · ⑥ Part size (Width, Height)
  • Frame·Layer > ④ New part… (Shift+P) — adds to the current group, creating a group first if there isn't one. In the dialog, set ⑤ the name and ⑥ the size.
Right-click menu of the Character group in the timeline: Add part… and New group
⑦ New group (part and normal layer menus also have New part…) · ⑧ Add part…
  • Right-click a layer name in the timeline → ⑦ "New group / New part…", or right-click a group → ⑧ "Add part…"

Viewing in the timeline

Timeline: Gear and Character group rows with indented part rows below them (size labels and skin chips), and composite thumbnails in the group cells
① Collapse/expand triangle · ② Group composite thumbnails · ③ Indented part rows (name and size) · ④ Skin chip (current skin knight; click for the skin manager) · ⑤ Show/lock (on a group, applies to its parts too)

Group rows collapse and expand with ① a triangle, and ② their cells show the group's composite thumbnail. ③ Part rows are indented and show the name and size. ④ The skin chip after the name is the skin currently worn; click it to open the skin manager.

⑤ Hiding or locking a group also hides or locks its parts. Parts can be reordered only within their own group.

Arranging (group selected)

Selecting a group shows the full frame composite on the canvas.

Canvas with a group selected: Head clicked and selected with a solid blue border, the mouse over Legs showing a dotted border and a Legs 34×25 label, and a blue part pivot and an orange frame pivot on the body
① Hovered part (dotted border + label) · ② Clicked, selected part (solid blue border) · ③ Part pivot (blue dot) · ④ Frame pivot (orange dot)
  • ① Hover a part to see a dotted border and its name.
  • Drag to move it and set its position (applies to all frames; one undo step).
  • Click a part to ② select it, then use the arrow keys (Shift+arrow) to move it by 1/8px. Click an empty area or press Esc to deselect.
  • Double-click a part to select its layer and switch to drawing.
  • ③ Part pivots are shown as blue dots and ④ frame pivots as orange dots.

Drawing (part selected)

Head part selected: only Head is shown brightly at its own size on the canvas, with the rest of the body dimmed below, and the Head row selected in the timeline
① Selected part row (Head) · ② The part shown at its own size (47×40), the rest dimmed

① Selecting a part layer shows ② only that part at its own size, with the rest dimmed around it. Coordinates are relative to the part.

Frame·Layer menu open, showing Part size…
③ Part size…
Right-click menu of the Head part in the timeline: Part size… (47×40) and Position… (7, 4)
④ Part size… (47×40) · ⑤ Position… (7, 4)
Part size dialog: current size, width and height fields, and a 3×3 grid of arrow buttons for the anchor
⑥ 9-direction anchor (where the existing image is placed)
  • Resize: Frame·Layer > ③ Part size… or right-click the part → ④ "Size…" (⑥ 9-direction anchor; drawn pixels stay in place).
  • Set the position numerically: right-click the part → ⑤ "Position…".
Bottom of the left toolbar: the Pivot tool and 9-slice tool buttons
⑦ Pivot tool (K) · 9-slice tool (S)
  • ⑦ The Pivot tool (K) and 9-slice tool (S) apply to the selected part.

Auto layout

Right-click menu of the Character group in the timeline: Auto layout…
① Auto layout…
Auto layout dialog: direction, alignment, distribution, spacing and padding, order, area and hidden-parts settings, with a preview of three parts laid out horizontally and the Apply button
② Preview · ③ Apply · ④ Direction · ⑤ Align · ⑥ Distribution · ⑦ Spacing · padding · ⑧ Order · ⑨ Area · ⑩ Hidden parts keep their place
After applying auto layout: Head, Body and Legs laid out horizontally on the canvas, and a diamond mark left of the skin chip on the Character group row
⑪ Auto layout mark (diamond; click it for the settings)

Right-click a group in the timeline and choose ① Auto layout… to lay its parts out automatically by size. Check ② the preview and click ③ Apply for a single undo step. A group with auto layout on is re-laid out whenever you add or remove parts or change their size or order, and shows ⑪ a diamond mark on its timeline row. If you try to move a part by hand in this state, you're asked whether to turn auto layout off.

SettingDescription
④ DirectionHorizontal · vertical · grid (set column count)
⑤ AlignTop/center/bottom or left/center/right
⑥ DistributionStart · center · end · even
⑦ Spacing · paddingIn px
⑧ OrderFrom top part · from bottom part
⑨ AreaWhole canvas by default; X, Y, W, H can be set manually
⑩ Hidden parts keep their spaceOn by default — toggling visibility doesn't move other parts

Export: frame sheet and part atlas

Export dialog: on the left the Common settings (Output = Both), Files, Frame sheet and Part atlas sections in order; on the right previews of the frame sheet and the part atlas
① Frame sheet section · ② Part atlas section · ③ Output (frame sheet, part atlas or both) · ④ Part atlas name (empty = <frame sheet name>_parts) · ⑤ Common settings

On save, the following two outputs can each be turned on or off (③ Output). Both are produced as an image + .meta.

  • ① Frame sheet: an animation sheet with each frame composited.
  • ② Part atlas: one cell per part × frame with content. If ④ the name is empty, <frame sheet name>_parts.

Layout, sort order and cell names follow ⑤ the common sheet settings in the export dialog. Old files that are no longer produced are cleaned up into the app trash (see Files).

Skins and slots

Wearing the knight skin: the character in red armor with a sword stacked on top on the canvas, the Character group skin chip knight and dimmed Head cells in the timeline
① The group's current skin (knight) · ② Another group stacked on top (Gear, skin Sword) · ③ Dimmed cells inherited from the first skin (Head)

Each group has a list of named skins (at least one, "Default" at first), and ① only one of them is shown.

  • Skins in the same group replace each other (swap).
  • ② Different groups stack in layer order (overlay).

Example: a "base body" group at the bottom (skins: default, muscular, zombie), with "hair" and "armor" groups above it (the first skin, "none", is left empty and gear is drawn in the other skins).

The only thing that differs between skins is the image. The part list, sizes, positions, pivots and 9-slice are shared by all skins. Empty cells in skins other than the first inherit the first skin's image, so you only need to redraw the parts that change. ③ Inherited cells appear dimmed in the timeline, and once you start drawing on one it becomes that skin's own image.

Per-part choices and part-only skins

Only Head wearing the zombie skin: the face is green on the canvas; in the timeline the Head skin chip is blue zombie, the Body chip is dimmed knight and the group chip is knight
① Part following the group (Body: knight, dimmed chip) · ② Part with its own choice (Head: zombie, blue chip) · ③ The group's current skin (knight)

Within a group, a single part can wear a different skin (e.g. the body stays in ① the group skin "knight" and only the head wears ② "zombie"). The visible skin is decided in the order part override → ③ group's current skin → first skin.

Character group in the skin manager with Per part expanded into Head, Body and Legs rows; at the end of the Head row a Hat card marked Individual and the This part's skins button
④ This part's skins button · ⑤ Part-only skin card (Hat, marked Individual)
Right-click menu of the Head part with the Skin for this part submenu open: follow the group, Default, knight, zombie, Hat (individual), Skin for this part…, Manage skins…
⑥ Skin for this part submenu · ⑦ Skin for this part… (create a part-only skin) · ⑧ Part-only skin (Hat (individual))

You can also create a part-only skin that exists for just one part (e.g. a "hat" for Head). Create it with ④ This part's skins on the part row in the skin manager or from the part's right-click menu (⑥ → ⑦); it's marked "Individual" only in that part's list (⑤, ⑧).

Right-click menu of the Hat card on the Head row in the skin manager: Promote to full skin at the bottom
⑨ Promote to full skin
Right-click menu of the knight card on the Head row in the skin manager: Demote to Head only… at the bottom
⑩ Demote to "Head" only…

Right-click a part-only skin card to ⑨ Promote to full skin, or right-click a full skin to ⑩ Demote to part-only.

If something like a hat, clothes or shoes will always be swapped separately, splitting it into its own group (slot) is also cleaner to work with in Unity.

Skin manager

Main window with the Frame·Layer menu open: Manage skins…, the skin chip of the Character group in the timeline, and the Manage… button in the outfit row below the preview
① Skin chip · ② Frame·Layer > Manage skins… · ③ Manage… in the outfit row

Open it by ① clicking a skin chip, from ② Frame·Layer > Manage skins…, or with ③ Manage… in the outfit row below the preview. You can keep it open beside you while editing.

Top of the skin manager: full outfit preview, outfit presets, Gear group cards, and the Character group's Default, knight and zombie cards with the New skin and Duplicate buttons
④ Full outfit · ⑤ The group's skin cards · ⑥ New skin · ⑦ Duplicate
  • ④ Full outfits are at the top, followed by ⑤ skin cards for each group. Click a card to apply it immediately; double-click to apply and close the window.
Whole skin manager: right-click menu of the zombie card (Apply, Duplicate, Rename…, Delete, Move forward, Move back), the None card in the expanded per-part rows, and the view filter toggle at the top
⑧ Card right-click menu (Rename…, Delete, Move forward/back) · ⑨ Per part · ⑩ None card · ⑪ View filter (All | Group skins | Individual skins)
  • ⑥ New skin (empty), ⑦ Duplicate, and in the card's right-click menu (⑧) Rename…, Delete, Move forward/back. You can also drag cards to reorder them; the first skin becomes the default skin. All of these can be undone.
  • Expand ⑨ Per part to see skin cards for each part; click one to put just that part in that skin. The leading ⑩ None card follows the group skin.
  • Use the ⑪ All | Group skins | Individual skins toggle at the top to filter the cards shown.

Changing outfits and outfit presets

Besides the skin manager, you can change outfits these ways:

Outfit row below the preview panel: Gear skin box Sword, Character skin box knight, and the Manage… button
① Outfit row (one skin box per group)
  • ① The Outfit row below the preview (a skin picker per group)
  • Previous/next skin (current group): Alt+[ / Alt+]
Right-click menu of the Character group with the Skin: knight submenu open: the skin list and new, duplicate, rename, delete and reorder items
② Group right-click Skin (Skin: knight) submenu
Right-click menu of the Head part with the Skin for this part submenu open
③ Part right-click Skin for this part submenu
  • Right-click a group → ② "Skin", or right-click a part → ③ "Skin for this part"

Changing outfits is a view switch, so it isn't recorded in undo history, but it is saved in the file.

Outfit presets in the skin manager: Knight set and Zombie cards and the Save current outfit… button, with the Zombie card's right-click menu (Apply, Overwrite with current outfit, Rename…, Delete, Move forward, Move back)
④ Save current outfit… · ⑤ Outfit preset cards · ⑥ Card right-click menu (overwrite, rename, delete, reorder)

Outfit presets: use ④ Save current outfit… in the skin manager to save the current combination under a name, then click ⑤ its card to switch to that outfit. ⑥ Right-click to overwrite, rename, delete or reorder. Any deleted groups or skins are skipped and you're told.

Exporting skins

Choose under Skin in the common export settings.

Export dialog: the Skin row in the common settings (Current outfit, Selected skins, Choose skins… (6)) and the Skin packing row (One image, Separate files), with a frame sheet preview on the right that has one row per skin
① Current outfit · ② Selected skins · ③ Choose skins… · ④ One image · ⑤ Separate files
Choose skins dialog: skin checkboxes per group (including the Head-only Hat), outfit preset checkboxes, layers to composite, and at the bottom the part atlas checkbox Use this skin's sprites for inherited cells too
⑥ Skins (per group and part-only) · ⑦ Outfit presets · ⑧ Use this skin's sprites for inherited cells too
SettingResult
① Current outfit (default)Exports only the outfit currently shown.
② Selected skinsExports each ⑥ skin and ⑦ outfit preset checked in the ③ Choose skins dialog. Combine them in ④ one image (cell names <name>@<skin>) or split them into ⑤ separate files (<sheet>@<skin>.png).

In the part atlas, the first skin keeps the original names (Head, Head_1 …), and other skins add only the cells actually drawn, like Head@knight. To include inherited cells under that skin's name too, turn on ⑧ Use this skin's sprites for inherited cells too in the Choose skins dialog.

Unity Sprite Library

Part atlas section of the export dialog: Sprite Library turned on, its description, and below it the result paths of the part atlas PNG and the .spriteLib files
① Sprite Library on · ② The .spriteLib files produced (one per group × skin)

Turn on ① Sprite Library in the part atlas section of the Export tab to create a Sprite Library Asset for the Unity 2D Animation package per group × skin, named ② <part atlas name>_<group>@<skin>.spriteLib.

  • Category = part, Label = frame (0, 1 … or idle_0 …).
  • Libraries for the same group all share the same Categories and Labels; only the sprites differ. So one animation works for every skin.

In Unity, put a Sprite Library component on the parent of each group's part objects, and keyframe the Label (frame) with a Sprite Resolver (Category = part) on each part. To switch skins, just swap the asset on that group's Sprite Library component.

Importing old files and PNGs

  • Opening an atlas .chickxel from an older version converts it into a "parts" group with one part per sprite. Unity guids and spriteIDs carry over.
A part atlas PNG with cells of different sizes opened: one group wolf_parts in the timeline with Head, Body and Legs parts under it, and a single frame
① One group named after the sheet (wolf_parts) · ② One part per cell (Head, Body, Legs)
Common settings of the export dialog for the imported image: Output set to Part atlas only
③ Output = Part atlas (frame sheet off)
  • PNG sheets with cells of different sizes are imported as ① one group + ② one part per cell. In this case ③ frame sheet export starts turned off.

AI chat (Claude · Codex)

What it can do

Asking the AI chat to "Add a 1px white outline to the character" and the outline appearing on the canvas
① Your request in plain words · ② The open image the AI edited · ③ Claude / Codex tabs

Chat with an AI inside the editor to create and edit images. Ask in plain words, like "add a black outline" or "draw 4 walking frames" (①), and the AI edits the open image directly (②).

No API key is needed. It uses Claude Code (Claude subscription login) or Codex CLI (ChatGPT subscription login) installed on your computer. Usage counts against each subscription. Pick which one to use with the ③ tabs at the top of the chat window.

Opening the chat window

The top bar with the AI menu open: AI chat button, AI menu and the AI chat (Ctrl+L) item
① AI chat button on the right of the top bar · ② AI menu · ③ AI chat (Ctrl+L)
  • ① The AI chat button on the right of the bar below the menu
  • Menu ② AI > ③ AI chat
  • Ctrl+L (shown next to ③)

The chat opens in its own small window and remembers its position and size. If it was open when you closed the app, it reopens next time.

One-time setup: install and log in

The Chickxel download doesn't include Claude Code or Codex CLI. The first time, follow these steps.

The chat window when Claude Code is not found: install button, install commands with Copy buttons, manual path and Check again
① Install and log in via terminal · ② Copy the command · ③ Set path manually · ④ Check again
The Install AI confirmation shown after pressing the install button: the commands to run and OK
⑤ The commands to run · ⑥ Approve (OK)
  1. If the CLI is missing, click ① Install and log in via terminal, then review ⑤ the command to run and approve it (⑥).
  2. The official install command runs in a terminal, followed by the login command if it succeeds. Finish the browser authentication yourself.
The AI Status window shown on first use: Claude Code installed, signed in and the live CLI connection passed, Codex CLI not installed
⑦ Claude Code installed, signed in and connected over MCP · ⑧ Codex CLI not installed · ⑨ Continue to AI
  1. Chickxel checks the install and login status (⑦ ready, ⑧ not installed) and moves on to the chat screen (⑨).
  • If Node.js, which Codex needs, is missing, it's installed too (winget or the official ZIP on Windows, Homebrew or nvm on macOS).
  • In the AI Status window, CLI/version is the result of actually running the CLI executable Chickxel picked (--version), with the executable's full path next to the version. Chickxel runs the executable it found by its full path and adds its folder to the PATH the CLI uses, so you don't need to change your terminal PATH or choose the executable yourself.
  • MCP connection: Claude Code is actually started, without any message or model request, with the same connection settings as the chat, and the row shows ⑦ Live CLI connection passed · tool list received only when Chickxel receives its tool list request (tools/list). For Codex CLI it checks that the real CLI can read the connection settings, and the tool connection is confirmed on the first message. If the saved path fails to run or to connect, other known locations are checked and a working CLI is switched in automatically. These checks use no AI usage.
  • After pressing Install or update, keep the AI Status window open: it checks again automatically when a new CLI appears or the existing file changes, and again when you finish signing in. If the chat fails to connect over MCP, it also shows the CLI path it tried, so you can compare it with the path in the AI Status window.
  • Don't show again is remembered however you close the window — OK, Cancel or the close button. The window appears again when an AI CLI location or a custom path changes, not just because the app or a CLI was updated. Open it anytime from AI > Open AI Status… or Preferences > AI Status.
The Codex tab when installed but not logged in: Log in with Codex and Log in via terminal buttons
⑩ Log in with Codex · ⑪ Log in via terminal
The logged-in account shown at the top of the chat window
⑫ Logged-in account
  • If it's installed but not logged in, click ⑩ Log in with Claude / Log in with Codex or ⑪ Log in via terminal. The logged-in account is shown at the top of the window (⑫).
  • If installation fails, check the error in the terminal and use the on-screen ② copy command, ③ set path manually or ④ Check again options.
  • The Codex CLI bundled with the ChatGPT app on macOS is found automatically. Nothing else needs to be installed.
  • On Windows, a Codex CLI installed with npm is started from the package's codex.exe directly instead of through codex.cmd, so long chats and attached images don't hit the cmd.exe command-line limit (8191 characters). If a command is still over the limit (about 32,000 characters), it isn't started and a "command line is too long" error is shown.

Claude and Codex tabs

Sending from the Claude tab while the Codex tab is busy: a notice appears and the text stays in the input box
① Claude / Codex tabs (a dot after the busy Codex) · ② Notice that the other tab is working · ③ The unsent text stays in the input box

① [Claude | Codex] at the top of the window are tabs. Each tab has its own conversation, input box, attachments, model and undo buttons, and conversations continue when you switch tabs.

  • Switching tabs while a reply is coming in doesn't stop the work; a dot appears after the tab name while it runs (Codex in ①).
  • To keep two AIs from editing the same image at once, only one tab works at a time. While one tab is busy, messages from the other tab aren't sent (② notice) and stay in the ③ input box.

Chatting

The chat window in a conversation: Send, Image…, Attach canvas, model, New chat, question mark, and the pencil and trash under the last message
① Send · ② Image… · ③ Attach canvas · ④ Model · ⑤ New chat · ⑥ Question mark button · ⑦ Pencil (edit) and trash (delete)
The Stop button shown in place of Send while a reply is coming in
⑧ Stop
To do thisHow
Send / new lineEnter (or ① Send) / Shift+Enter
Attach a reference image② Image…, paste a picture (Ctrl/⌘+V), or drop image files on the input box
Show the current frame③ Attach canvas
Change modelThe ④ Model list at the top (remembered per AI; applies from the next message)
See past chats / start a new one⑤ New chat (shows the list; type below to start a new chat)
See what the AI can do, examples, and tipsThe ⑥ question mark button next to New chat
Edit or delete the last messageThe ⑦ pencil (edit) and trash (delete) icons under the last message — see Editing or deleting the last message
Stop the reply⑧ Stop (shown in place of Send while a reply is coming in)
The model list open: the first entry is Default with the model actually used
⑨ Default · the model actually used

The first entry in the model list, ⑨ Default, also shows the name of the model that will actually be used.

Hovering the image chip (#1) in the input box shows a small preview
⑩ Image chip (#1) in the input box · ⑪ Hover preview

Attached images no longer line up above the input box: each one goes into the text at the cursor as an ⑩ image chip (a small square thumbnail on a checkerboard and an accent-colored #1, #2… in a rounded accent border, sized to the text line). Pixel-art thumbnails are scaled pixel-exact so they stay sharp. You can type before and after chips, and they're numbered from 1 in text order within the message.

  • A chip is one unit. Backspace right after it or Delete right before it removes the chip and its attachment, and arrow keys skip over it. When chips are removed or reordered, the remaining ones are renumbered.
Clicking the image chip shows the image large with Copy image, Save image… and Remove attachment buttons
⑫ The image shown large · ⑬ Copy image · Save image… · ⑭ Remove attachment
  • Hover a chip for a ⑪ thumbnail preview; click it to see ⑫ the image large with ⑬ Copy image and Save image… buttons and a ⑭ Remove attachment button.
The image chip inside a sent message and the copy button under the bubble
⑮ Image chip in the sent message · ⑯ Copy message text
  • The sent message shows chips (⑮) with the same look (square checkerboard thumbnail and #number) in the same places; hover to preview, click to open the same enlarged view. The AI receives the images as attachments in chip order, and the text says [Image #1] where each chip was, so it knows which image you mean.
  • Reopened past chats show the chips in the same places; clicking one shows the saved 64 px thumbnail enlarged. Chats saved before this feature still show their thumbnails above the text.
  • ⑯ Every message you sent has a Copy message text button under its bubble. It copies only the text, without the image chips. The pencil and trash icons still appear only under the last message.
  • Images in the chat (chips and attached images in sent messages, result images the AI drew, the canvas snapshot at the end of a turn) open in the enlarged view with one click, and right-clicking them shows Save image… and Copy image. The image in the enlarged view can be right-clicked too. Right-clicking a chip inside a sent message opens this image menu instead of the text selection menu. Copy puts the image on the clipboard immediately; Save writes it as a PNG file at the pixel size shown.

Continuing past chats

Chats are saved automatically each time a reply finishes. Claude and Codex keep separate lists.

The past chats list after pressing New chat: a starred favorite on top, each row with title, date, model and trash icon
① New chat · ② Past chats list · ③ Favorite star · ④ Trash · ⑤ Input box that starts a new chat
  • Press ① New chat to show the ② past chats list in the chat area. Each row shows the title (first message), date, and model.
  • Click a row to see that chat again; messages you send continue the same conversation. The Undo this step buttons of earlier turns aren't recreated.
The Delete chat question shown after pressing the trash icon
⑥ Delete (Yes)
  • The ③ star icon makes a chat a favorite: it's pinned to the top and never deleted automatically. The ④ trash icon deletes a chat after asking (⑥).
  • Type a message in the ⑤ box below the list and send it to start a new chat.
  • Up to 20 chats are kept per AI; beyond that, the oldest non-favorite chat is deleted.
  • When you reopen the chat window or restart the app, each tab opens the chat (or the list) you were last on.

Help and example requests

The chat window with the help panel opened on the right by the question mark button
① Question mark button · ② Close (X) · ③ What the AI can do

Press the ① question mark button next to New chat to widen the window to the right and open a help panel beside the chat. The chat stays visible and you can keep using it. Press the question mark button again or the ② X at the top of the panel to close it, and the window returns to its original width. If the window is at the right edge of the screen, it moves left so the panel fits and moves back when you close it; in a maximized window the chat area gets narrower instead.

  • ③ What the AI can do: the tools for looking at the drawing, generating an image and pixelating it, drawing, frames and animation, layers, groups and parts, skins and outfits, layer effects, references, canvas and colors, and files, explained by group.
The help panel scrolled to the example requests and tips
④ Example request (click to put it in the message box) · ⑤ Tips
  • ④ Example requests: click one to put it in the message box (the help panel stays open), then edit and send it.
  • ⑤ Tips: in our tests Codex's GPT-6-Astra drew best, and Codex uses GPT-6-Astra (recommended) by default. Be specific about size, palette, and style, attach a reference picture, and break big jobs into small steps. You can delete or edit the last message and send it again.

Generate image → pixelate

Ask the Codex tab for something like "draw a knight with a sword", and instead of placing pixels one by one the AI calls the generate_pixel_art tool. Chickxel runs the Codex CLI on your computer (codex exec, Codex image generation) with your ChatGPT login (no API key) to generate a high-quality image, then turns it into pixel art the same way as Pixelate AI images (background removal, auto optimize, a shared palette and 1-px outlines) and inserts it. Each image takes about 30–90 seconds.

The drawing settings panel opened in the Codex tab (Draw pixels directly chosen)
① Drawing settings button (a red X while open) · ② Codex CLI status · ③ Info icon · ④ Auto · ⑤ Generate image → pixelate · ⑥ Draw pixels directly · ⑦ Use palette colors only
  • Drawing settings: the ① Drawing settings button (sliders icon) next to the question mark button at the top of the chat window opens a settings panel on the right, like the help panel. Only one of help and drawing settings is open at a time, and while it's open the button shows a red X. The panel also shows the ② Codex CLI status (logged in / not installed / not logged in).
  • Hover over an option or its ③ info icon for the longer explanation. Generate image shows only the generation options, Draw pixels directly shows only Use palette colors only, and Auto shows both.
  • Drawing mode: ④ Auto (default) in the Codex tab edits the current picture by placing pixels when the chat's Current file only is on, and otherwise tries Generate image → pixelate first. If it can't generate (no Codex CLI or a generation error), the same request is drawn with the pixel tools, followed by the same whole-picture review as Draw pixels directly. If you press Stop during generation, it doesn't fall back to drawing pixels. ⑤ Generate image → pixelate always generates and converts, and ⑥ Draw pixels directly has the AI place pixels one by one with the pixel tools. If you choose ⑤ or ⑥ yourself, that mode is kept. A Generate image setting saved by an older version switches to Auto once; a saved Draw pixels directly is kept.
    • ⑦ Use palette colors only (under Draw pixels directly — shown for Auto and Draw pixels directly, off by default, saved): when on, the colors the AI paints with the pixel tools (the draw_pixels legend, set_pixels, draw_shape, fill, replace_color's target color, the new_project background) are changed to the nearest color of the active palette (the same color distance as the Pixelate tool). Fully transparent (erasing) is still allowed; semi-transparent colors become the nearest opaque palette color. The tool result tells the AI what changed, e.g. "팔레트 색으로 맞춤: #E63228→#C81E1E", and each message also sends the palette colors (up to 64) so the AI draws with them from the start. It works in both the Claude and Codex tabs and doesn't affect generated images (the conversion's palette settings) or layer effects. When off, all colors and alpha are used as before.
  • Whole-picture review when drawing pixels: with Draw pixels directly (including Auto's fallback), the AI first reads your words and attached images together, lists the subject, size, proportions, pose, colors, style and anything to avoid, and plans the overall layout and where each part goes. Without an image, it works from the conditions you described. When a turn that changed pixels or parts ends, Chickxel automatically sends the AI the current canvas with all layers combined for a review. The AI scores the silhouette, limb placement and style out of 10 against your original request and images, fixes what's wrong, and looks at the whole picture again (up to three rounds of fixes; if it doesn't improve, it explains the remaining problems). The score is the AI's subjective judgment, not an exact similarity measurement. The review and fixes belong to the same undo step as the turn, and the extra AI turns take more time and usage. Generate image → pixelate doesn't use this review.
The generation options shown when Generate image is chosen
⑧ Result-size correction · ⑨ Result size · ⑩ Remove background · ⑪ Auto-optimize the conversion · ⑫ Insert as · ⑬ Style reference · ⑭ Default animation frames · ⑮ Generation
  • Inserting (⑫): as a New layer in the current document (one undo step together with the AI's turn) or as a New document. If the generated image is larger than the open canvas, you're asked first whether to expand the canvas or choose a crop position (see Answering the AI's questions).
  • Background: unless you mention a background, the image is generated on a plain transparent background with no scenery.
Generation optionWhat it does
⑧ Result-size correctionOff by default (older saved settings also load as off). When off, ordinary generated images are converted with the main preset's result-size setting (with Auto, at the pixel grid found in the image), and a size you mention in the chat (e.g. "64×64") or one Codex picks for the subject before generating is only passed to the image generation as a rough scale hint. A turn that converts an attached picture to pixel art fits the result to the chosen size even with correction off (see turning a reference image into pixel art below). When on, other generated images are also fitted to the Result size setting or the size given in the chat. View conversion settings opens with the conversion settings that made the result.
⑨ Result size32 · 48 · 64 · Custom (long side in px). Only enabled when Result-size correction is on.
⑩ Remove backgroundRemoves the background when converting (on by default).
⑪ Auto-optimize the conversionAuto-optimizes the conversion and inserts the top-scoring result as-is (on by default). The conversion starts from the saved stage settings and optimization criteria of the AI image conversion preset — the preset whose Main button is green in the Auto optimize settings window (regardless of that preset's Auto optimize checkbox). If that preset is deleted, the built-in Same hue family preset is used while it exists, otherwise the first preset in the list. When this is off, the main preset's stage settings are still used and only the optimization is skipped. The progress reads "Optimizing conversion… pass p · trial n/N · best x". If the top result is a failed one (empty or too small — wrong pixel size detected), nothing is inserted and an error is reported.
⑫ Insert asNew layer · New document.
⑬ Style referenceAuto · None · Specific reference. A pixel-art example sent along with the generation. Auto picks one from your references (your own; built-in examples only when turned on) when you attach a non-pixel character picture to redraw as pixel art, or when a reference matches what is being drawn.
⑭ Default animation framesIdle 4 · Walk 6 · Run 6 · Attack 6 · Jump 6 · Hurt 3 · Death 5 (2–12). A count you give in the chat wins.
⑮ Generation (Animation group)All on one sheet (recommended) (default) · One image per frame (the previous behavior: one frame at a time with frame 1 and the previous frame attached). Choosing one image per frame shows a red warning: per-frame generation often changes the character's look and size between frames and takes as long as the number of frames.

The options are saved in the settings.

The progress line while a walk animation is generated as one sprite sheet
⑯ Progress line while generating the sprite sheet · ⑰ Stop
  • Animations: ask something like "make a walking animation" and the frames are planned (built-in key poses for each action, or poses the AI chooses), then by default generated in one go as a single sprite sheet: one Codex image generation draws every frame of the same character side by side in one row (from 7 frames a 2-row grid, e.g. 4×2) in one wide image, with the same scale, camera and baseline, a transparent background and no labels or grid lines (the prompt lists each frame's pose). The ⑯ chat progress line shows "Generating sprite sheet (4 frames, Codex)…". The sheet is split automatically by empty columns and rows, and re-split as a grid (N×1, or columns×rows) if that gives a different frame count. The frames are bottom-center aligned (a jump keeps its original offsets) and converted together on one canvas with a shared palette and a 1-px outline by default. The sheet is converted at its original size (up to 4096 px on the long side), so its pixel blocks aren't shrunk and local cell correction stays on. With One image per frame the progress line shows "Generating frame 2/6 (Codex)…" instead. ⑰ Stop cancels it.
  • Turning a reference image into pixel art: in the Codex tab with Auto, attaching a picture and asking to turn it into pixel art always generates an image and then pixelates it, even if you give a size. The result size is, in this order, the size you give in the chat, the result-size correction size if that's on, or a square size between 8 and 256 px that Codex picks before generating by looking at the attached picture (or the subject description); meanwhile the progress line shows "Selecting a pixel size from the reference image (Codex)…". The chosen size is written at the start of the generation prompt and in its style, composition and pixel-grid rules, and the prompt asks to keep the attached picture's character, pose, outfit and colors while drawing with an even pixel grid, a limited palette, crisp outlines and cel shading. For an animation sheet each frame has that size, so the whole sheet can be larger.
The result card after image generation: thumbnail, insert message and View conversion settings
⑱ Result card · ⑲ View conversion settings
  • ⑱ Result card: when it's done, the chat shows a thumbnail (frames side by side), the insert message and a ⑲ View conversion settings button. It opens the Pixelate AI image window with the generated sheet (or per-frame images) and the split and conversion settings used, so you can tweak them and insert again. Generation records are kept in <settings folder>/Chickxel/AiDraw/ (the latest 40; the sheet as sheet.png, per-frame images as frame-01.png…).
Drawing settings in the Claude tab: the red alert icon next to Generate image and its tooltip
⑳ Red alert icon and its tooltip
  • Claude tab: Claude can't create images, so it always draws pixels directly. In the drawing settings a ⑳ red alert icon appears next to the generate option, with the tooltip "Claude can't create images, so it draws pixels directly. Image generation is available in the Codex tab." If you explicitly ask Claude to "let Codex do it", it calls generate_pixel_art and that drawing is generated with Codex (Codex CLI must be installed and logged in).
The Generation prompt card expanded in a turn asking to turn an attached picture into 48 px pixel art
㉑ Generation prompt card · ㉒ The full instruction, expanded
  • ㉑ Generation prompt card: when Codex image generation starts, the chat shows a card with your original request on one line. Click it to expand ㉒ the full generation instruction that was actually sent; the card stays when you reopen the saved chat.

What the AI can do in the chat help (question mark button) has a Generate image → pixelate group (generate_pixel_art).

Limiting edits to the current file

Asking for a new picture with Current file only on: the request is refused
① Current file only · ② Edit scope notice · ③ Refused new picture (new_project)

Turn on ① Current file only next to Attach canvas below the input box before sending, and the AI edits only the file that's open when you send.

  • Inside that file it can draw, add layers, frames, groups, parts, skins, and layer effects, and tidy up layers.
  • Opening or creating other files, such as new projects or opening files, is refused (③ red line; saving still works).
  • The chat shows the scope (②), like Edit scope: current file "slime.chickxel" only. Turn it off to lift the limit from the next message.

Protecting locked layers

The AI never touches locked layers (or the parts of a locked group), whether or not Current file only is on.

A tool call refused because the layer is locked in the timeline
① Tool line refused because the layer is locked · ② Lock icon in the timeline (locked)
  • Changing their pixels, name, visibility, opacity, part position or size, adding, changing, removing, or permanently applying their layer effects, or changing the group's skin or outfit is refused with a "locked" reason (①).
  • Deleting a frame where a locked layer has pixels, and resizing the canvas (including enlarging it to fit effects) while any layer is locked, are refused too. Reading still works.
  • Lock layers the AI must not change with the ② lock icon in the timeline.

Progress display

The progress line at the bottom while a reply is coming in: writing tool call, characters received, elapsed time
① Progress line: what is happening · characters received · elapsed time

While a reply is coming in, the bottom line (①) shows what's happening (waiting for response, thinking, writing tool call, running in editor, writing reply) and the elapsed time.

Large jobs that draw many frames at once can take over a minute to prepare. If the received character count keeps growing, it's working.

Answering the AI's questions

The question card shown before inserting a generated image larger than the canvas: the question, Expand canvas and Choose crop position, Other, Cancel
① Question · ② Options (Expand canvas · Choose crop position) · ③ Other · ④ Cancel

When the AI needs a decision from you, a ① question card appears right above the chat input box. The AI doesn't pick an answer on its own and carry on. If you were on the other tab, the window switches to the tab that asked.

  • ② Click one of the options (2–5) to send that answer to the AI; the chosen answer is also added to the chat as a line.
  • ③ Other shows an Other answer box and a Submit answer button. Type your answer and press Enter or Submit answer.
  • ④ Cancel (or Esc in the answer box) closes the question; the AI won't guess an answer and carry on.

Generated image larger than the canvas: if an image made with image generation is larger than the open canvas, you're first asked to choose ② Expand canvas (keeps the existing art and enlarges the canvas) or Choose crop position. The canvas can't be expanded while a layer is locked. If the open document or the canvas size changes while the question is waiting, nothing is inserted.

The Choose crop position window: the highlighted outline on the source preview, the size and position to keep, and Keep this area
⑤ Source preview and the area to keep (highlighted outline) · ⑥ Size and position to keep · ⑦ Keep this area
  • ⑤ The Choose crop position window (opens when you choose the crop option): the area inside the highlighted outline on the source preview is what's kept. Drag the outline or click outside it to move it; arrow keys move it by 1 pixel and Shift+arrow keys by 10. Canvas space beyond the image stays transparent.
  • ⑥ Check the size and position to keep (in source pixels), then press ⑦ Keep this area to crop and insert that area. Cancel inserts nothing and leaves the existing art unchanged.

Chickxel also sends a Windows or macOS system notification when the AI asks a question, finishes, or hits an error (if the operating system allows notifications), so you know when to come back even while working in another window.

Edits the AI can make

The AI looks at the open image and edits it directly.

One "draw a staff" turn: the AI looks at the image and draws lines and an ellipse on a new layer
① View the image (get_image) · ② Drawing tools (draw_shape, set_pixels) · ③ New layer the AI created (Staff)
  • ① View the image, read pixels
  • ② Draw points, lines, rectangles and circles; fill, erase, replace colors
  • ③ Create and arrange frames, layers, tags, groups and parts
  • Add and switch skins, save and apply outfit presets
  • Add, change, and remove layer effects, apply them permanently, enlarge the canvas to fit them
  • Search and view references (search_references, get_reference), read style rules (get_style_rules), save the canvas as a reference and caption it (add_reference, set_reference_info) — see References: teach the AI your style
  • Canvas size, palette and colors, new project, open, save

The end of each ①② tool line shows in parentheses how long that tool took (e.g. get_image (22s), get_image (1m 20s)). For a failed tool it follows the error text, and it stays when you reopen the chat. A tool that is still running shows no time yet.

It saves only when asked. If a never-saved new project has changes, it asks whether to save before switching to another document.

Asking for layer effects

A turn where the AI added an outline effect, and the effect row in the timeline
① Effect row in the timeline (Outline) · ② Your request · ③ Tool line that added the effect (add_effect) · ④ Undo this step

The AI can use the same layer effects as the Effects dialog. Effects don't change the drawing's pixels, so you can still change or remove them later in the Effects dialog or the ① timeline.

  • ② Ask things like "add a 1 px black outline to the character", "add a white hit flash on frames 3–4", "make it appear over the first 4 frames", or "put a shadow 2 px to the lower right".
  • Animated effects (hit flash, blink, shake, appear, and so on) play over the frame range you give. Without a range they cover the whole animation, as in the Effects dialog.
  • Your saved effect recipes and recipes from enabled packages can be added by name too.
  • It can also change the settings, frame range, on/off state, order, and clipping of existing effects.
  • Applying effects permanently (baking them into the pixels) and enlarging the canvas to fit effects that spill outside it happen only when you ask.

Effect changes (③) are part of the AI's reply, so one undo step (④) undoes them too. Effects on locked layers are never changed.

References: teach the AI your style

References are a library on your computer that the AI looks through before drawing. Put in art you like, your own style rules and technique notes, and the AI finds similar images, follows their proportions and palette, and checks its result against the rules when it's done. It searches this user guide too.

The AI references window: thumbnails, search and kind filter, preview and details, buttons and the missing-description notice
① Thumbnails · ② Search box · ③ Kind filter · ④ Preview · ⑤ Title, description, tags and kind · ⑥ Palette swatches · ⑦ Add files… · ⑧ Add current canvas · ⑨ Delete · ⑩ Open folder · ⑪ Edit rules · ⑫ Caption with AI · ⑬ Missing-description notice

Open the AI references window with AI > References…. On the left are ① thumbnails (pixel-perfect on a checker background, with title and tags), a ② search box (the same search the AI uses) and a ③ kind filter; on the right are a ④ preview (animated when there are several frames), ⑤ editable title, description, tags and kind, and the ⑥ palette swatches.

ButtonWhat it does
⑦ Add files…Adds several image or note files at once. You can also drag files onto the window.
⑧ Add current canvasAdds the open image as a reference.
⑨ DeleteMoves the selected reference file to the app trash (built-in references can't be deleted).
⑩ Open folderOpens the references folder in Explorer/Finder.
⑪ Edit rulesOpens your own style rules, rules.md (created from a template if missing). The AI reads them together with the default rules.
⑫ Caption with AIPuts a request to add titles, descriptions and tags to uncaptioned references into the input box of the active AI tab and brings up the chat window. It's sent only when you press send, so nothing is spent automatically.

When some references have no description, the window shows ⑬ "N references have no description". Descriptions and tags help the AI find them.

The kind filter list open
③ Kind filter (All kinds, Character, Item, Tile, Effect, UI, Other)
  • Asking: say something like "Draw a 32px bat like the slime in the references." and the AI looks up the references before drawing. The chat help (question-mark button) has a References tool group and this example.
  • Adding from the chat: say "save this to my references" and the AI adds the current canvas (or a layer or frame range) with a title, description and tags. Adding and captioning references only write to the library folder, so they work even with Current file only on.
The AI references tab in Preferences
⑭ References folder · ⑮ Change… · ⑯ Default · ⑰ Open folder · ⑱ Show built-in examples
  • Folder (⑭): by default <settings folder>/Chickxel/References (%AppData%\Chickxel\References on Windows). Files you put into this folder outside the app are picked up automatically when the window opens.
  • Supported files: images (.png, .gif with frames, .chickxel projects — each frame composited, animations keep their frame count) and text notes (.md, .txt). Title, description, tags, kind (character, item, tile, effect, UI, other), size, frame count, palette and similar info are stored in index.json in the same folder.
  • Built-in references (marked Built-in, can't be deleted): the style rule set Chickxel default rules (1 px or selective outline, a single light direction, 3–4-shade hue-shifted ramps, no orphan or jaggy pixels, a limited palette, a readable silhouette, consistent proportions, and key poses, smears and walk-cycle contacts for animation) and example images — a 16×16 slime, a 16×16 sword, a 32×32 front-facing character, a 4-frame 16×16 slime bounce, and a 16×16 grass tile.
  • Preferences: in Edit > Preferences… > AI references you can ⑮ Change… the ⑭ folder, go back to the ⑯ Default folder, ⑰ Open folder, and turn the built-in example images back on with ⑱ Show built-in examples (they are off by default for now because of their low quality; while off they are not used for search or as image-generation style references).

References stay on your computer. Chickxel uploads and downloads nothing; only the AI CLI you already use (Claude Code or Codex) sees what the AI fetches with its tools.

Undoing

The result image and Undo this step button under an AI reply
① Result image of the reply · ② Undo this step
After pressing Undo this step: the outline is gone from the canvas and the button reads Reapply
③ Reapply

Each AI reply is one undo step, so Ctrl+Z undoes it all at once. Each reply also comes with a ① result image and ② Undo this step / ③ Reapply buttons.

Editing or deleting the last message

The pencil and trash icons under the last message you sent
① Pencil (edit) · ② Trash (delete)

Small ① pencil (edit) and ② trash (delete) icons sit under the last message you sent. They're disabled while a reply is coming in; a turn you stopped with Stop can be deleted.

  • Delete: removes that message and the reply, tool lines and result image after it. The previous message then gets the icons, so you can press again to step back one message at a time, all the way to the start.
  • Edit: removes it the same way, then puts its text and image chips (with the attached pictures, if they're still available) back in the message box so you can change it and send. Images of chats reopened from disk aren't resent.
The question shown when deleting a turn that changed the drawing
③ Undo · ④ Keep drawing · ⑤ Cancel
  • If that reply changed the drawing and the step can still be undone, you're asked Also undo the drawing changes made in this exchange? — ③ Undo (same as Undo this step), ④ Keep drawing, or ⑤ Cancel (nothing is removed).
  • You can also delete or edit the last message of a reopened past chat (the drawing question isn't asked there).

The AI doesn't remember what you removed: after a delete or edit, the next message starts a new AI session and includes a recap of the remaining conversation.

Troubleshooting

Codex tab: a red line explaining why the editor tools could not be reached, and an end line with only the time
① Red line with the likely reason · ② End line showing only the time (Codex)
  • If the AI can't connect to the editor, the chat shows a ① red line with the likely reason. Common causes are a proxy (HTTP_PROXY, HTTPS_PROXY), VPN or security software blocking connections to 127.0.0.1, or an outdated CLI.
  • Codex replies appear all at once after they're fully written, and show only the ② time, not the cost (Claude shows the cost too).
If you distribute an app with this feature to others, check Anthropic's and OpenAI's usage policies (restrictions on using subscription logins in third-party apps).

Shortcuts

Common default shortcuts, grouped by category. Press F1 in the app to open this guide (contents and search); the list of default shortcuts is under Help > Shortcut list. You can change shortcuts to any keys you like (Customizing shortcuts).

Customizing shortcuts

The Shortcuts tab of Preferences: the list filtered by typing export in the search box, the Export as animated GIF row waiting for a key, Change, Add, None and Default buttons on each row, and Reset all, Export (JSON) and Import (JSON) at the bottom
① Shortcuts tab · ② Change · ③ Add · ④ None · ⑤ Default · ⑥ Row waiting for a key (Press a key…) · ⑦ Search box · ⑧ Reset all · ⑨ Export (JSON)… · ⑩ Import (JSON)…

In the ① Shortcuts tab of Edit > Preferences… (Ctrl+,) you can change not only menu commands, tools and tool options but also keys that aren't in any menu (drop selection Enter, arrow-key nudging, peek previous frame H, selection slot M, etc.).

  • For each row choose ② Change (use the key you press), ③ Add (one more key), ④ None or ⑤ Default. After Change or Add, the row ⑥ waits for a key (Esc cancels).
  • ⑦ Search by command, category or key, and reset everything at once with ⑧ Reset all.
  • ⑨ Export (JSON)… saves the current shortcuts to a file, and ⑩ Import (JSON)… applies them again. The same file works on both Windows and macOS.
The Shortcut conflict prompt after pressing Ctrl+E for Export as animated GIF: the key is already used by File/Export…, remove it from that command and assign it here? with Yes and No
⑪ Conflict prompt: Yes moves the key here, No leaves everything as it was
  • If you assign a key used by another command, ⑪ you're asked whether to remove it from that command.
The File menu open: the changed key Ctrl+Alt+G is shown next to Export as animated GIF…
⑫ The changed key (Export as animated GIF… = Ctrl+Alt+G) shows up in the menu right away
The Help menu open with the Shortcut list item marked
⑬ Help > Shortcut list
  • Changed keys are reflected immediately in menus (see ⑫) and toolbar tooltips. ⑬ Help > Shortcut list shows the defaults.
The Shortcuts window: a table of all default shortcuts with Category, Key and Action columns

Files and windows

ActionKeys
New projectCtrl+N
OpenCtrl+O
Open folderCtrl+Shift+O
Open Unity projectCtrl+Shift+U
Save (including export)Ctrl+S
Save asCtrl+Shift+S
Export dialogCtrl+E
Close the current tabCtrl+W
PreferencesCtrl+,
Next / previous document tab (main window), next / previous tab (Preferences, export dialog)Ctrl+Tab / Ctrl+Shift+Tab
File browserF8
AI chat (Claude · Codex)Ctrl+L
Movement testF5
GuideF1

When a tab row or an option group such as off/on has focus, you can also switch with ←/→ and Home/End.

The File menu open: Ctrl+N, Ctrl+O, Ctrl+Shift+O, Ctrl+Shift+U, Ctrl+S, Ctrl+Shift+S, Ctrl+E and Ctrl+W to the right of New project… through Close
① Shortcuts in the File menu

Open the File menu to see the current key to the right of each command at ① (changed keys show up there too).

Editing and selection

ActionKeys
Undo / redoCtrl+Z / Ctrl+Y
Cut / copy / pasteCtrl+X / Ctrl+C / Ctrl+V
DeleteDelete
Select allCtrl+A
DeselectCtrl+D or Esc
Drop (floating selection)Enter
Move 1 pixelArrow keys
Move 8 pixelsShift+arrow keys or Ctrl+Shift+arrow keys
Undo works per stroke with 1000 steps by default, which you can raise to up to 10000 in Preferences. Pressing Ctrl+Z in the file list restores the last deleted file.
The Edit menu open: the keys to the right of Undo, Redo, Cut, Copy, Paste, Delete, Select all and Deselect
① Edit menu keys, Undo to Deselect

The Edit menu shows the keys from Undo to Deselect at ①.

Transform and image

ActionKeys
Flip horizontal / vertical (selection, or current cel if none)Shift+H / Shift+V
Rotate 90° (selection, or whole canvas if none)Ctrl+R / Ctrl+Shift+R
Transform mode (rotate, size, move)Ctrl+T
OutlineCtrl+Alt+O
Replace colorCtrl+Alt+R
Canvas size modeCtrl+Alt+C
Apply transform / canvas size modeEnter
Cancel transform / canvas size modeEsc or Ctrl+Z

In canvas size mode, dragging a handle changes that edge, Ctrl+drag also resizes the image, and dragging inside the image moves it.

The Edit menu open: the keys to the right of Flip horizontal and vertical, Rotate 90°, Transform, Add outline, Replace color and Canvas size
① Edit menu keys, flips to Canvas size

The same keys appear at ① in the Edit menu, from the flips to Canvas size.

Tools

ActionKeys
Selection slot tool / cycle selection shapeM
Lasso selectQ
Magic wandW
GradientF
ShapeR
Shape: lineL
Decrease / increase brush size[ / ]
Pixel perfectP
Filled shapesU
Swap primary and secondary colorsX
All matching colorsShift+G
Horizontal / vertical symmetryShift+X / Shift+Y
Expand and switch grouped tools (fill, select)Long-press or right-click the tool slot

Pressing M from another tool switches to the selection slot tool. While using a selection tool, each press within 10 seconds cycles rectangle → ellipse → lasso → magic wand (the first press after 10 seconds only shows a hint).

The Tools menu open: tool keys from Pencil B through Shape R to 9-slice S, then Filled shapes U, Fill all matching colors Shift+G, Pixel perfect P, mirror Shift+X and Shift+Y, brush size ] and [, and color swap X
① Tool keys · ② Tool option, brush size and primary/secondary swap keys

The Tools menu shows the keys of ① the tools and ② the tool options, brush size and color swap.

View and canvas

ActionKeys
Zoom in/outWheel
Brush (pen) sizeCtrl+wheel
PanSpace+drag or middle-button drag
Fit to window / 1×Ctrl+0 / Ctrl+1
Pixel gridCtrl+G
Tile gridCtrl+Shift+G
Tiled modeCtrl+Shift+T
Onion skinCtrl+J
Peek previous frameH (hold)
The View menu open: the keys to the right of Zoom in, Zoom out, Fit to window, Actual size, Pixel grid, Tile grid, Tiled mode and Onion skin
① View menu keys, Zoom in to Onion skin

The View menu shows the keys from Zoom in to Onion skin at ①.

Timeline · layers · groups

ActionKeys
Play / stopShift+Enter
Previous / next frame, / .
First / last frameHome / End
New empty frameAlt+N
Duplicate frameAlt+D
New layerShift+N
Rename layerF2
New groupCtrl+Shift+N
New partShift+P
Previous / next skin (change outfit)Alt+[ / Alt+]
Scroll layers up/down (in the timeline)Wheel
Scroll frames left/right (in the timeline)Ctrl+wheel

Skin switching applies to the current group (or the selected part's group) and isn't recorded in undo history. For groups, parts and skins, see the Parts and groups chapter.

The Frame·Layer menu open: the keys to the right of Play / stop Shift+Enter through Previous and Next skin Alt+[ and Alt+]
① Shortcuts in the Frame·Layer menu

The Frame·Layer menu shows the keys from Play / stop to Next skin at ①.

Language

Chickxel includes Korean and English. On first launch it picks the language that matches your computer, or starts in English if there's no match. You can add other languages yourself with a CSV file.

Changing the display language

The Edit menu open with the Preferences… item at the bottom marked
① Edit > Preferences… (Ctrl+,)
The General tab of Preferences: the Display language list in the Language part at the top is open showing 한국어 and English, with the OK button at the bottom right
② Language part · ③ Display language list · ④ OK
  • Open ① Edit > Preferences… (Ctrl+,). ② Language is at the top.
  • Choose from the ③ Display language list and click ④ OK.
The prompt after OK: language settings changed, restart Chickxel to apply them, with Restart now and Later buttons
⑤ Restart now · ⑥ Later
  • Click ⑤ Restart now to close the app and reopen it in the new language. If there are unsaved documents, you're asked first, just like when closing. Choose ⑥ Later to apply it the next time you launch.

Creating a new language

The Language part of the General tab in Preferences: the Display language list, the Export translation CSV…, Add language from CSV… and Open language folder buttons and the note
① Export translation CSV… · ② Add language from CSV…
  1. Save a CSV file with ① Export translation CSV… in Preferences. You can open it in Excel, Google Sheets and so on.
  2. The first row is key,ko,en and the second row is #name,한국어,English. Add a new column at the far right with the language code in the first row (e.g. ja) and the language name in the second row (e.g. 日本語).
  3. Translate the text in that column. Braces such as {0} and {name} are placeholders for values, so keep them as they are (you may change their order).
The Display language list open after adding a CSV with a Japanese column: 日本語 (ja) appears below 한국어 and English, with the import result below
③ The language added from the CSV (e.g. 日本語 (ja)); the number of imported strings is shown below the list
  • Choose the file with ② Add language from CSV… and it appears in the ③ language list. Select it and restart to apply it.

Empty cells show the English text, so you can add your translation bit by bit. Adding the same language code again overwrites it.

Editing and removing built-in text

  • If you edit the ko or en column in an exported CSV and add it, only the edited cells override the built-in text.
The Language part of the General tab in Preferences with the Open language folder button marked
① Open language folder
  • ① Open language folder opens the folder containing the CSV files of added languages. Deleting a file removes that language from the list, or, for a file that edited a built-in language, restores the original text.