ASCII Animation Creator
Create frame-by-frame ASCII art animations with drawing tools, onion skinning, live preview, and export to text or animated GIF.
About
Frame-by-frame ASCII animation demands spatial reasoning across a discrete character grid. Each cell holds exactly one glyph from a set of 95 printable ASCII characters (code points 32 - 126). Timing errors compound: a single misplaced frame at f = 12 fps produces an 83 ms visual glitch that breaks perceived motion. This tool implements a full editing pipeline with onion skinning, flood fill via breadth-first search, and native GIF89a encoding with LZW compression for export. Grid dimensions are configurable up to 80 Ć 40 characters.
The tool approximates smooth motion through persistence of vision at configurable rates between 1 and 24 fps. Onion skinning renders the previous frame at reduced opacity so you can track motion deltas between frames. All project data persists in localStorage. Limitation: GIF export rasterizes glyphs onto a canvas, so output resolution depends on chosen font size. For terminal playback, use the plain-text export with frame delimiters.
Formulas
Playback timing derives from the frame rate. The interval between frames:
where f is the frame rate in fps. At f = 12 fps, each frame displays for 83.3 ms.
The flood fill algorithm uses BFS. Starting from cell (r, c) with target character t and replacement character rchar:
GIF89a encoding uses LZW compression. The minimum code size m is derived from the color table size N:
where N is the number of distinct colors in the palette (here 4: background, foreground, onion skin, transparent). Variable-length codes start at m + 1 bits and grow as the dictionary fills.
Reference Data
| Character | Code Point | Common Animation Use | Visual Weight |
|---|---|---|---|
| . | 46 | Empty space / background dot | Light |
| # | 35 | Solid block / wall | Heavy |
| @ | 64 | Character / entity center | Heavy |
| * | 42 | Sparkle / explosion particle | Medium |
| - | 45 | Horizontal line / ground | Light |
| | | 124 | Vertical line / wall edge | Medium |
| / | 47 | Diagonal line (left-leaning) | Medium |
| \ | 92 | Diagonal line (right-leaning) | Medium |
| _ | 95 | Floor / underline | Light |
| = | 61 | Double horizontal / track | Medium |
| ~ | 126 | Water / wave motion | Light |
| ^ | 94 | Arrow up / mountain peak | Light |
| O | 79 | Circle / head / ball | Heavy |
| o | 111 | Small circle / bubble | Medium |
| : | 58 | Eyes / sparse pattern | Light |
| ; | 59 | Wink / drip | Light |
| ( ) | 40, 41 | Curved body / shield | Medium |
| < > | 60, 62 | Arrows / mouth / beak | Medium |
| + | 43 | Crosshair / intersection | Medium |
| & | 38 | Dense fill / vegetation | Heavy |
| % | 37 | Texture / debris | Heavy |
| ! | 33 | Exclamation / rain drop | Medium |
| ' | 39 | Spark / apostrophe | Light |
| " | 34 | Double spark / steam | Light |
| (space) | 32 | True empty / transparency | None |