A browser-based ASCII and block character art editor.
Blockparty is a lightweight canvas for making art with Unicode block elements, box-drawing characters, braille patterns, and geometric symbols. Draw freehand, build terminal UI mockups, make pixel-style illustrations, or just mess around with characters most keyboards never touch.
Rendering is done on an HTML <canvas> for pixel-perfect, gap-free output.
Cell proportions match a typical monospace terminal (roughly 0.55 width:height), so art drawn here looks consistent whether viewed in the app, exported as SVG, or piped into a real terminal as ANSI text.
!!! A note on terminal rendering:
Monospace terminal fonts are not perfectly square, cells are typically taller than wide (~0.55 width:height ratio). Blockparty's canvas matches this ratio by default, so shapes that look correct in the app should also look correct when printed as ANSI in a real terminal.
If your terminal's font uses a different ratio, block-heavy art may appear slightly stretched or squished; switching to a standard monospace font (Menlo, Cascadia Code, JetBrains Mono) may resolve this.
- Four character sets: block elements, box drawing, braille/noise, geometric shapes
- Expanded colour palette: 90 colours across 10 rows, plus a custom hex picker
- Canvas backgrounds: dark, tinted, and light options
- Adjustable canvas size: up to 80 columns × 40 rows
- Adjustable cell height: 8–32px; cell width follows automatically at a fixed terminal-matching aspect ratio
- Independent gap controls: separate horizontal and vertical spacing sliders, 0–8px each, for anything from flush pixel art to LED dot-matrix or striped effects
- Drawing tools: freehand draw, erase mode, border fill, flood fill, invert, flip H/V
- Grid overlay: toggle cell guides on and off
- Plain text output: copy for pasting anywhere (Obsidian, docs, code comments)
- ANSI colour output: copy or download with embedded 24-bit ANSI escape codes, ready to print straight into a terminal from Python, Node, bash, or any script
- SVG export: download a pixel-accurate vector image directly from the canvas, ideal for embedding in READMEs
- Download: export as
.txt(plain),.ans(colour), or.svg(vector image)
The simplest way to put your art in a README is the download .svg button:
- Draw your art
- Click download .svg
- Commit the file to your repo and embed it:

GitHub renders SVGs natively with full colour, unlike plain ANSI text which GitHub strips of colour entirely.
The ANSI export embeds 24-bit colour codes (\x1b[38;2;R;G;Bm) directly in the text, so it renders in full colour wherever it's printed to a terminal. Working examples for each are in test/:
cd test
chmod +x demo.sh run_demos.sh
./run_all.shThis runs demo.py and demo.shback to back, each reading test/example.ans and printing it with full colour to confirm the export works identically across languages.
Colour codes are only emitted when the colour changes between characters, so output stays compact. Each line resets with \x1b[0m to avoid bleeding into anything printed afterward.
- Unicode Block Elements —
U+2580–U+259F - Box Drawing —
U+2500–U+257F - Braille Patterns —
U+2800–U+28FF - Geometric shapes and miscellaneous symbols