2005 Text Mode Browser Roundup

by Erik Inge Bolso

Editor's Note: This article has been updated since its original posting.

Browsing the Web in text mode has a long history. Initially, text mode was all there was, with the CERN Line Mode Browser (also called www). The ever-present Lynx made the jump to full-screen text mode, as opposed to line-by-line, in late 1992. Lynx continues to be maintained and extended today. Incidentally, Lynx originally was a browser for Gopher and some in-house university hypertext systems. Emacs/W3 came next, in 1993, and was written in Emacs Lisp.

In late 1998, W3M came out of Japan, and in 1999 Links was released by Czech programmer Mikulas Patocka. Both these projects have since forked to different degrees. For example, ELinks, an offshoot of Links, now is considered to be a separate project.

Considering the speed and convenience text mode browsers offer, even over SSH connection from half a continent away, text mode browsing is supremely useful. So let's take a look at the current state of text mode browsers.

Lynx

Ported to almost every current system under the sun and available on most general purpose SSH-accessible systems in the world, Lynx is a mature piece of software. As such, it has accumulated well over a hundred command-line options and obscure features. It still does the basics well, including SSL these days, and it is quick compared to any graphical browser.

Lynx renders pages in color or monochrome, based on your preference. It can display pages in any of a few dozen character sets--Arabic, Hebrew and Japanese, to name a few--and can be integrated into any printing and storage regime. This is due to supporting user/administrator-defined commands on print and download requests. Lynx comes with extensive documentation, including a speech-friendly set of help files tailored for blind and visually handicapped users. Lynx also has a kiosk mode, so you can restrict the set of allowable actions and URLs.

Lynx does have a few shortcomings, however. It downloads only one file at a time and does so in the foreground, so you cannot continue browsing while the download is underway. Lynx also does not render frames, and it lays out tables strangely. Finally, Javascript links will frustrate you every time you encounter them on less-accessible Web sites.

Emacs/W3

At the time of its release, Emacs/W3 was touted as yet another reason why a user would never have to leave Emacs. It can do UTF-8 as well as Emacs can, and it understands simple CSS. Emacs/W3 has suffered bit rot since 1999, and it is hard to get up and running these days. It does not understand XHTML, so modern pages have bits and pieces of code sticking out all over the place. Currently, Emacs/W3 needs quite a bit of rework and is not recommended for use.

W3M

W3M originally was intended to be a pager, like the less pager but with HTML support. The original author felt Lynx was big and slow and wanted a quick, light replacement. Thus, W3M came into being. Over time, W3M has grown, and nowadays it has a somewhat bigger memory image than Lynx does while viewing the same page.

W3M was the first text browser to handle table rendering well, and it transforms frames to tables for convenient viewing. Coming from Japan, it has good support for exotic scripts and UTF-8. At first W3M was purely bilingual, offering good support for English and Japanese scripts, but improvements to support the broader world languages is ongoing. In addition, the browser offers the unexpected feature of being able to render images in-line on your xterm or framebuffer console. This feature is not really relevant to this comparison, but it is worth a mention. W3M also offers tabbed browsing.

W3M's shortcomings are few. W3M does not do incremental rendering. Also, you cannot do anything else while W3M is loading a page, even if you have several tabs open.

Links

As the name suggests, Links was created as a Lynx replacement to offer saner table renderings and a smaller footprint. In these areas, Links has succeeded; Links 1.0.0pre12 has the smallest footprint of the tested browsers discussed here. On a side note, Links2 seems to be a mostly graphical fork and thus was not considered for this review.

Links does offer saner table rendering than Lynx does; Links rendering is on par with W3M's. Development is frozen, so only bug fixes are being accepted. As a result, Links is both fast and stable. It can run downloads in the background, and it does incremental rendering. Like Lynx, Links has an anonymous/kiosk mode for use on public computers.

As for drawbacks, Links does not support HTTP authentication. UTF-8 support is partial, and no support is offered for Chinese, Japanese or Korean languages (CJK), even when the page is UTF-8-encoded.

ELinks

ELinks started out as a feature patch set to Links. ELinks became a fork when it became clear that no further features would be accepted into Links. As such, it inherits Links' features and flaws and adds a few of its own.

ELinks sports the most features of any text browser--good table rendering, background downloads, incremental rendering--all inherited from Links. Tabbed browsing has been added for convenience. Some CSS support is present, but little more than highlighting text seems to be honored; alignment and positioning mostly are ignored. Alone among text browsers, ELinks offers the beginnings of Javascript support as a standard feature, using Mozilla's SpiderMonkey Javascript engine. With this feature, finally some less-accessible pages can be used in text mode. ELinks' behaviour can be customized by way of Guile, Perl, Ruby and Lua scripts.

As is typical with development forks, ELinks has a large footprint compared to all the other tested browsers. It also has the most visible bugs. Due to its Links inheritance, ELinks has no support for Chinese, Japanese and Korean languages and limited support for UTF-8.

Table 1. Text Mode Browser Feature Comparison

  Lynx Emacs/W3 w3m Links ELinks
Tables Y Y Y Y Y
Frames N N Y Y Y
SSL/TLS Y Y Y Y Y
CSS N CSS1 N N Y
Javascript N N N N Y
UTF-8 Y Y Y N N

Erik Inge Bolsø is a UNIX consultant and epee fencer who lives in Molde, Norway, and who has been running Linux since 1996. Another of his hobbies can be found by doing a Google search for "balrog genealogy", and he can be reached at ljcomment@tvilsom.org.

Load Disqus comments