Images

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.

Last updated:

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.