ARTASCIIcreate with characters
Photos, logos and illustrations · Local processing

Convert an image to ASCII

Open a PNG, JPEG or WebP image and turn it into a grid of characters. Compare the original with the output, adjust the result and copy the text or download a PNG, SVG or TXT file.

Explore by topic

Image to ASCII converter

Enable JavaScript to convert an image. The demos are drawn locally, so you do not need a personal file to try the tool.

Make a readable result in three steps

  1. Start with a clear subject. A high-contrast logo or an isolated subject is a useful starting point. The Logo and Landscape demos let you experiment without opening a file.
  2. Set the width, then the contrast. Start at 80 columns. Try 120 for more detail, or 40–60 for a narrow text area. These are starting points, not guaranteed sizes for every screen.
  3. Check the destination background. Invert the palette if needed. PNG preserves appearance; TXT needs a monospace font and preserved spaces.

Two reproducible trials

The demos are drawings generated by this site's code, not stock photographs. They provide the same input each time you repeat a comparison.

TrialStarting settingsWhat to observeNext step
LogoLogo demo; 80 columns; contrast 0; brightness 0; detailed palette; inversion offThe silhouette and solid areas. Features smaller than one grid cell may disappear.Compare 40 and 120 columns with all other settings unchanged.
LandscapeLandscape demo; 120 columns; contrast 0; brightness 0; detailed palette; inversion offThe separation between the sky and terrain. More cells make the output wider.Compare the short palette, then inversion on a dark background.

Preset names describe suggested settings: “Portrait” does not detect faces and the tool does not recognise image content.

What the settings change

SettingEffectLimit
Width: 40–180Number of character columnsWider output may not fit a mobile conversation.
ContrastSpreads or compresses tones around a midpointToo much contrast removes subtle tones.
BrightnessShifts values towards lighter or darker tonesExtreme values flatten the image.
PaletteChanges which characters represent each tonePerceived density depends on the font.
InvertReverses the order of character densitiesChanging the background alone does not guarantee contrast.
Transparent backgroundRemoves the background of the exported PNG or SVGCharacters must remain visible against the final background.

How does the conversion work?

The browser decodes the image, scales it to a grid and reads the pixels through Canvas. Each cell receives a character based on a weighted grayscale estimate. The MDN Canvas documentation describes access to red, green, blue and alpha values used in this type of processing.

This engine works on displayed colour values, not a photometric measurement of light. The grid height accounts for character cells being taller than they are wide. A different font or line spacing can change the proportions after pasting.

The tool's palettes contain printable ASCII characters, which can be checked against the reference ASCII table. The output does not contain Unicode Braille or ANSI colour sequences.

Formats, privacy and limits

Supported formats: PNG, JPEG and WebP. Tool limits: 10 MB per file, 20 million pixels and 500 output lines. Resize or crop an image if it exceeds a limit. Animated input does not produce an animation; choose a still image for predictable results.

Transparent source pixels are composited against a light background when calculating characters. “Transparent background” controls the exported file; it does not recreate the cut-out transparency of the original.

The converter processes the image in this page’s memory. It does not store your file or upload it to the server. Read the privacy details.

Small features, fine writing and busy backgrounds can remain hard to read at larger widths. Try a crop or a simpler source image. For pasting problems, use the alignment checker.

Before conversion, you can crop an image with Outils.com to reduce the background around your subject. This tool uses a centred crop: check that the face or important detail remains inside the frame, then import the resulting file here. Resource in French.

Explore further