You can convert a photo to ASCII art offline by running a converter on your computer and giving it a local image file—not a web address. For classic monochrome text, use jp2a; for adjustable ANSI-terminal or colored HTML output, consider img2txt.py; and for text, HTML, or image exports with several input formats, see img2a. Choose the output for where you will use the result, and install and test the software before you go offline.
Which offline photo-to-ASCII tool should you choose?
These are free software workflows rather than online converters. The key distinction is the result you need: portable plain text, color in a compatible terminal, or an HTML or image file. Each project documents local-file conversion; if offline use matters, supply a path to an image on your device rather than a URL.
As an Amazon Associate I earn from qualifying purchases.
| Tool | Best fit | Documented input and output | Trade-off |
|---|---|---|---|
| jp2a | Classic monochrome ASCII, with terminal color as an option | JPEG, PNG, and WebP input; ASCII output, custom character selection, and color options | A focused converter with controls for width and character mapping. Color output depends on terminal support and is less portable than plain text. |
| img2txt.py | Adjustable ANSI-terminal output or colored HTML | Local image file to ANSI or HTML; options include dithering, antialiasing, maximum output length, target aspect ratio, and background handling | Uses a Python/pip setup. You may need to tune dimensions and transparency handling for the photo and destination. |
| img2a | More input formats and export choices | JPEG, PNG, GIF, BMP, and WBMP input; raw text, HTML, or image output | Java-based workflow. Check the project’s current release and setup instructions for your system. |
| ImageMagick | Preparing a photo before conversion | Image operations such as resizing, format conversion, and dithering | It is not a dedicated ASCII converter; pair it with one of the converters above if preprocessing would help. |
| chafa | Richer terminal display | A June 2026 comparison describes truecolor and Unicode detail | The comparison favors it for terminal fidelity, but that is a qualitative assessment, not a controlled benchmark. Check the project’s own instructions for supported output and setup. |
Choose output that will work where you plan to use it
Plain text for documents and code
Plain ASCII text is usually the most portable choice for a README, email, or code comment. Leave color options off: ANSI escape codes are control sequences, not visible colors in every editor or text viewer. In the destination, check that spaces are preserved and lines do not wrap; either can disrupt the image’s alignment.
Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Repair Windows errors before they cause bigger problemsFix Now →ANSI color for compatible terminals
ANSI output can add color in terminals that understand its escape codes. It is not a reliable way to preserve color in an ordinary text file or every terminal emulator. If the file will be shared or viewed in different apps, confirm how the recipient’s environment renders it.
#1 Best Overall
HTML or an image for a fixed appearance
When the result needs to retain color or appearance in a browser or other visual context, an HTML or rendered-image export may fit better than terminal control codes. img2txt.py documents HTML output, and img2a documents HTML and image output. Check the generated file in the software where it will be viewed.
Convert a local photo with jp2a
A basic local-file command is:
jp2a --width=80 --output=art.txt photo.jpg
This asks jp2a to render the local file photo.jpg at a width of 80 characters and write the result to art.txt. The width is an example, not a universal best setting: a narrow result loses detail, while output wider than the available terminal or destination can wrap. jp2a’s available flags can vary by installed version, so check local help if this command differs on your system.
Tune the photo and rendering for legibility
Give the subject enough space
Crop or resize the photo before converting if the subject is small, off-center, or surrounded by distracting detail. Resizing can reduce the image to a scale more appropriate for text output. ImageMagick provides image transformations such as resizing and dithering, but it does not replace the ASCII converter.
Adjust width and character mapping
Output width controls how much horizontal detail the text can represent. If the image is hard to recognize, try a wider rendering that still fits the final display, or adjust the character ramp: different characters produce different apparent shades. jp2a documents width and character-selection controls; img2txt.py documents a maximum output length and target aspect ratio.
Consider tone, transparency, and background
A photo’s light and dark areas map to characters, so the result depends on how the converter interprets tones and how it will be viewed. If the output looks wrong on a dark terminal, check whether a background or inversion option is appropriate. img2txt.py documents background handling as well as antialiasing and dithering controls. These are options to experiment with, not guarantees of a better result for every image.
Quick Recap
Best Value
Rank #4
Set up and verify the converter before going offline
- Install the application and its dependencies while connected. The project documentation describes setup workflows, but does not establish that every installer or dependency can be obtained without an internet connection.
- Test a local image. Run the converter with a file path stored on your device, then confirm it creates the expected text, HTML, or image output.
- Check the final destination. Open or paste the result where it will be used. Look for wrapped lines, missing color, lost spacing, or an output format the destination cannot display.
- Keep a working copy of the necessary files. Offline conversion is possible after setup, but troubleshooting an incomplete installation may require access to the project’s current instructions or dependencies.
What to check before choosing a project
- Confirm the current installation instructions and release for your operating system; exact releases and package availability are not established here.
- Check the formats supported by the specific version you install. Project documentation lists formats, but support can depend on the build and its dependencies.
- Use a local image path rather than a URL for offline conversion.
- Pick plain text for broad portability, or verify that the target environment supports ANSI, HTML, or image output before relying on color.
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

