Photo to ASCII Art: Tips for Sharper Results
Pick a photo with a plain background and strong contrast, then set the width for where you will paste it.
The image to ASCII converter splits a photo into small cells and fills each cell with a character that matches its brightness. Bright cells get dense characters such as @ and #, and dark cells get . or a space. That means the same converter can give very different results depending on which photo you use and how you set it up.
1. Pick a photo that converts well
Each character stands in for a small piece of the photo. At 40 columns, the whole picture has to fit into 40 characters per row, so fine detail disappears and only large shapes and contrast remain.
| Converts well | Converts poorly |
|---|---|
| Plain or simple background | Busy background with many objects |
| Subject fills the frame | Group photo with small people |
| Clear light and dark areas | Everything at a similar brightness |
| Faces, pet close-ups, logos | Landscapes, screenshots with small text |
Cropping the photo around the subject before converting makes it much clearer at the same width.
2. Set the width for where it will go
Width is the number of columns. More columns keep more detail, but the lines get longer. If a line is longer than the chat bubble or the GitHub page, it wraps and the picture falls apart, so decide where it is going first.
| Destination | Suggested width |
|---|---|
| Chat apps and Discord | 40 to 60 columns |
| GitHub README or code comments | About 80 columns |
| Terminal | 80 to 120 columns |
| PNG image | 90 or more. Wider looks more like the photo |
Here is the sample cat at 40 columns with the default settings. Even at 40 columns, the ears, eyes, and body are visible. (Open with these settings)
......------------------......
.....--**::::::::::::::**--.....
....----#%%*=::::::::=*%%#----.....
....---::%%%%%########%%%%%::---....
....---::+%%@@@@@@@@@@@@@%%%+::---....
....----::#@@@@@@@@@@@@@@@@@%#::----....
....---::#@@@%#*#%@@@@%#*#%@@%#::---....
....---:*%@@@*@.#*@@@@*%.%*@@%%*:---....
....----*%@@@##:##@@@@##:##@@%%*----....
....-++=%%@@@@@@@@%%@@@@@@@%%%=++-.....
...-===+#@@@@@@@@@%%@@@@@@@@@#+===-...
..-+:---:*%%@@@%@%%@%@@%%%*:---:+-..
.....-+*####%%%%%%%%%%####*+-.....
...+########################+...
*##########################*
3. Choose a character set
A character set is the list of characters used for each level of brightness.
| Set | Characters | Best for |
|---|---|---|
| Standard | . : - = + * # % @ |
Works almost anywhere |
| Blocks | ░ ▒ ▓ █ |
Smooth shading and a solid look. Great for PNG |
| Detailed | 70 characters | Fine steps that pay off at wide widths |
| Binary | # and space |
A silhouette only. Good for logos and simple shapes |
The same cat with the Blocks set looks like this. The cells look filled in, so shapes stay solid even at a small width. (Open with these settings)
░░░░░░░░░░░░░░
░▒▒░░░░░░░░░░░░░░▒▒░
░░░▓▓▓▒░░░░░░░░░░▒▓▓▓░░░
░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░
░░░░░▓▓██████████████▓▓░░░░░
░░░░▓█████████████████▓▒░░░░
░░░░▓███▓▓▒▓▓████▓▓▒▓▓██▓▓░░░░
░░░▒████▒█ ▓▒████▒▓ ▓▒██▓▓▒░░░
░░▒▓███▓▒░▒▒████▒▒░▒▒██▓▓▒░░
░░░░▓██████████▓███████▓▓▓░░░░
░░░░░▓█████████▓▓█████████▓░░░░░
░▒░ ░░░▒▓▓███▓█▓▓█▓██▓▓▓▒░░░ ░▒░
░░▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒░░
░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Block characters can have a different width in apps that do not use monospaced fonts, which makes the rows drift. For text in a chat app, the Standard set is safer.
4. Keep auto tone on
Auto tone looks at the brightness distribution of the photo and widens the contrast to suit it, so the converter uses more steps of the character set. What happens if you turn it off and also lower the contrast?
::::::============================::::::
::::=======**==============**=======::::
:::========*##*+========+*##*========:::
::=========#####********#####=========::
:=========+##################+=========:
:=========*#####%%%%%########*=========:
=========*####***#%%%##***####*=========
========*####*#=#*#%##*#:#*####*========
========*####**=**####**=**####*========
:=====+++######################+++=====:
::===++++*####################*++++====:
::===*=====*################*=====*===::
:::======+****###########*****+======:::
:::::==+************************+==:::::
::::::****************************::::::
The background is now almost all = and :, and the cat is mostly # and *, so details such as the eyes and nose blur. The brightness differences are squeezed into a few steps. (Open with these settings)
Leave auto tone on and nudge Brightness and Contrast only when the result is too dark or too bright. If the shape still looks soft, raise Edge emphasis. It is available with the Standard and Detailed sets.
5. Invert for white backgrounds
The converter’s result box has a dark background. Bright areas get dense characters, so the picture looks right on a dark screen.
Paste it onto a white background, such as Notepad or GitHub’s light theme, and light and dark appear swapped, like a photo negative. If it is going on a white background, turn on Invert before copying.
6. Choose how to save
| What you want | Button |
|---|---|
| Paste the characters | Copy |
| Keep it in a file or put it in code | TXT |
| Send it with the exact shape | PNG |
| Keep the original colors | Turn on Color, then PNG |
Copying as text keeps only the characters and drops the colors. To keep colors, turn on Color and save a PNG.
Photos are converted in your browser and are not sent to a server for conversion.