1001Ferramentas
🔤Utilities

Image to ASCII

Convert any image into ASCII art from each pixel's brightness. Configurable width and density.


    
  

How does it work?

First we turn every pixel into grayscale. From there, brightness decides which ASCII character lands at that spot: darker areas get the "denser" characters (@, #), while brighter ones get the lighter picks (., ').

The width you choose sets how many characters fit per line. Height, on the other hand, follows from the proportions, with a tweak to account for the characters' own aspect ratio, which tends to sit around 2:1.

The processing stays on your machine, and the image never leaves your browser.

Turn images into ASCII art

Those images made only from text characters, ASCII art, carry a retro charm that recalls the early days of computing. This tool does the conversion on its own, reading the brightness of each region of the image to pick the character that best stands in for that tone.

By tweaking the width, you balance the level of detail against the size of the result, going from a plain sketch to a more careful drawing. The character ramp is fixed, with ten density levels, and the invert option swaps light for dark when the result will sit on a dark background. You can use it on an email signature, terminal art, a nostalgic post, or just for the fun of watching a photo become text.

The image goes to no server at all. The whole conversion happens inside the browser, so just load the photo and copy the ASCII art right after.

Frequently asked questions

Why does the preview look like a negative of the photo?
Because the character ramp was built for dark ink on white paper: a dark pixel becomes @ and a light one becomes a space. Since the preview box is black with green text, the @ lights up and the space goes dark, so the picture reads inverted on screen. Tick the Invert (light/dark) box and it falls into place. The rule of thumb: a dark background such as a terminal wants the inversion, while a light one, like pasting into a document or an email, wants the default.
What width should I pick, and is there a limit?
The field opens at 80 characters and the spinner walks between 20 and 200, but a number typed by hand never gets clamped: the code only falls back to 80 when the field goes empty or invalid, so nothing stops a request for 2000 columns and a tab frozen for a few seconds. Height isn't a choice, it follows from the image proportion times 0.5, to make up for a terminal character being roughly twice as tall as it is wide. The ramp has ten levels: @ % # * + = - : . and the space.
Does a PNG with a transparent background work?
It works badly. The brightness maths uses only the red, green and blue channels and ignores the alpha, and on the canvas a transparent pixel reads as pure black, so the whole cut-out background turns into a solid slab of @. Flatten the image over white in any editor before uploading. Worth knowing as well: the Copy button drops the text on the clipboard with no on-screen confirmation, and there is no option to save the result as a .txt file.

Related Tools