Convert Image to ASCII Art
Convert an image into ASCII text art with adjustable width and density. Understand why character aspect ratio matters.
- No file limits
- No registration
- Free forever
- Images never leave your browser
Drop images here
or paste from clipboard (Ctrl/⌘ + V)
Supported formats: JPG, PNG, WebP, AVIF, SVG
Click on the image to pick a color at that point
Picked colorsTap a swatch to copy the hex. Shows the 8 most frequent colors.
This re-encodes the photo without EXIF, GPS or IPTC data, so it cannot be traced back to your camera or location.
Lossy formats like JPG are re-compressed, which softens the image slightly.
Add 2+ images above; they are laid out left to right.
Choose a grid, then download all slices as a zip.
Your images never leave your browser
All processing happens locally on your device. Nothing is uploaded to a server, stored, or tracked.
Turn any photo into character art you can copy as plain text or download, with adjustable width and invert options. The conversion runs locally, so your image is processed in your browser and never uploaded.
How it works
Why the width control changes everything
ASCII art is made from characters arranged in a grid, so the number of characters across is the main control over the result. A narrow width produces a small, sparse representation that fits in a code block or a comment and still reads as the subject. A wide width produces a much more detailed rendering, often a hundred or more characters across, which is large enough that it is only readable in a wide window. The width therefore decides not only the detail but whether the output is usable at all, and it is the first control to adjust.
- A narrow width gives a small result that fits in a code block or a comment.
- A wide width gives much more detail and needs a wide window to read.
- Width decides both detail and usability. Adjust it first.
- A very wide result can exceed the line length your context allows.
Character aspect ratio, and why text looks stretched
A character in a typical monospace font is taller than it is wide, usually roughly twice as tall, so a square grid of characters renders as an image that appears stretched vertically when displayed. The conversion compensates by sampling the image at half the vertical resolution of the horizontal, which means a 100 character wide result samples roughly 50 rows. Forgetting this is why a hand built ASCII image from a square source always looks tall and thin. The practical effect is that the output represents the proportions of the original reasonably, but not exactly, and adjusting the width is the practical way to compensate.
| Aspect | Effect | What to do |
|---|---|---|
| Characters are about twice as tall as wide | Looks stretched vertically | Sample half as many rows as columns |
| Sampling at equal rows and columns | Result looks tall and thin | Halve the vertical sampling |
| Dense characters used for dark areas | More tonal range | Invert setting for a light background |
NoteA character is about twice as tall as it is wide, which is why vertical sampling is halved.
Density and the character ramp
A conversion maps the brightness of each region to a character, and the set of characters used is called a ramp. A typical ramp runs from a space through increasing densities, and which ramp is used changes the character of the result. Characters with more ink, such as a hash or an at sign, represent darker areas. A ramp of only a few characters gives a blockier, higher contrast look, while a long ramp including punctuation gives a smoother, more tonal result. One practical detail matters: on a dark terminal, the assumption inverts, because a light character on a dark background reads as sparse rather than dense, and the setting to invert exists for that reason.
- Brighter areas map to sparse characters, darker areas to dense ones.
- A short ramp gives a blockier, higher contrast result.
- A long ramp with punctuation gives a smoother tonal result.
- On a dark terminal the mapping inverts. Use the invert setting.
NoteDark terminals need the invert setting, or the result will look inverted in tone.
What produces a good result
An image converts well when it has strong contrast between the subject and its background, because the characters need a clear brightness difference to be assigned meaningfully. A portrait with a plain background works, a logo in one colour works, a high contrast line drawing works. An image with a gradual gradient across the whole frame produces a uniform field of similar characters that says nothing. Increasing the contrast before converting helps more than any setting, and increasing the width helps, but neither rescues an image with no tonal separation to detect.
- Strong subject and background contrast converts best.
- A logo, a line drawing, and a portrait on a plain background all work.
- A soft gradient produces a uniform field of near identical characters.
- Raise the contrast before converting. It helps more than any setting.
- Increase the width for more detail, within what your context allows.
NoteNo setting rescues an image with no tonal separation. Contrast first, then width.
Frequently asked questions
What is ASCII art?
A picture built from characters. Bright areas use dense symbols like @ and #, while dark areas use dots and spaces.
What images convert to ASCII best?
High contrast images with clear shapes work best. Photos with strong subjects and simple backgrounds read clearly as text art.
Can I use the ASCII art anywhere?
Yes, copy it as plain text for chat, code comments, terminal output or email, or download it as an image.