Image to ASCII Art
Pictures made of characters — ASCII, blocks or Braille, in black and white or colour.
Try before you buy.
- Free preview: the first lines of the art as text (up to 20), and the whole art as a picture at preview size with a MySmartCoPilot watermark across it.
- Locked until you unlock it: download and copy.
- Unlock: Pro pass, ₹179 for 30 days or ₹79 for 1 week, a one-time payment that never renews. Unlock: Pro pass, $5.99 for 30 days or $2.99 for 1 week, a one-time payment that never renews.
Ways to unlock shows how to get the full result.
Printing this result is locked in the free preview.
Picture
Copied text has no colour: download HTML, PNG or ANSI to keep the colours.
Locked in the free preview. Opens the ways to unlock this result.
Locked in the free preview. Batch runs unlock with a pass.
Locked in the free preview. Query results unlock with a pass.
About the Image to ASCII Art
Turn any picture — a photo, a logo, an icon, a screenshot — into art made of characters. ASCII uses ordinary letters and symbols that survive anywhere text goes; half blocks and quadrants use the Unicode block characters ▀ ▄ ▌ ▞ █ for two or four picture samples per character; Braille uses the eight dots of Unicode Braille patterns for the finest detail. Set the width in characters, choose the character set (Paul Bourke’s classic 10- and 70-level ramps, shades, or your own), and tune brightness, contrast, mid-tones and dithering until the picture reads well.
The art is made for dark characters on a light page or light characters on a dark terminal, in black and white or in the picture’s own colours. With a Pro pass, copy it as plain text (or as a Markdown code block for Discord, Slack and GitHub), or download it as a TXT file, an HTML page with every character in its colour, a PNG picture, or text with ANSI colour codes for a terminal; without one you see a free preview: the first lines of the text and a marked picture of the whole art. Everything happens in your browser; the picture is never uploaded.
How to use it
- Choose, drop or paste a picture (or try the sample picture).
- Pick a Style: ASCII, half blocks, quadrants or Braille, and set the Width in characters — 60–100 for chat and e-mail, 150 or more for detail.
- For ASCII, choose the Characters; for blocks and Braille, set the Threshold. Use Adjust if the picture looks too dark, too light or flat, and try Floyd–Steinberg dithering for photos.
- Choose whether it will be Shown on a light page or a dark screen, and switch on Colour for HTML, PNG or terminal output.
- With a Pro pass, select Copy text, or pick TXT, HTML, PNG or ANSI and Download; without one the art stays a free preview.
Examples
A 400 × 400 px picture: a black disc 320 px across on white · ASCII · Width 24
:=*####*=:
.+%@@@@@@@@@@%+.
:%@@@@@@@@@@@@@@%:
.@@@@@@@@@@@@@@@@@@.
=@@@@@@@@@@@@@@@@@@=
=@@@@@@@@@@@@@@@@@@=
.@@@@@@@@@@@@@@@@@@.
:%@@@@@@@@@@@@@@%:
.+%@@@@@@@@@@%+.
:=*####*=:Twelve lines for 24 characters (the first and last are empty): a character cell is about half as wide as it is tall, so a round picture needs half as many lines as characters across.
Braille · Width 12
⠀⠀⠀⠀⣀⣀⣀⣀⠀⠀⠀⠀ ⠀⠀⣴⣿⣿⣿⣿⣿⣿⣦⠀⠀ ⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀ ⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀ ⠀⠀⠻⣿⣿⣿⣿⣿⣿⠟⠀⠀ ⠀⠀⠀⠀⠉⠉⠉⠉⠀⠀⠀⠀
Each character holds 2 × 4 dots, so 12 characters carry 24 × 24 samples. Empty cells use the blank Braille pattern U+2800 rather than a space, so the lines stay aligned.
A logo · Half blocks · Colour on · Shown on a dark screen · Download ANSI (24-bit)
A text file of ▀ characters, each with its own foreground and background colour codes; `cat logo-ascii.ans` shows the logo in colour in a terminal.
Common uses
- Banners and logos for README files, code comments, terminal welcome messages and command-line tools.
- Text art for chats, forums, e-mail signatures and social posts where pictures are not allowed.
- Colour previews of images in a terminal, or printable posters made of characters (HTML and PNG).
- Teaching how images are sampled, quantised and dithered.
How the conversion works
- Sampling. The picture is reduced to a grid of samples: one per character for ASCII, 1 × 2 for half blocks, 2 × 2 for quadrants and 2 × 4 for Braille. The number of lines follows from the width and the character shape (a cell’s width divided by its height, 0.5 by default), so the art keeps the picture’s proportions.
- Tones. Each sample’s colour is placed on the page colour (for transparent pixels) and turned into lightness — CIE L* (from the relative luminance of linear sRGB), which follows how bright people see a colour. Stretch contrast automatically spreads the darkest and lightest 1 % of the picture to full black and white; brightness, contrast and the mid-tone (gamma) curve follow.
- Characters. ASCII maps each tone to a ramp of characters ordered from most to least ink, such as the ramps on Paul Bourke’s page on character representation of greyscale images. Blocks and Braille switch each sample on or off at the threshold; quadrant and half-block characters come from the Unicode Block Elements chart and Braille patterns from the Braille Patterns chart, where each raised dot adds its value to U+2800 (dot 1 adds 1, dot 2 adds 2, dot 3 adds 4 and so on up to dot 8, which adds 128).
- Dithering. Floyd–Steinberg error diffusion passes each sample’s rounding error on to its neighbours (7/16, 3/16, 5/16 and 1/16), so gradients keep their average tone; Bayer ordered dithering adds a regular 4 × 4 pattern instead.
Colour output
Plain text has no colour, so copied and TXT art is monochrome. With Colour on, each character takes the average colour of its samples:
- HTML writes a page with a
<pre>block in which each run of characters of one colour is a<span>. - PNG draws the art as a picture; block and Braille characters are drawn as exact rectangles and dots, so the PNG looks the same whatever fonts a device has.
- ANSI writes text with Select Graphic Rendition colour codes —
ESC[38;2;r;g;bmfor 24-bit colour orESC[38;5;nmfor the 256-colour palette, in the widely supported form documented for xterm — and resets the colour at each line end. Show it withcat(ortypeon Windows). - Coloured half blocks use one colour above another in each character (▀ in the upper sample’s colour on the lower sample’s), which doubles the colour resolution; coloured quadrants use two colours per character.
Getting a good result
- Start with a picture with a clear subject and a plain background; crop it first.
- Fewer characters make the picture easier to recognise at a distance; more characters show more detail but need a small font to fit.
- For photos, try Floyd–Steinberg and a little more contrast. For logos and line art, Braille or quadrants with no dithering give the sharpest edges.
- If the art looks squashed or stretched where you paste it, change Character shape to match that app’s font and line spacing.
- In chats and on GitHub, paste it as a code block (the option under Copy and download), so it is shown in a monospaced font.
Limitations
- Art lines up only in a monospaced font; proportional fonts (as in most chat messages outside code blocks) shift the characters.
- Block and Braille characters need a font that has them, and some fonts draw them at a slightly different width than letters, which can misalign mixed text.
- Width is 10 to 400 characters, and the art has at most 600 lines (very tall pictures get fewer characters across).
- Plain text cannot carry colour: colour is kept only in the HTML, PNG and ANSI downloads.
Privacy
On this device: nothing is sent
Everything happens in your browser. What you enter or open here is not uploaded or stored by MySmartCoPilot.
Frequently asked questions
What do I get without a pass?
Without a pass, Image to ASCII Art shows the first lines of the art as text (up to 20), and the whole art as a picture at preview size with a MySmartCoPilot watermark across it. Until you unlock it, the result can’t be downloaded or copied. A Pro, Premium or Ultimate pass, a one-time payment that never renews, unlocks the full result. The pricing page lists the passes and their prices.
What is the difference between ASCII, block and Braille art?
ASCII art uses ordinary characters such as @ # * : ., one picture sample per character, and works anywhere. Half blocks and quadrants pack two or four samples into each character with the Unicode block characters, so the picture is sharper. Braille packs eight dots into each character for the most detail, but it is all-or-nothing: each dot is on or off.
How do I post it in Discord, Slack or on GitHub?
With a Pro pass, tick Copy as a Markdown code block, then Copy text and paste. The code block shows the art in a monospaced font, so the characters stay aligned. Keep the width below about 60–80 characters for chat windows on phones.
Why does the art look stretched or squashed?
Characters are taller than they are wide, and fonts and line spacing differ between apps. Adjust Character shape: raise it if the art looks too tall where you paste it, lower it if it looks too flat.
Do the colours show when I paste the text?
No: plain text has no colour. Use HTML for a web page, PNG for a picture, or ANSI for a terminal, where the colour codes are shown as colours.
Is my picture uploaded?
No. The picture is opened and converted in your browser, on your device; the tool works without a connection once the page has loaded.
Open-source components
This page can load these open-source components, each only when a task needs it:
- It uses libheif and libde265 under the LGPL v3, through libheif-js: licence and source code.
You may replace them with your own builds. Their licences and the credits of every library the site uses are on the open-source credits page.