The terminal is very fast and convenient way to quickly access directories and files (faster than find and click on the directory).

One thing that it cannot show in text-mode is "pictures".

What is a best way to view pictures (like you see images thumbnail in Nautilus) when you are working in the terminal (e.g. command nautilus or any program - but should be fast and convenient)?

22 Answers 22

The way to "double-click" on a file from the command line is xdg-open.

If you're on Gnome (probably, if you're using Nautilus), you can use eog directly, or any other image program (feh is quite good).

feh <image-name>      

If you want to consult image-name file easilly.

  • 16
    feh is amazing! – Searene Dec 11 '15 at 6:26
  • 1
    feh even works with multiple URLs! – Serge Stroobandt May 21 '16 at 15:16
  • 5
    @Searene Yeah! Long life to feh. But I observe that feh has no zoom or any other function whatsoever. eog, however, is also lightweight and, in addition, it can zoom, rotate and browse the images in a folder :). Just for the people to know before they make a choice. – Jun 1 '16 at 13:19
  • 1
    although eog is preinstalled in my ubuntu os, I still prefer feh coz it can be closed by q while eog and xdg-open can be closed by esc. – Evan Hu Jun 30 '16 at 13:17
  • 3
    Actually, feh does have zoom, fullscreen, scroll etc. look at the man page – dalimama Sep 11 '16 at 6:31

If you happen to have installed imagemagick, you can use its very handy display command-line tool.

display path/to/picture.png
  • 2
    I personally prefer feh, but display is usually installed on web servers, where feh or other image browsers aren't installed. – pevik Dec 7 '14 at 19:34
  • 3
    display works great on Ubuntu 16.04 LTS Desktop and also on stock Raspbian. No installs required. TNX from 2017 – SDsolar Jul 22 '17 at 19:55
  • Great, works even with stream: curl | display – Pavel Feb 16 at 21:26

I usually run python -m SimpleHTTPServer 8080 from a folder containing the image and view it from the browser at localhost:8080/path/to/image.jpg. Works great to browse and look at different image and text files in that same directory.

Edit: This method also works for remote boxes. Just run the python server as above, and if the ports are open you can connect to If the server does not expose ports, you can set up an ssh tunnel with ssh -N -L localhost:8080:localhost:8080 and then view the images from your local browser at localhost:8080/path/to/image.jpg. Note this http interface is much faster than ssh -X.

  • 9
    Clever! Works like a charm and there's no need to type /path/to/image.jpg. Just open localhost:8080 and click on the filenames. – Roger Dahl Mar 5 '15 at 4:49
  • 1
    Regarding the last paragraph, you can also add tunnels easily using PuTTY configuration! Then you can access it through a browser. Awesome! – ADTC Oct 30 '15 at 8:45
  • 8
    I needed python -m http.server with Python 3 – drstevok Sep 8 '16 at 21:34
  • x-www-browser /path/to/image or firefox /path/to/image – Gayan Weerakutti Jun 2 '17 at 9:08

I have created a tool that uses various unicode block graphics characters to improve the resolution (compared to the canonical 2 pixel per characterapproach taken by other solutions posted here). It also automatically displays images in a thumbnail mode if multiple images are provided as input.


git clone
cd TerminalImageViewer/src/main/cpp
sudo make install


tiv <image(s)>

More details at the github project:

Example screenshot:


  • 1
    Not sure why the downvote, guess because of self-promotion? I think it's the best tool for the job though and the question is still relevant today. – Stefan Haustein Jul 9 '17 at 22:39
  • It's a pity it doesn't work with apt install. Perhaps time to make a ppa? In any case, this package worked for me, while none of the others did (perhaps I used them in a wrong way). I needed to be able to view images in terminal (for instance, when I'm inside a Docker container) and not to call an image viewer from terminal. Thank you for your answer and I can only thank you more for creating this small, but valuable package! – Artur Barseghyan Nov 2 at 10:44
  • Thanks! Would you mind creating a FR for a PPA on the github project? Perhaps somebody is happy to step in -- at least it won't be forgotten until I find some chunk of free time to look into that... – Stefan Haustein Nov 2 at 14:20
  • a snap will be easier for everybody: no ppa to setup for you, no ppa to add for the user -> – Daniele Dellafiore Nov 2 at 15:56

I guess feh would be the one you are looking for.

Although popping out a terminal-like window for picture display as mplayer does for video playing, Feh is still considered as a terminal-based picture viewer due to its command-intensive control style.

If you're in pure terminal with framebuffer activated, I'd recommend fbi. It's always in my after-install to do list.

Otherwise, eog is the default picture opener in Gnome, as Kevin mentioned. Also, Shotwell seems to open pretty fast for me... I'm pretty sure there are hundreds. :-)

  • Thanks for this one - it's news to me. As an aside, googling lands me at fim's (self-styled framebuffer image viewer improved ) manpage only a few search results in. Dont know yet the difference. – mikeserv Mar 23 '14 at 6:42

If you're on OS X, iTerm 2 supports displaying inline images:

iTerm2 inline image

As you can imagine, this can be highly useful when you just want to display an image without going in and opening up or having to open the Finder to the image and hitting spacebar on the image.

The feature is documented at iTerm2's feature page

  • It's really laggy in my experience. – Ilia Sidorenko Mar 11 at 2:22
  • 1
    Works fine for me. No issues with lag. MBP/OSX 10.12.6 – Heinrich Hartmann Sep 21 at 19:00

w3m's imgdisplay library is able to display images directly. It only works on some terminal emulators such as Xterm and URxvt.

ranger is a file browser that makes use of the library to display previews. Add this to ranger's configuration file to enable the feature:

set preview_images true

Surprised that the Terminology terminal emulator is not among the answers. As easy as tyls and then clicking on an image:

enter image description here

or someting like tycat image.png, for example:

enter image description here

Plus a lot more. An old video, almost 3 years ago, demonstrating Terminology 0.3:

Actually, there is a way to show a PNG file in a terminal in text-mode, using picture-tube:


You can look at the project on GitHub.

The image is of course an approximation of the actual image, given the fact that the smallest pixel is a character - try to have a look at the result in a text editor, you will see a huge number of color codes.

You can install the tool like this (assuming you have already installed node/npm): npm install -g picture-tube

Another great terminal-based picture viewer is fim, which is a improved fbi with a vim-like control system.

This is a 4 year-old-question but I found that people still look at it. So, today I would like to answer my own question specifically only for iTerm2.

At first time I asked this question. The term of "fastest" I was thinking of viewing image as fast as cat command displaying text. So, today I found the answer on iTerm2, which are the two handy commands name imgcat and imgls.

To use them, the first let's install iterm2-nigthly:

$ brew cask install iterm2-nightly

then visit the website:

and install imgcat and imgls commands:

$ go install
$ go install

So, I really love them and also hope this will be useful for you all!

  • This is very useful, so thanks for answering this 4 years later. Works like a charm, but might want to include the install go step (brew install go) for those that don't have it yet. – jamescampbell Aug 1 '16 at 3:17
  • @jamescampbell, you don't need to install go to get the imgcat and imgls scripts. They're provided to you by iTerm's developer himself here:, and these are bash scripts. – akshay Nov 23 '16 at 17:48
  • what is the closest option to imgcat on Linux? I'm trying to switch atm – rien333 Jul 18 at 19:24

pxl is a pretty cool option which hasn't been mentioned yet. Similar to picture-tube which was previously posted in that it shows the image directly in the terminal although it supports more image formats.

There is a tool here called catimg that works really well:

Also has deb packages on

In linux you can install gnome-open.

# In Debian flavors

sudo apt-get install gnome-open

Then create an alias:

alias open='gnome-open'

Then you can:

open file.pdf
open file.jpg
  • This was installed by default in my Ubuntu install. – starbeamrainbowlabs Mar 12 '16 at 11:02

From the terminal? Why not in the terminal: cacaview might be the fastest. By default it's fastest if the terminal has no graphics.

In Debian: sudo apt-get install caca-utils

No dependencies, one C file, one header file: imcat

Works on linux, macos, windows. Automatically scales to terminal width, with quality down-sampling.

enter image description here

Remark: seriously? Down-voted? Next time, maybe explain in comment why.

I just found this page, and it is still very relevant today. OP didn't really specify if they want X or fb viewer.

I use a small utility called pho:

Needs X, so call from command line in a terminal window. Views many picture formats, gif and jpg for sure... some others as well.

Can do wildcard globbing from command line: eg. "$ pho img00??.jpg" will view all files that match in order. Space goes forward through list and backspace goes back. Its quick loading individual images -- hold down space and you fly through them.

Very fast if you want to look through a bunch of pictures, flag ones of interest, rotate, delete unwanted... I keep coming back to it.

From the web page above:

pho (pronounced like the first syllable in "photo") is a lightweight program for viewing large numbers of images quickly, rotating or deleting some, and making notes about what to do with each image -- for instance, for going through hundreds of images after uploading them from a digital camera.

I just use the Chrome webrowser, which supports jpg, svg, png, ico, animated gif... basically everything I'm likely to need:

google-chrome ./myphoto.jpg

If you prefer Firefox:

firefox ./myphoto.jpg

Even tough there are great answers given, my issue was to view images in terminal itself, without openning any graphical application, so i wrote my own little script. I only needed to identify the image and did not need al the details of it and did not want to download any relatively big packet, if anyone needs they can also use it:

I have a shell alias for macOS called preview that can (1) display an image inline (-i or --inline option), either from stdin or specified filepath(s), and (2) just open an image in Apple's Preview app (without any option), the latter also either from stdin or filepath(s), e.g.:

cat image.jpg | preview

preview -i image.png

Inline display only works with the iTerm imgcat alias, so you need iTerm installed, running, and frontmost. But preview checks if all that is true.

Online here:

If using gnome it is as simple as typing

$ gnome-open /path/to/photo

and it opens the image using the default image viewer that you have in your machine.

Your Answer


By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.