Terminal-based browsers are a niche product, even among advanced Linux users, and most major distributions will ship with Firefox or Falkon pre-installed. But there are good reasons why you might want to access the Internet through a browser in your terminal.
Here are some of the best terminal-based web browsers.
Why use a web browser in a terminal?
The idea of a web browser for a Linux terminal seems absurd. After all, the first web browsers were based on GUIs, but the modern Internet is built on graphics and JavaScript, elements that terminal browsers find difficult or even impossible to work with. But it is precisely this incompatibility with the modern web that makes them so attractive to some users.
If you like to read the news every day and visit the site with a regular browser, this can increase quickly and bandwidth is not cheap. If you're using a terminal-based browser, you're downloading HTML but not images, videos, or ads, saving you hundreds of MB throughout the day.
JavaScript is also not executed in the terminal browser. Images, auto-playing videos, and sound effects are also distracting. Using a text browser in your terminal, you can just read.
Just as the world of graphical browsers has many alternatives such as Firefox, Falkon, Chrome and Surf, so does the universe of terminal browsers. Here is some of them:
1. Lynx
Lynx is the oldest web browser still supported today. It was first released for Unix-like systems in 1992, less than a year after the Internet became available to the general public.
The package is available in the default repositories of most distributions, and versions are available for DOS, Windows, macOS, Amiga, and more.
Lynx is easy to use, just open a terminal and type:
To enter a web address, press g, then type the address and press Enter.
As an alternative, to launch a web page directly from the command line, you can add the site name directly to the command before launch.
For example, if you enter:
... Lynx will open and try to connect to bbc before it intelligently tries to connect to bbc.com.
Navigation is controlled by the keyboard: up and down arrow keys to navigate to a link. Then right to follow the link and left to return.
Lynx allows cookies, and when a site attempts to use them, Lynx gives you the choice of yes, no, always, and never. It will also indicate whether the cookies are direct or third party. Due to the impact of cookies on privacy, Lynx supports clearing the cookie cache, as well as whitelisting and blacklisting.
Lynx is easy to install and use, but has hundreds of configuration options relating to everything from how it handles cookies to specifying the text file from which commands are sequentially executed. You can get command line help for Lynx with:
2. w3m
w3m (pronounced W-three-M) is a text-based browser similar to Lynx, but with a few notable differences. While some terminal browsers cut the web to the ground, w3m allows for some graphical styling in the terminal. It can display tables in your terminal and even frames (by converting them to tables first).
w3m can even display images, although most common terminals such as the GNOME Terminal cannot display them. If you need images on a web page in w3m, you will need a terminal such as xterm.
Like Lynx, w3m is available in most repositories by default. To install it on Ubuntu and other Debian-based distributions, type:
sudo apt install w3m w3m-img
Because w3m is technically a pager, it can read documents from standard input and also exits when called with no arguments. Entrance:
...will cause the application to close immediately, while:
...will take you to the main page of this very site! However, you won't see any images. w3m doesn't work well with lazy loading.
Navigation, again, is done using the keyboard, and to select a link, press Enter. The app also boasts a context menu that you can activate by right-clicking the mouse.
ELinks is a well-established, feature-packed text-mode web browser with support for both HTTP and FTP. It's easy to use, straight out of the box, and, in our opinion, nicer to look at than w3m or Lynx.
ELinks is available in standard repositories and also contains binaries available on project download page along with instructions for compiling from source.
Launch ELinks and you will immediately be prompted to enter the URL you want to visit. And when you get there, you'll be surprised that it does a good job of rendering CSS and JavaScript. How successful this will be depends on which site you are trying to browse.
By pressing F10 on your keyboard, you will see a menu bar where you can switch images, save URLs, view history, etc. Each entry in the menu system is accompanied by a corresponding key combination, so while you may need to open the menu several times at first, you will quickly learn how to navigate competently using key bindings.
A terminal-based browser for everyone!
Browsing the web in your terminal is a completely different experience than using a GUI browser, and whichever package you choose will take some getting used to. For a clean and distraction-free test that will work in any terminal, Lynx is your best bet, and if you really think you need JavaScript and CSS, ELinks is probably what you're looking for.
Remember that in order to see the full benefits of ELinks or w3m, your default system terminal won't help - use xterm instead.
Exploring the Internet like in 1993
Terminal-based web browsers allow you to surf the web on computers with exceptionally low bandwidth and low performance, as well as block out distractions and give you more control over your privacy.
Another technology that was around at the time Lynx hit the scene was the Gopher network, later replaced by the Gemini protocol. It is experiencing a resurgence in popularity among niche technology enthusiasts.