Skip to content
Tool · beta

Photo as text. Text as art.

Blocks, light, dense, binary, or custom character sets. Mono or color, paper or ink background. Download as PNG for a poster, or copy as plain text for a README. Nothing uploads. For real ASCII art, learn jp2a or aalib.

No account, no upload Four charsets · custom mode PNG image & plain text
An example of what ASCII Art produces

try it on a sample photo

Turn a photo into ASCII art

Convert a photo into text characters, and take it away as a PNG image or as plain text you can paste anywhere.

A photo before ASCII Art
Before
The same photo after ASCII Art
After

What you can change

  • Blocks
  • Light
  • Dense
  • Binary
  • Type my own set
  • Invert tones
  • Characters across
  • One ink
  • From photo
  • Page

How it works

  1. 01Drop in a photo, or open one of the samples.
  2. 02Pick a character set or type your own, set how many characters run across the image, then choose one ink or colour taken from the photo, and a page colour behind it.
  3. 03Download it at full resolution. Nothing is uploaded — the work happens in this browser tab.

Loading the typewriter…

◦ where ASCII earns its keep

Six places text-as-image still works

  1. 01 for code

    A photo as ASCII at the top of a README

    GitHub READMEs love ASCII headers. Run a logo or hero photo through here at 80 columns, copy the text, paste into a code-fenced block in your README. Renders in monospace everywhere — terminal, web, IDE. Cross-platform branding, zero PNG.

  2. 02 for terminals

    A welcome banner for your dotfiles

    Open a terminal and see your face in ASCII. Convert a portrait at 60 columns with the Light charset, paste the text into your .zshrc as a fortune-on-startup banner. The terminal greets you with you. Strange, but it's something.

  3. 03 for blogs

    A retro-feel blog post hero

    Tech blogs that lean retro embed ASCII art instead of stock photos. Render a hero image at 100 columns with Block charset (unicode shading), download the PNG, drop into the post's hero slot. Reads as 'I made this' rather than 'I downloaded this'.

  4. 04 for stickers

    Print an ASCII portrait on a sticker

    Run a portrait through Light charset at 100 columns, color mode on, download the PNG. Print on sticker paper. Hand out at a meetup. Tech crowd loves it.

  5. 05 for prints

    A poster that's text up close, photo from far

    Classic printmaking trick: from across the room the ASCII reads as a portrait. Up close it's letters and symbols. Block charset at 200 columns, ink-on-paper, print at A2. Frame, hang, watch viewers walk closer to figure it out.

  6. 06 for nostalgia

    A photo that looks like a 1985 BBS upload

    Pre-web internet ran on ASCII art. Forums, bulletin boards, login banners — all text. Convert a photo to ASCII Binary charset (just 0s and 1s) and you've got an authentic-feeling artifact. Caption it 'received: 02:14 EST 1985'. Post on social.

◦ in case you’re wondering

Frequently asked

Does the photo upload anywhere? +

No. The conversion runs in your browser — pixel sampling, character mapping, canvas rendering, all client-side. Your photo never touches our servers — we don't run an image pipeline at all.

Blocks, light, dense, or binary — which charset to pick? +

Light (10 chars) is the classic ASCII look — clean, readable, fits 80-column terminals. Dense (70 chars) gives you near-photographic detail at high resolutions. Block (unicode shading) is best for portraits because the characters fill space more evenly. Binary (0/1) is the bulletin-board nostalgia option.

Why is the PNG huge but the text small? +

The text version is just N×M characters — small. The PNG renders each character at a chosen pixel size, so a 200-column ASCII at 12px characters becomes a 1500-pixel-wide image. Drop columns down or the rendered character size if you need a smaller PNG.

How does the character mapping work? +

We resize the photo down to a tiny grid (one cell per character), measure the average brightness of each cell, and pick a character based on that brightness. Dark cells get dense characters (like @ or #); light cells get sparse ones (like . or space). Reverse with the Invert toggle for light backgrounds.

Can I use my own characters? +

Yes — toggle Custom and type any string. Order matters: dark to light, left to right. Try ' .o0@' for a quick custom 5-char set, or ' ░▒▓█' for unicode block shading. Empty space at the start makes light areas blank.

Why doesn't my portrait look like a face? +

ASCII art shows brightness, not detail. Faces with strong tonal contrast (clear shadows on the cheek, lips, hair) read well. Flat-lit selfies often come out muddy. Tip: bump the original through Photo Filters (Punchy preset) before converting.

now what?

A few ways to use an ASCII piece

· Also in Effects & looks

The rest of this shelf

31 more tools on the hub — searchable

For terminal ASCII →

Try jp2a or chafa for the real CLI thing.

Real terminal-rendered ASCII art runs through tools like jp2a (one image at a time) or chafa (with full unicode + truecolor). For ASCII video, libcaca and aalib are the ancestors. We give you the JPG output; for live terminal viewing, install those.