JP2A logo


jp2a is a small utility that converts JPG images to ASCII. It's written in C and released under the GPL.

Download and source

You can install jp2a from your favourite package manager. If jp2a is not there, you can download and build the source from


You can view an online jp2a gallery and try for yourself over at Check out the JPEG screenshots of jp2a.


Here are some other images in plain text: Here are some color HTML-images:

Building and installing


Compilation of jp2a requires jpeglib with libcurl as a recommended option. On many systems you can just do the following to compile jp2a:
make test    # optional
make install
If you have jpeglib installed in non-standard directory, say in /opt/local/include/jpeglib.h and /opt/local/lib/libjpeg.a then you can do
./configure --with-jpeg-prefix=/opt/local

If you need to build jpeglib yourself

Download the sources from and build them like for instance this:
./configure --prefix=/usr
make install-lib   # simply make install is not good enough for jp2a

Mac OS X

jp2a is now part of DarwinPorts, so if you do a
sudo port install jp2a
then everything should be installed.


You can use the Freshports:
pkg_add -r jp2a


You can use the Debian package:
apt-get install jp2a


You can use the Gentoo package:
emerge jp2a

Reading other graphics formats

In normal operation, you'd use jp2a with something like
jp2a --width=76 file.jpg
However, if you want to be able to read other graphics-formats, you can use ImageMagick's convert program with pipes, like
convert somefile.png jpg:- | jp2a --width=76 -
Convert is a very nice utility, letting you set a lot of options that might enhance the ASCII output (e.g. by setting contrast and brightness). Another example, increase brightness by 170% and then rotate 45 degress clockwise:
convert bender.bmp -modulate 170 -rotate 45 jpg:- | jp2a -
Convert handles just about any graphics-format you can think of, including video formats and vector formats like PDF and Postscript (handled by convert using Ghostscript).

Reading images off the net

jp2a now handles downloading by using libcurl. Just do this:
If you didn't compile jp2a with curl, you can use another HTTP reader and pipe the result to jp2a: For instance, to download and convert the Google logo all on the fly, you can do this:
convert jpg:- | jp2a -           
       .......                                       .':.             
    .::'....':xd.                                     dX'             
  .ld.        ..       .                              oX.          ...
  ;O'              .c;..'cxc    ;,...,c;.  .:'.,lxc.  dX.  ,:'.,dx.. .
  oO.             .ox.    ,x0 .cd.    .cd..ll    l0.  xX. :K,..,::.   
  cxx.      .',cl 'x0      lK'.cx      ;k, lO;  .ll.  dX. o0:         
   ,dkc.      :kd  :kx.   :d;  ,ol.   .lc.  .''lk'    kX'  oOo'...    
     .;:cc;,,',,.    .;;,'..     .,,'...   ''',:lxo. .','.  .,::;.    
                                         .oc.     dO                  

Why I made jp2a

I wanted a small project to teach myself how to use various libraries and autotools.


If you have any suggestions or code patches, I will be very glad to hear from you. You can email me to [email protected].

I was asked if there are any bindings for Python. Unfortunately, no, but if anyone wants to make that, let me know.


jp2a pages

Other pages


jp2a is written by Christian Stigen Larsen