About NetSurf
NetSurf is a free, open source web browser. It is written in C and released under the GNU Public Licence version 2. NetSurf has its own layout and rendering engine entirely written from scratch. It is small and capable of handling many of the web standards in use today.
Project Goals
The NetSurf project's goals and aims are:
- Have fun
- NetSurf is developed in people's spare time, so our main goal is to have fun – hopefully learning something and creating a product that people find useful along the way. If you want to join in, check out the developer and contributor area!
- Adhere to the standards
- There are many web standards. HTTP, HTML and CSS are just a few of them, and new specifications appearing all the time. The NetSurf team is devoted to implementing these standards.
- Superior user experience
- We want NetSurf to provide a consistent interface to the user that fits right in with your desktop environment. We aim to make NetSurf's interface clean and simple while providing access to powerful functionality.
- Keep NetSurf small
- NetSurf is a web browser with a small footprint, and we want to keep it that way.
- Portability
- We want NetSurf to be available to as many users as possible. We've already seen ports to handheld devices and would like to help anyone attempting a new port.
- Modularity
- Many of of the components designed for NetSurf are available separately, so that others might use them in their own projects.
Project History
The NetSurf project was started in April 2002 in response to a discussion of the deficiencies of the RISC OS browsers that were available at the time. NetSurf has been developed continuously ever since. The latest features and bug fixes have always been available immediately to RISC OS users through the project's autobuilder. NetSurf had become the most widely used browser on RISC OS well before NetSurf's first release, version 1.0, on 17th May 2007. Development builds have continued to be more widely used than release versions by RISC OS users.
A GTK port was started in June 2004, which runs on Unix-like platforms. Initially this port was created in order to aid the development and testing of the RISC OS version. Over time, the GTK port has become a fully fledged part of the project and cemented NetSurf's commitment to portability.

NetSurf's exuberant throbber animation in 2004.
NetSurf has now been ported to many more platforms with native front ends being created for BeOS & Haiku, as well as AmigaOS 4. A dumb framebuffer port also exists, which has no particular operating system or GUI toolkit requirements.
Timeline
Some of the major events and changes in the project's history are chronicled below.
| Apr 2002 | NetSurf project started |
|---|---|
| Jun 2004 | GTK port available |
| May 2007 | NetSurf 1.0 released |
| Jun 2007 | NetSurf packaged in Debian |
| Jun 2007 | Hubbub HTML parser started |
| Jul 2007 | LibDOM DOM implementation started |
| Aug 2007 | NetSurf 1.1 released |
| Jan 2008 | NetSurf web site redesigend and rewritten |
| Mar 2008 | NetSurf 1.2 released |
| May 2008 | LibCSS CSS parser started |
| Jun 2008 | BeOS & Haiku port available |
| Aug 2008 | AmigaOS 4 port available |
| Aug 2008 | Hubbub used by NetSurf development builds |
| Sep 2008 | Framebuffer port available |
| Apr 2009 | NetSurf 2.0 released |
| May 2009 | NetSurf 2.1 released |
Get the latest version from our download section.
Ports & Availability
This section explains the various NetSurf front ends and should cover whether NetSurf is available for your system. NetSurf currently has five different front ends. These are for RISC OS, GTK, BeOS, AmigaOS and dumb framebuffers.
Desktop front ends
The RISC OS front end is suitable for RISC OS 4 and greater. The AmigaOS front end is suitable for AmigaOS 4. The BeOS front end works on BeOS, Zeta and Haiku.
NetSurf's GTK front end works on Unix-like systems, including Linux, FreeBSD, NetBSD, Solaris and others. There are no native Windows or MacOS X ports of NetSurf at the moment, however the GTK front end can be built for those platforms. The GTK front end is available from the package repositories of many Linux distributions including Debian and Ubuntu.
Framebuffer front end
NetSurf's framebuffer front end has no particular operating system or GUI toolkit requirements. Its mouse pointer, all its widgets etc, are drawn though NetSurf's internal plotters, the same rendering interface used to draw web pages. This makes the framebuffer front end highly portable. Currently the framebuffer can target the following:
- The Linux framebuffer
- Output to a Linux framebuffer and input from Linux input event device nodes. The output device may be specified and defaults to
/dev/fb0. The input node search path may also be specified, and defaults to/dev/input/. - SDL
- The SDL frontend is a straightforward port to the SDL library which is available for many operating systems. This allows the framebuffer NetSurf front end to be run inside a desktop window, making development easier.
- VNC
- The VNC server frontend uses the libvncserver library to provide a straightforward unsecured VNC server. Multiple clients may connect.
- The ABLE framebuffer
- This front end runs on the ABLE bootloader shipped with hardware from Simtec.
Releases vs Development trunk
NetSurf 2.1 is the latest version and is a bug fix release for NetSurf 2.0, which was released in April 2009. NetSurf 1.0 was released in May 2007. The NetSurf 1.x releases since then have comprised largely of bug fixes merged from NetSurf's main development trunk back to the 1.x branch.
Users building NetSurf from source are encouraged to build the current HEAD, rather than a release, as it is most up-to-date and has features that may not yet have been released.
NetSurf in Action
Since NetSurf started out on RISC OS hardware, which is not particularly fast – the most widely used RISC OS hardware is a 200 MHz StrongARM RiscPC – so it runs well on resource constrained hardware such as handhelds. Even on fast modern desktops, users benefit from NetSurf's efficiency through its fast startup time and lightweight approach.
The image above shows NetSurf's framebuffer front end running on top of a Simtec DePicture's bootloader! It's using an ARM9-based Samsung S3C2440 CPU running at 400 MHz.
People also use NetSurf on other handheld gadgets, such as the Openmoko mobile phone and the Nokia N810 internet tablet. NetSurf's full page scaling abilities help it to make the best use of a small screen.
Want to help?
The NetSurf project needs help and input if it is to keep moving forward. There are many ways for users to contribute to the NetSurf project. One of the simplest is to try the latest development build regularly. If you find any bugs, features you like or changes you don't like you can give feedback to the developers. It is this valuable feedback that helps shape NetSurf into a program people enjoy using.
Visit the "How can I help?" page to see other ideas for contributing to the project. If you can program and you'd like to improve NetSurf, then we'd love to hear from you. Pick an area you'd like to improve or a feature you want to add and contact the developers. Also, take a look at the developer and contributor area of this site.


