Image to ASCII Converter

Turn an image into ASCII art by mapping pixel brightness to characters

Image

Upload an image or load the sample. The image is read off a canvas in your browser — it is never uploaded.

ASCII output

Upload an image to convert.

About

Convert an image to ASCII art by mapping each region's brightness to a character. Pick the output width (column count), a character set (standard, blocks, binary, or detailed), and optionally invert the map. The image is read off the canvas in your browser — it is never uploaded.

    Examples

    Convert a portrait photo

    Input
    image: portrait.jpg
    columns: 80
    charset: standard
    invert: off
    Output
    @@@@@@@#########/////////*******///////#########@@@@@@@
    @@@@@################/////////********////////////////@@@@@@
    @@@@################////////**********///////###########@@@@
    ... (80 chars wide ASCII rendering)

    The luminance of each pixel region is mapped to the standard character ramp: ' ', '.', ':', ';', '+', '*', '#', '@' from light to dark.

    Convert with the blocks character set

    Input
    image: logo.png
    columns: 60
    charset: blocks
    invert: on
    Output
    █▓▒░ ░ ░░▒▓█ ▓▒░ ░░▒▓▒░░ ░░▒▓█▓▒ ░░▒▓▒░
    ░░▒▓ ▓▒░░░▒▓█ ▓▒░ ░░▒▓▒░░ ░░▒▓▒░ ░░▒▓▒░ ░░▒▓▒░

    The blocks character set uses Unicode block-drawing characters (█ ▓ ▒ ░) for a denser, more graphic look at low column counts.

    About this tool

    Image to ASCII art converts a visual image into a character-based representation using the canvas API. Each pixel region is mapped to a character whose visual weight matches the region's luminance, so dark areas map to dense characters like '@' and light areas map to sparse characters like '.'. The result is a recognisable ASCII rendering of the original image.

    The tool reads the image locally using the FileReader API — it is never uploaded to any server. You can adjust the column width (number of characters per row), choose from four character sets (standard, blocks, binary, detailed), and toggle invert so bright images produce dark-on-light output.

    How to use

    1. Select an image

      Click Choose File to pick a local image (PNG, JPEG, GIF, WebP). The image is read entirely in your browser — it never leaves your device.

    2. Adjust the settings

      Set the column width (characters per row), pick a character set, and toggle invert. The ASCII output updates live as you change settings.

    3. Copy the ASCII art

      Click Copy to grab the ASCII art as plain text. The output is monospace and renders correctly in any terminal or code editor.

    Use cases

    Creating ASCII art for a terminal profile

    Convert a logo or a portrait into ASCII art to embed in a terminal welcome message or a README.

    Generating a text-based preview of an image

    Represent an image as text for environments where images are not supported — IRC, terminal sessions, or plain-text documents.

    Fun output for a CLI tool

    Pipe an ASCII-rendered image through a CLI tool or a chat bot that only supports text.

    Common mistakes

    Mistake:Using too few columns.

    Fix:With very few columns (e.g. 20), the character resolution is too coarse and the image becomes unrecognisable. Increase the column count until the detail is sufficient.

    Mistake:Not accounting for character aspect ratio.

    Fix:Terminal characters are roughly twice as tall as they are wide. The tool adjusts row height by a factor of 2 to compensate, but very narrow fonts may still look stretched.

    Mistake:Expecting photographic accuracy.

    Fix:ASCII art is an artistic representation, not a pixel-perfect reproduction. The result depends heavily on the image contrast and the character set chosen. High-contrast images produce the best output.

    Frequently asked questions

    References & standards