Turns an uploaded image into ASCII art you can copy and paste anywhere.
Live: asciimaker.netlify.app
Upload or drag-and-drop an image, and it's converted into ASCII art using a monospace character grid. Sobel edge-detection pass overlays directional line characters (|, /, \, _) for extra outlining/lineart.
Adjustable controls:
- Resolution — output width in characters
- Outline Strength — how aggressively edges get drawn as lines
- Gradient Detail — "smoothness" of the transition from empty to dark characters e.g. blocky (about 6 characters) to ultra-detailed (a 70-character smooth gradient)
- Font Size — adjust the font size in the textbox
Future features:
- support for video formats
- in-page image editing (crop/rotate/invert etc.)
Backend — Python, FastAPI, Uvicorn, NumPy (vectorized Sobel edge detection + brightness mapping), Pillow, pytest
Frontend — React, TypeScript, Vite, Tailwind CSS, oxlint
Deployment — FastAPI Cloud (backend), Netlify (frontend, continuous deployment from this repo), GitHub
main.py FastAPI app entrypoint
app/ API routers, config, ASCII conversion logic
tests/ pytest suite
frontend/ React + Vite + Tailwind UI
Backend:
pip install -r requirements-dev.txt
uvicorn main:app --reload
Frontend:
cd frontend
npm install
npm run dev
Set VITE_API_URL in frontend/.env.development to point at your local backend (defaults to http://localhost:8000).