NetSurf – A Graphical Web Browser for Command Line (+CSS Support)

with 24 comments

To be honest, Modern web pages ain’t look pretty in CLI web browsers. Up until yesterday, the most kick-ass web browsing experience I had in Console was w3m with image viewing enabled. I was under the impression that this was the best that CLI web browsers could do. However, all that changed when I stumbled upon NetSurf; a venerable independent web browser that has been around for nearly a decade and is available for many Platforms such as RISC OS, Amiga, BeOS, and UNIX-like systems (For both GTK and Framebuffer front-ends). Below is a screenshot of NetSurf FrameBuffer front-end in Debian on my Asus EeePC:

Believe me or not, the above picture is neither photoshoped nor produced in WMs, it’s just a pic of NetSurf running on Framebuffer. The whole browser and all its dependencies roughly measures 5 MB. NetSurf utilizes no bloated Window Managers and still it supports HTML 4, CSS 2.1, HTTPS, Unicode content and many other features. Furthermore, the development seems propitious with HTML 5 and JavaScript support under progress.

If you are asking me, NetSurf is a rarity, perhaps an unmatched commodity. There are some rendering problems on my machine but I take them as foibles. The only reproach that I have to set against its abundant awesomeness is the lack of features like JavaScript support or extensions that you’d expect from a modern web browser but fortunately they are under development.

NetSurf Framebuffer Browser


The best possible way to install NetSurf is compiling from source code. There are some binary packages for Debian, Ubuntu, Puppy Linux, Slackware, etc (check out here) but they are most likely spiked with GTK libraries which are of no interest here.
The real squalor in NetSurf compiling process is the drudgery of installing all its dependencies. There is no single resource that lists all the dependencies and libraries you need to install (Now I wish I had taken a note of all the things I installed). However don’t panic. If you take it step by step you are going to be fine.

  • Head to this page and download all the libraries that are listed on the top of the website (exclude ones that are for RISC OS) and compile each of them as usual. For example, start with LibCSS and do the following:

tar –zxvf libcss-0.0.2-src.tar.gz
cd libcss-0.0.2-src
make install

Do the same thing for all the other libraries. Some libraries may complain that you don’t have some binary libraries (like XCB and SDL) installed; which means you should install them first. When you have all the libraries compiled and installed you can move to next step which is compiling the NetSurf source code.

  • Go here and grab a copy of  NetSurf’s source code.

cd netsurf
make TARGET=framebuffer
make TARGET=framebuffer install

If the compilation is successful then you should be able to run NetSurf now. Happy (without-X) web surfing and if you have any questions or ideas, feel free to leave a comment.


Written by Woody

November 16, 2010 at 6:16 pm

Posted in Apps

24 Responses

Subscribe to comments with RSS.

  1. […] This post was mentioned on Twitter by eBot, Gianluca, Trey Wheatley, steve sanderson, Top Technology News and others. Top Technology News said: A Graphical Web Browser for Linux Command Line […]

  2. I think this would be a neat addition for the Ben NanoNote (palmtop Linux computer), which has framebuffer rendering. I hope someone manages to port it soon, if possible!



    Ruben Berenguel

    November 17, 2010 at 2:17 pm

  3. It’ll probably be the default browser for the newer jlime muffinman images ( that we’re building. AFAIK there’s also an SDL-based version, which I’ll have to check out.


    November 17, 2010 at 8:21 pm

    • It’d be great to see distros with NetSurf pre-installed. I’ll keep an eye on that.


      November 18, 2010 at 8:26 pm

  4. That’s the headache of it all is the installing from source, tracking, etc.. It is an independent browser unlike the bandwagon hits coming out of WebKit land so I do like that fact and it’s sad that many smaller browsers did not take interest in NetSurf to help it along. Because of the trouble with installing and that it’s not html5 capable (yet) I’ll stick with midori. Although that framebuffer ui would be nice to have on midori 😉



    November 17, 2010 at 9:51 pm

    • Don’t give up on it. The installation is not difficult, it’s just undocumented.


      November 18, 2010 at 6:17 am

  5. nice, just one nitpick:
    console does not equal command line.

    i can run web browsers like firefox from the command line too. that does not make them a command line browser. the significant difference is that netsurf runs in a console. but that does not help those of us who are running command lines inside terminal windows in X11. also, console or X11, most of my command lines run on a remote machine. if i want to run a browser there, lynx, links, elinks and w3m are the only options. without image viewing.

    btw, links works as a graphical browser in the console too.

    on the commandline i don’t miss the graphics support. when i use a command line webbrowser, then the main reason is that i do not want graphics, mostly for speed reasons. missing javascript is more of an issue. (it looks like links and elinks are getting javascript support though)

    greetings, eMBee.


    November 18, 2010 at 1:28 am

    • I tend to agree that the title might be a bit misleading. I guess “Linux Framebuffer” would have been more descriptive.


      November 18, 2010 at 6:11 am

      • Hmm, maybe it would be better to declare that this browser works without any windowing interfaces installed? Or maybe ‘Does not require XWindows/XOrg/XFree86″? I say this because so many ‘buntu noobs are flocking in from Winhose, and the whole concept of frame buffering has not been a part of 99.9% of Winhose users lives – I’m saying try to talk in the most general of terms which they might understand.
        OTOH, not hanging ones self on a misconception is also important – your call.


        December 4, 2010 at 8:55 pm

  6. I think I should embed into it, so it can be an alternative GUI for REBOL 3, what’s more, it would allow fast prototyping for SVG and HTML5 features. Checkout to get an idea of the language.

    Tamas Herman

    November 18, 2010 at 1:43 am

  7. Hi re dependencies

    Take a look at this

    It extracts a dependency tree making it scriptable
    It solves your problem I think

    james ferguson

    November 18, 2010 at 3:46 pm

    • Never heard of it before. I’ll give it a go. Thanks!


      November 18, 2010 at 8:23 pm

  8. […] NetSurf – A Graphical Web Browser for Command Line (+CSS Support) « Soosck […]

  9. […] just got to make some slackbuilds for this:…mand-line-css/ When I'm in runlevel 2 I can already do pretty much everything I need without problems (tmux, […]

  10. I really could have appreciated such a surfing capability a few years as I was stuck without XWindowing capability and I needed to read a particular ‘how to’ in order to install important stuff; the instructions I needed were written in, of all things, HTML. W3C/MC weren’t available for installing, at that situation, so I had a difficult time reading the ‘how to’ with all the HTML tags. I eventually gave up on that installation and reinstalled an older distribution.


    December 4, 2010 at 9:09 pm

  11. I built netsurf, but as soon as i call netsurf-linuxfb
    the home page of netsurf opens and the computer totally freezes, which requires me to reboot.
    any idea how to debug this issue?


    May 26, 2011 at 7:11 pm

    • I am also getting the same problem?

      btw how is it command line browser?


      December 13, 2012 at 9:43 am

  12. Yeah it makes me sad a bit when I realize it is NOT A COMMAND LINE BROWSER after the whole successful installation procedure. Anyway. It seems a cool browser…but not for me ;(


    December 9, 2011 at 9:43 am

  13. that is not ocmmand line! it uses GTK jeez


    May 29, 2012 at 9:05 pm

  14. Hello i have a problem after all the compilation without any error in ubuntu 10.04, the nsfb binary doesn’t work, please help me because there is no error when i execute the binary. Any ideas?


    July 2, 2012 at 5:32 pm

  15. […] Guys, Reading through this article I realized that I had not being specifying the TARGET during the make script. Therefore […]

  16. I have installed it on my remote debian jessie server. Which helps a great deal. I do not have to get a headache over trying to setup X to do remote desktop or VPN port forward out the localhost. Big problem at times installing this like wordpress and plex server. exspecially plex Once installed browser setup is needed and can only be done to LOCALHOST.

    Have installed it from deb files which brought in gtk deps. I am going to install per manual next. I have scripted everything so far. No interactivity needed. With the exception of when install is complete I call netsurf from the server to verify if it works. Then I have the php test screen. The install stops when it loads and waits for you to x out the browser window, Then a dialog back comes up with five different senerios to choose.. then install script continues conitnues automatically. When I get the manual method scripted I’ll check back.
    This repeats twice , the second is to verify that php installed properly. I could just have you x out a


    February 27, 2016 at 5:25 pm

  17. Fonts? Images? CSS? Why not go full bloat and use JS too?
    What a bloated piece of shit.
    Try using something *actually* lean and nice, like netcat, or the wonderfully classic piping of /dev/tcp?

    Navid Zamani

    January 20, 2017 at 2:23 am

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: