Turn any photo into living ASCII art you can play with
No AI needed

Every step written out. No terminal experience needed. Pick your setup.
A local-first, browser-native studio for turning images into animated, cursor-reactive ASCII compositions.
No image is ever uploaded. All rendering, processing, and export happens entirely inside your browser.
Classic ASCII · Braille · Halftone · Dot Cross · Line · Particles · Claude Code · Retro Art · Terminal
Grayscale · Full Color (sampled) · Matrix Green · Amber Monitor · Cyanotype · Phosphor · Ice White · Palette Gradient · Custom
Ctrl+Z / Cmd+ZlocalStorage; manual Save button with visual confirmationcorepack pnpm dev # start the editor development server
corepack pnpm build # production build → packages/app/dist/
corepack pnpm test # run all unit tests (Node built-in test runner)
pnpm benchmark:export # regenerate the self-contained HTML benchmark export
pnpm benchmark:capture # capture reference PNGs for all styles
pnpm benchmark:particles # particles benchmark only
pnpm benchmark:colors # color-mode comparison
pnpm benchmark:lines # line-renderer comparison
pnpm benchmark:styles # all art-style comparison
pnpm benchmark:aspects # aspect-ratio comparison
pnpm benchmark:generated # procedural preset benchmark
pnpm benchmark:temporal # temporal effect benchmark
Open http://localhost:5173/?benchmark=1 for the deterministic benchmark. Append &style=classic-ascii, braille, line, or particles to isolate a renderer.
openascii/
├── packages/
│ ├── core/ — framework-free Canvas engine and image pipeline
│ ├── react/ — lifecycle-safe React canvas wrapper (@openascii/react)
│ └── app/ — Vite editor, presets, controls, and exporters
├── docs/
│ ├── architecture.md
│ └── performance.md
├── examples/
│ └── benchmarks/ — reference capture PNGs
└── scripts/ — benchmark and export automation
See architecture.md and performance.md for implementation details.
Current releases of Chrome, Edge, Firefox, and Safari with Canvas 2D, ResizeObserver, and IntersectionObserver support.
The next milestone evolves OpenASCII from a feature-complete editor into a procedural rendering engine.
Goals:
The milestone is complete when pressing RANDOM consistently produces visually distinct, high-quality outputs — each feeling intentionally designed, not randomly parameterised.
Editor
Ctrl+Z / Cmd+Z shortcutlocalStorage and manual Save button with visual feedbackTypography
Assets & infrastructure
internal_dev/ reference from build pathMIT © Saswat Sundar Rath — see LICENSE for full text.