ANSI Art: History, Examples, Tools, Repositories, and a Practical Learning Map

Autor: pablo murad abril 2026

# ANSI Art: History, Examples, Tools, Repositories, and a Practical Learning Map
**Author:** Pablo Murad
**Date:** April 2026
> Goal: learn ANSI art as a craft you can actually edit, run, convert, and publish - not just collect links. This guide mixes history, terminal programming, classic BBS textmode culture, modern editors, code libraries, and runnable examples.

## Brutally honest starting point
ANSI art is not just 'colored ASCII'. Classic ANSI art combines **IBM PC Code Page 437**, **ANSI escape sequences**, **BBS-era composition**, **16-color discipline**, and often **SAUCE metadata**. Modern terminal art then expands the palette with Unicode, 256 colors, truecolor, Braille cells, Sixel/Kitty graphics, and TUI frameworks. Learn both, but do not confuse them.

## Short history
- **Terminal control before art:** ANSI/VT-style escape sequences let programs move the cursor, clear the screen, and style text. This technical base made text animation and colored terminal screens possible.
- **IBM PC textmode:** Code Page 437 supplied box drawing, block shading, lines, corners, and symbols. These glyphs became the visual vocabulary of PC textmode art.
- **BBS scene:** In the late 1980s and early 1990s, dial-up Bulletin Board Systems used ANSI screens for logos, menus, ads, loaders, and identity. Artists formed groups and released monthly ZIP/RAR collections called **artpacks**.
- **Groups and competition:** ACiD, iCE, Aces of ANSI Art, Mistigris, Fire, Blocktronics and others pushed style, scale, lettering, shading, and composition. Rivalry was fuel. The scene was underground, social, technical, and aesthetic at the same time.
- **Decline and preservation:** As the web displaced BBSes, the practical demand for ANSI screens collapsed. Archives such as Sixteen Colors, Artpacks.org, Defacto2, Textfiles, and scene.org now matter because they preserve a culture that could have evaporated.
- **Modern revival:** Today's ANSI/textmode work lives in archives, telnet BBSes, demoparties, terminal apps, retrocomputing, generative art, and creative coding. Tools like Moebius, PabloDraw, Durdraw, AnsiLove, textmode.js, Rich, Gum, and VHS keep the medium useful.

## Core vocabulary
- **ASCII art:** Usually 7-bit plain text art. No color required.
- **ANSI art:** Text art with ANSI escape sequences for color and cursor control, usually associated with MS-DOS/BBS files ending in `.ANS`.
- **Textmode art:** Broader umbrella for art made from character cells: ANSI, ASCII, BIN, XBin, Amiga ASCII, PETSCII, Teletext, Shift_JIS AA, Unicode block art, Braille art, etc.
- **Code Page 437 / CP437:** Original IBM PC character set. Essential for classic BBS ANSI.
- **SGR:** Select Graphic Rendition; the ANSI family of codes for colors and text styles, e.g. `ESC[31m` for red and `ESC[0m` for reset.
- **SAUCE:** Metadata appended to textmode files: title, author, group, date, dimensions, and format hints.
- **Artpack:** ZIP/RAR pack of artwork, info files, sometimes tools/music, released by an art group.

## Tiny visual examples
```text
╔════════════════════════════════╗
║  ANSI is composition in cells  ║
╠════════════════════════════════╣
║  █▓▒░  blocks create texture   ║
║  ┌─┐─┐  box drawing creates UI ║
║  color is escape code          ║
╚════════════════════════════════╝
```

## Runnable examples
### PowerShell: minimal ANSI color block
```powershell
# PowerShell 7+ recommended
$esc = "`e"
$reset = "$esc[0m"
$colors = 31,32,33,34,35,36,91,92,93,94,95,96
foreach ($c in $colors) {
    Write-Host "$esc[${c}m██ ANSI color $c $reset" -NoNewline
    Start-Sleep -Milliseconds 80
}
Write-Host ""
```

### PowerShell: tiny animated banner
```powershell
$esc = "`e"
$frames = @("░▒▓ ANSI ▓▒░", "▒▓█ ANSI █▓▒", "▓██ ANSI ██▓", "▒▓█ ANSI █▓▒")
for ($i = 0; $i -lt 40; $i++) {
    $frame = $frames[$i % $frames.Count]
    Write-Host "$esc[2J$esc[H$esc[96m$frame$esc[0m"
    Start-Sleep -Milliseconds 90
}
```

### CMD / Batch: print colored text
```bat
@echo off
REM On modern Windows Terminal / Windows 10+, ANSI usually works.
for /F "delims=" %%e in ('echo prompt $E ^| cmd') do set "ESC=%%e"
echo %ESC%[31mRed%ESC%[0m %ESC%[32mGreen%ESC%[0m %ESC%[36mCyan%ESC%[0m
```

### Bash: 256-color ramp
```bash
#!/usr/bin/env bash
for i in {16..231}; do
  printf "\e[48;5;%sm %3s \e[0m" "$i" "$i"
  (( (i-15) % 12 == 0 )) && echo
done
```

### Python + Colorama: moving block
```python
from colorama import init
import time, sys
init()
ESC = "\033"
for x in range(1, 40):
    sys.stdout.write(f"{ESC}[2J{ESC}[{5};{x}H{ESC}[96m█{ESC}[0m")
    sys.stdout.flush()
    time.sleep(0.03)
print()
```

### Convert an .ANS file to PNG
```bash
ansilove artwork.ans -o artwork.png
durdraw -p artwork.ans
```

## The practical learning route
1. **Week 1 - Terminal basics:** print ANSI colors, clear the screen, move the cursor, hide/show cursor, animate a single block.
2. **Week 2 - CP437 and composition:** copy a small `.ANS` from 16colo.rs, open it in Moebius or PabloDraw, change colors, draw boxes, add a signature, export.
3. **Week 3 - Conversion and publishing:** convert `.ANS` to PNG using AnsiLove, convert terminal output to HTML using ANSIFilter or ansi2html, record a GIF using VHS.
4. **Week 4 - Your own pack:** make three pieces: a logo, a BBS/menu-style screen, and a 5-frame animation. Add metadata and publish the files in a small repository.

## Repositories, resources, and references
### History and archives
- https://www.bbsgames.org/wiki/ANSI_art
- https://en.wikipedia.org/wiki/ANSI_art
- https://16colo.rs/
- https://artpacks.org/
- https://www.acid.org/info/info.html
- https://16colo.rs/group/acid
- https://defacto2.net/g/aces-of-ansi-art
- https://defacto2.net/website
- https://files.scene.org/browse/demos/groups/defacto2/artpacks/
- https://binarypassion.com/
- https://www.asciiart.eu/
- https://ascii.mozz.us/
- http://artscene.textfiles.com/

### Editors and authoring tools
- https://github.com/blocktronics/moebius
- https://github.com/cwensley/pablodraw
- https://github.com/cmang/durdraw
- https://github.com/1j01/textual-paint
- https://sixteencolors.github.io/js-textmode-editor/
- https://github.com/Kirilllive/ASCII_Art_Paint
- https://github.com/tuanchauict/MonoSketch

### Viewers, converters, and file formats
- https://github.com/ansilove/ansilove
- https://github.com/ansilove/libansilove
- https://sourceforge.net/projects/ansifilter/
- https://github.com/Kronuz/ansi2html
- https://github.com/kubetail-org/fancy-ansi
- https://www.acid.org/info/sauce/sauce.htm
- https://www.acid.org/info/xbin/x_spec.htm
- https://en.wikipedia.org/wiki/Code_page_437
- https://en.wikipedia.org/wiki/Box-drawing_characters

### ANSI references and terminal programming
- https://learn.microsoft.com/powershell/module/microsoft.powershell.core/about/about_ansi_terminals
- https://learn.microsoft.com/windows/console/console-virtual-terminal-sequences
- https://www.vt100.net/docs/vt100-tm/appendixa.html
- https://flokoe.github.io/bash-hackers-wiki/scripting/terminalcodes/
- https://en.wikipedia.org/wiki/ANSI_escape_code
- https://github.com/topics/ascii-art
- https://github.com/topics/ascii-art-generator

### Code libraries and playable examples
- https://github.com/Textualize/rich
- https://github.com/tartley/colorama
- https://github.com/termcolor/termcolor
- https://asciimatics.readthedocs.io/en/stable/intro.html
- https://github.com/ChrisBuilds/terminaltexteffects
- https://github.com/khrome/ascii-art
- https://github.com/dominikwilkowski/cfonts
- https://github.com/alexeyraspopov/picocolors
- https://github.com/lukeed/kleur
- https://github.com/pterm/pterm
- https://github.com/fatih/color
- https://github.com/spectreconsole/spectre.console
- https://github.com/ogham/rust-ansi-term
- https://github.com/crossterm-rs/crossterm
- https://github.com/yaronn/blessed-contrib
- https://github.com/charmbracelet/lipgloss
- https://github.com/charmbracelet/gum
- https://github.com/charmbracelet/vhs

### Image, video, and conversion projects
- https://github.com/TheZoraiz/ascii-image-converter
- https://github.com/hzeller/timg
- https://github.com/maxcurzi/tplay
- https://github.com/joelibaceta/video-to-ascii
- https://github.com/IonicaBizau/image-to-ascii
- https://github.com/vietnh1009/ASCII-generator
- https://github.com/xero/figlet-fonts
- https://github.com/PhMajerus/FIGfonts
- https://github.com/pwaller/pyfiglet

### Terminal art apps and inspiration
- https://github.com/abishekvashok/cmatrix
- https://github.com/akinomyoga/cxxmatrix
- https://github.com/M4444/TMatrix
- https://github.com/rastapasta/mapscii
- https://github.com/chubin/wttr.in
- https://github.com/fcambus/ansiweather
- https://github.com/da-luce/astroterm
- https://github.com/sinclairzx81/zero
- https://github.com/ArthurSonzogni/FTXUI
- https://github.com/ArthurSonzogni/Diagon

## What to build first
Do not start with a giant artpack. Start with these five deliverables:
1. A 16-color PowerShell banner that clears the screen and animates for 10 seconds.
2. A CP437 box/menu screen in Moebius or PabloDraw exported as `.ANS`.
3. A PNG render of that `.ANS` using AnsiLove.
4. A tiny Python/Colorama animation that moves a block or logo across the screen.
5. A GIF recording of your terminal demo using VHS.

## Safety and sanity notes
- Do not run random `.EXE`, `.COM`, or old DOS binaries outside DOSBox, a VM, or a disposable sandbox.
- Prefer source code and plain `.ANS`/`.ASC` files when learning.
- Check licenses before reusing art.
- Use a monospace font with CP437/box-drawing support.
- Always reset terminal style at the end of scripts with `ESC[0m`.