Fact-checked by Grok 2 weeks ago

NetSurf

NetSurf is a free and open-source written primarily , featuring its own custom layout and rendering engine designed from scratch to ensure standards compliance with protocols like HTTP, , and CSS. Released under License version 2, it emphasizes a small , fast startup times, and portability across diverse platforms, making it particularly suitable for resource-constrained devices and environments such as older hardware or embedded systems. Development of NetSurf began in April 2002 on the operating system, with the project's first stable release (version 1.0) occurring on May 17, 2007. The browser originated as a lightweight alternative for non-standard platforms, with an early port starting in June 2004 to extend support to systems. Over time, it has expanded to include ports for , , , , and framebuffer-based environments using toolkits like , X, VNC, and ABLE. Key features of NetSurf include full-page scaling for optimal viewing on small screens, efficient rendering that adheres closely to web standards, and a modular that facilitates ongoing development and maintenance. The project prioritizes creating a superior through fun and collaborative development, while maintaining a compact size and high portability without relying on large external dependencies. As of late 2023, the latest stable version is 3.11, which introduced enhancements like CSS flexbox support, performance optimizations, and improved capabilities.

Overview

Design principles

NetSurf's development originated from a 2002 discussion among developers highlighting the limitations of existing browsers, such as their lack of portability and high resource demands. This led to the creation of a browser designed to be multi-platform and low-resource, avoiding dependencies on heavyweight rendering engines like or to ensure broader across constrained systems. Central to NetSurf's philosophy are principles of minimalism, , and . Minimalism is achieved through a compact size, typically under 5 MB, enabling fast startup and efficient operation on with limited resources, such as 200 MHz processors. is embodied in its fully custom layout and rendering engine, developed from scratch in to handle core web standards without relying on external libraries. extends to non-x86 architectures, including ARM-based , 68k , and various systems, prioritizing portability over platform-specific optimizations. The browser emphasizes support for essential web tasks, such as accessing , news sites, and online forums, through adherence to foundational web standards such as and CSS, including select modern features like CSS flexbox, with full-page scaling suited for smaller screens. This targeted approach favors reliable performance on basic web content over comprehensive compatibility with modern, resource-intensive web technologies.

Licensing and team

NetSurf has been released under the GNU General Public License version 2 (GPLv2) since its inception, which ensures that the software remains free and , allowing users to study, modify, and distribute it in accordance with principles. The core development team consists of volunteers without a , led by Vincent Sanders as the project founder and primary coordinator, alongside key contributors such as Michael Drake, who serves as the primary developer of the layout engine, and John Mark Bell, who contributes to core project libraries. Development is managed through repositories hosted at source.netsurf-browser.org, enabling collaborative contributions and providing source code for building on multiple platforms using compilers like or . The project has remained active since its start in April 2002, with builds available for various systems and releases occurring irregularly but consistently, often annually, to incorporate improvements and fixes.

History

Origins and early development

NetSurf was initiated in April 2002 as an open-source project aimed at addressing the limitations of existing web browsers on the operating system, particularly their inadequate support for emerging web standards such as CSS. At the time, popular browsers like offered only basic rendering and struggled with CSS compliance, leading to poor fidelity in displaying modern websites. The project was started by James Bursa, who made the first code commit on 22 April 2002, with the goal of creating a that adhered closely to web standards while maintaining a small resource footprint suitable for hardware. Initial development focused exclusively on the platform, emphasizing a custom layout and rendering engine built from scratch to avoid dependencies on external libraries, which were scarce or incompatible with at the time. This approach allowed for tight integration with the operating system but presented significant challenges, including the need to implement core web technologies like parsing and CSS styling without leveraging established toolkits used in other browsers. Alpha and development builds became available starting in 2005, enabling early testing and refinement, though these were primarily used by the community for feedback rather than general distribution. By 2007, the project had achieved basic rendering capabilities, marking a key milestone in its early phase. The inaugural stable release, version 1.0, on 19 May 2007. This version coincided with the show and quickly established NetSurf as the most widely used on the due to its superior standards compared to predecessors. The emphasis on lightness and self-sufficiency in the early design principles ensured the remained viable on resource-constrained systems, setting the foundation for future multi-platform expansion.

Major releases and milestones

NetSurf's first stable release, version 1.0, arrived on May 19, 2007, marking the browser's transition from development builds to a mature offering with initial multi-platform support for and systems via a GTK port, alongside basic compliance with CSS 2 standards through its custom layout engine. Version , released on April 25, 2009, introduced a new HTML parser called Hubbub, support for images, PDF content export, and enhancements to page fetching and caching mechanisms, broadening its rendering capabilities while maintaining a lightweight footprint. Later, version 2.7 on April 16, 2011, added tree-based global , integrated bookmark management, and a manager, improving navigation and user data persistence across sessions. A significant milestone came in September 2012 with preview development builds that incorporated early-stage support using an experimental , enabling basic dynamic content handling for the first time, though it remained incomplete and disabled by default in stable releases. Version 3.0, launched on April 20, 2013, featured a major rewrite of the core with the introduction of the library for better handling and parallel fetching of CSS and resources, enhancing CSS compliance and overall performance. Subsequent updates refined these foundations: version 3.10 on May 24, 2020, bolstered protocols, validation, and error reporting for fetches, alongside a GTK frontend overhaul for improved usability. The most recent major release, version 3.11 on December 28, 2023, integrated CSS flexbox layout support for modern page rendering and updated the Duktape to version 2.7.0, with additional optimizations for speed and stability. As of November 2025, NetSurf continues active development with ongoing performance optimizations and bug fixes in nightly builds, including addressing a security vulnerability (CVE-2025-45663) disclosed on 3 November 2025 affecting version 3.11, ensuring its viability for resource-constrained environments without a new major version since 3.11.

Technical architecture

Layout and rendering engine

NetSurf's layout and rendering engine is a system written from scratch, comprising modular libraries that process , CSS, and associated assets without external dependencies such as or . This self-contained architecture minimizes footprint and facilitates ports to low-resource platforms, including embedded systems like those on and . The engine emphasizes efficiency through optimized parsing, styling, and drawing stages, enabling fast rendering on hardware with limited capabilities. HTML parsing is handled by Hubbub, an -compliant library that tokenizes input and constructs a (DOM) tree, ensuring robust error recovery as per the specification. This tree represents the document structure, including elements, attributes, and text nodes, serving as the foundation for subsequent processing. Hubbub's implementation focuses on the parsing algorithm, allowing NetSurf to handle malformed web content gracefully while adhering to strict standards. Style application occurs via LibCSS, a CSS parser and selector engine that interprets stylesheets and applies them to the DOM through a cascading resolution process. LibCSS fully supports CSS 2.1, including the box model, selectors, and properties for layout and typography, alongside partial CSS3 extensions such as namespaces and, since NetSurf 3.11 in December 2023, flexbox for flexible box layouts. The cascade computes computed styles for each node, generating a render tree (or ) that incorporates visual formatting rules, enabling efficient traversal during layout. Layout calculation follows tree construction, where the engine computes spatial arrangements using , accounting for block, inline, float, and positioned elements. This phase employs a with floating-point precision to determine dimensions and positions, supporting subpixel accuracy for smoother rendering on high-resolution displays. The resulting layout data drives the painting stage, where content is rasterized onto the target surface via platform-specific frontends. For , NetSurf integrates libsvgtiny, a lightweight library implementing the Tiny 1.2 specification, which parses and renders scalable vector paths, shapes, and gradients directly into the flow. This allows inline SVG elements to be treated as replaced content within the box model. The engine's design prioritizes resource efficiency, including support for decoding CMYK-encoded images—converting them to displayable RGB—along with proactive cleanup of fetched assets like images and stylesheets to prevent memory leaks in long-running sessions. These features contribute to its suitability for constrained environments, where traditional engines would impose excessive overhead.

JavaScript and standards support

NetSurf employs the Duktape embeddable to handle scripting, which was integrated starting with version 3.4 in 2016 and has since been updated through various releases. The engine reached version 2.7.0 in NetSurf 3.11, released on December 28, 2023. Duktape provides full support for 5.1, with partial compatibility for select 6 features, though NetSurf's implementation remains experimental and is disabled by default to ensure stability on resource-constrained platforms. The browser's bindings, generated using the nsgenbind tool from W3C WebIDL specifications, enable basic interactions but lack comprehensive DOM manipulation capabilities and advanced such as those for or networking. This limited scope prioritizes essential functionality, like form validation and simple event handling, while avoiding the complexity of full dynamic content rendering to maintain portability across diverse hardware. As a result, sites relying on heavy scripting may require manual enabling of via settings, but performance and reliability can vary. In terms of web standards compliance, NetSurf fully implements HTML 4.01 and CSS 2.1, allowing it to render the majority of static web content effectively. Support for modern extensions includes partial CSS flexbox, introduced in version 3.8 and refined in 3.11 for better layout flexibility, as well as initial CSS Grid via the display: grid property added in 3.11. HTML5 adoption is restricted; while basic elements are parsed, advanced features like the <canvas> tag received initial support in version 3.10, but <video> tags and related playback are not implemented. WebGL and plugin architectures are absent, aligning with the browser's design philosophy of minimizing dependencies for cross-platform efficiency. These choices reflect NetSurf's emphasis on lightweight operation over complete modern web fidelity, enabling compatibility with text-heavy and standards-based pages while sidestepping resource-intensive elements that could compromise its core portability goals. As of November 2025, the latest stable release remains 3.11, with developer builds of version 3.12 available, incorporating ongoing improvements to standards support.

Features

Core browsing capabilities

NetSurf supports tabbed browsing, allowing multiple pages to be open within a single for efficient between sites. The maintains both local and global in tree structures: local history per includes thumbnails and titles of visited pages, while global history aggregates all URLs across sessions with timestamps, retaining entries for up to four weeks to enable quick revisitation. The hotlist, functioning as a bookmarks manager, organizes entries in a hierarchical tree view that supports nesting, renaming, and dragging for customized access, stored as an HTML file for persistence. Cookie handling is managed through a dedicated cookie manager that permits viewing, deletion, and blocking of supercookies, with treeview search capabilities added for easier management. For content handling, NetSurf includes ad-blocking through URL filtering and an "Hide advertisements" option that uses pattern-based guesses to suppress common ad elements during page rendering. The download manager provides a dedicated displaying for files not rendered inline, supporting drag-and-drop saving to local storage. Search integration features as-you-type text highlighting within pages, with configurable access for finding content efficiently. Certificate support has been enhanced for secure connections, including validation and handling, while authentication covers HTTP basic and methods via proxy configurations. Performance is optimized by NetSurf's lightweight layout and rendering engine, enabling fast page loading even on resource-constrained systems like those with 16 MB RAM. Hotlists facilitate quick access to frequently visited sites via toolbar integration, reducing navigation time. The global history's timestamped URL storage further aids in rapid retrieval of past sessions, contributing to overall efficient browsing without heavy resource demands.

User interface elements

NetSurf's user interface emphasizes simplicity and efficiency, supporting multiple browser windows and tabbed browsing (where available in frontends) to allow users to manage several pages simultaneously. Each window features a customizable toolbar containing navigation buttons such as Back, Forward, Reload, Stop, , and Up, alongside tools for accessing the hotlist, search, , , , and scale functions. The status bar at the bottom of each window displays loading progress during page fetches and shows the URL of hovered , providing essential feedback without cluttering the main view. The browser includes customizable hotlists for management, presented in a tree-based structure that organizes entries into directories for easy navigation and editing, accessible via a dedicated button or . Search functionality is integrated through a dedicated panel invoked by the Search button or shortcut, enabling users to find text within the current page efficiently. These elements contribute to core browsing by facilitating quick access to saved sites and content retrieval. Keyboard shortcuts enhance accessibility and navigation, with key combinations like Ctrl+N for opening a new window, F5 for reloading the page, for initiating a search, and F6 for the hotlist, allowing operation without exclusive mouse dependency. History views, both local () and global (Ctrl+F7), also employ tree diagrams for hierarchical browsing of visited sites, supporting users who prefer keyboard-driven interactions or assistive technologies. Platform adaptations ensure a native , utilizing toolkits such as for and Win32 for Windows to integrate seamlessly with the host environment while maintaining a lightweight design with minimal menus. The menu structure is streamlined, featuring categories like Navigate, Display, and Utilities, and the can be hidden or rearranged to suit user preferences, reducing visual overhead on resource-constrained systems.

Platforms

Primary ports

NetSurf's primary ports target mature, actively maintained platforms where the browser offers full-featured functionality with native or well-integrated user interfaces. These include the original implementation, the GTK-based frontend for and other systems, a native Win32 version for Windows, and a dedicated port for 4. Each port leverages NetSurf's lightweight design to provide efficient browsing on resource-constrained hardware while supporting core web standards like HTML 4.01 and CSS 2.1. The port serves as NetSurf's foundational platform, developed initially for this operating system and remaining fully featured with a native that integrates seamlessly with RISC OS's . Active development began in April 2002, predating the first stable release in May 2007, and continues to receive updates, including enhancements to rendering and standards compliance. This port emphasizes low memory usage and fast performance, making it the most widely used on RISC OS systems. For and systems, NetSurf employs a stable frontend that supports both X11 and display servers, enabling deployment on desktops, servers, and embedded devices such as the . The binary executable is compact, typically around 5 MB including essential resources, which aligns with the project's portability goals by minimizing dependencies and footprint. This port is packaged in major distributions like and , facilitating easy installation and use in Unix environments. The Windows port utilizes a native Win32 frontend, introduced around the time of NetSurf's early releases in , and has been updated through version 3.11 released in 2023. It provides adequate handling of modern websites through its core engine, supporting essential features like tabbed browsing and SSL encryption without relying on external toolkits like for the primary interface. Test builds and remain available for ongoing development and user testing on Windows platforms. On , NetSurf features a native optimized for PowerPC hardware, incorporating tabs, bookmarks, management, and handling to deliver a complete experience. This port, maintained specifically for 's environment, supports file uploads/downloads and integrates with system tools like ARexx for scripting, ensuring compatibility with the platform's legacy and performance characteristics. Updates, such as version 3.11, include improvements to error handling and authentication for better reliability on Amiga hardware. As of September 2025, a version 3.12 (build 6872) provides additional bug fixes, improved image processing, and enhanced stability.

Experimental and niche ports

NetSurf has been adapted to several experimental and niche platforms, leveraging its lightweight architecture to run on specialized or resource-constrained hardware. These ports often prioritize basic functionality over full feature parity, enabling web browsing in environments where mainstream browsers are impractical. The port, a native implementation using the BeAPI, is active and functional, providing most core browsing features such as 5 and CSS support through prebuilt packages available via the Haiku Depot. However, it remains incomplete, with some UI elements lacking polish compared to primary ports. This adaptation fills a gap for Haiku users seeking an alternative to heavier browsers like . For vintage hardware, NetSurf offers a targeting TOS and environments, requiring FreeMiNT 1.17 or later for operation. It delivers basic rendering suitable for older 68k-based systems, with recent development builds confirming ongoing maintenance as of 2025. This enables lightweight web access on classic , , and machines without modern accelerators. A community-driven work-in-progress for the emerged in 2024, optimizing NetSurf's engine for the handheld's 64-128 MB RAM constraints. It supports essential features like TLS 1.2, , and CSS for browsing websites and local files, while remains limited to potential future integration via the Duktape engine. This effort highlights NetSurf's portability to embedded gaming devices. Past development efforts included a native Mac OS X port, which was available in earlier releases but has since been discontinued in favor of GTK-based builds through package managers like . Similarly, porting to began around 2020 and continues as a work-in-progress, with available for building on 9front distributions, though no official releases exist yet. For embedded systems, the framebuffer frontend has been tested on low-resource devices like the Raspberry Pi Zero, demonstrating viability on ARM-based hardware with minimal memory and CPU demands, such as 200-400 MHz processors.

Forks

visurf

visurf is a fork of the NetSurf web browser, announced on September 11, 2021, by software developer Drew DeVault. The project stems from DeVault's dissatisfaction with the complexity of modern web browsers, aiming to create a simpler, more efficient alternative inspired by tools like qutebrowser but with reduced overhead. By forking NetSurf, visurf leverages its lightweight engine while introducing targeted enhancements for power users who prefer command-line-like efficiency. A core modification in visurf is the integration of vi-inspired keybindings, which enable modal editing and intuitive navigation without relying on a mouse, such as using the 'h', 'j', 'k', and 'l' keys for horizontal and vertical movement akin to the Vim text editor. This design choice emphasizes keyboard-driven interaction, reducing visual clutter and allowing for rapid, distraction-free browsing sessions. The undergoes significant simplification in visurf, featuring a lightweight, Wayland-only compositor that minimizes dependencies to essential components only. This approach supports a focused, terminal-esque experience tailored for environments where resource efficiency and are paramount, diverging from more feature-heavy graphical frontends. visurf is a work-in-progress , with development centered on enhancing rather than pursuing complete feature parity with the base NetSurf browser.

NeoSurf

NeoSurf is a of the NetSurf developed by the CobaltBSD team, initiated around to address limitations in the original project through targeted enhancements. The fork emphasizes modernization while preserving NetSurf's lightweight design, with a primary focus on improving and usability without introducing unnecessary complexity or bloat. Key developments in NeoSurf include various privacy-focused improvements and additions, such as measures to enhance user protection against tracking, alongside a revamped build system utilizing and for easier compilation and maintenance. These changes aim to fix bugs in the upstream codebase, upgrade the user interface—particularly for the frontend—and simplify frontend development, enabling better integration with system libraries. The project also incorporates support for visurf, a related NetSurf frontend, with upstream fixes to ensure compatibility. NeoSurf is geared toward BSD-based platforms, including the operating system, while maintaining portability across and other BSD variants. It is hosted on as an open-source project and positions itself as a privacy-oriented of NetSurf, with development aimed at supporting modern browsing needs in resource-constrained environments.

References

  1. [1]
    About NetSurf
    NetSurf is a free, open-source web browser written in C, with its own rendering engine. It is small and aims for a superior user experience.
  2. [2]
    NetSurf Web Browser
    NetSurf is a free, multi-platform, lightweight web browser for various systems, designed for webmail, news, and forums, and is compact and low maintenance.Downloads · About NetSurf · NetSurf web browser · Screenshot Gallery
  3. [3]
    NetSurf | Developers and Contributors
    ### Summary of NetSurf Development Details
  4. [4]
    The RISC OS Browser Issue
    The list of graphical browsers currently includes: ArcWeb, Webite, WebsterXL, Fresco, Browse and Oregano (1 and 2), NetSurf along with a variety of variations.Missing: principles | Show results with:principles
  5. [5]
    The NetSurf Developers
    His RISC OS NetSurf builds are done using the GCCSDK cross-compiler on an Ubuntu Linux desktop machine and tested on RiscPC and A9home. First check in: 1 May ...Missing: origins | Show results with:origins
  6. [6]
    News - NetSurf
    Dec 28, 2023 · NetSurf 3.7 features performance improvements, improved page layout, and many fixes. Also new is a treeview search feature, which allows Hotlist ...
  7. [7]
    NetSurf 3.11 Released - Software News - Amigans
    Dec 29, 2023 · * JavaScript: Updated to Duktape 2.7.0 release. * JavaScript: Console: Don't log through closed window. * Utility: Cleaned up UTF8 handling ...<|control11|><|separator|>
  8. [8]
    Hubbub | HTML Parsing Library - NetSurf
    Hubbub is an HTML5 compliant parsing library, written in C. It was developed as part of the NetSurf project and is available for use by other software under ...
  9. [9]
    netsurf-browser/libhubbub: HTML5 parser library - GitHub
    Hubbub -- an HTML parser ======================== Overview -------- Hubbub is a flexible HTML parser. It aims to comply with the HTML5 specification.
  10. [10]
    LibCSS | CSS Library - NetSurf
    LibCSS is a CSS (Cascading Style Sheet) parser and selection engine, written in C. It was developed as part of the NetSurf project and is available for use by ...Missing: 1.0 | Show results with:1.0
  11. [11]
    Developer Documentation - NetSurf
    This document contains various information for developers or anyone interested in contributing to NetSurf.Missing: rendering engine
  12. [12]
    Libsvgtiny | SVG Tiny Library - NetSurf
    Libsvgtiny is an implementation of SVG Tiny, written in C. It is currently in development for use with NetSurf and is intended to be suitable for use in other ...
  13. [13]
    Change Log - NetSurf
    * LibNSFB library 0.1.5 (NetSurf Framebuffer): - Optimisation to pixel/colour conversion. - Added backend surface enumerator. - Minor code quality improvements.
  14. [14]
    netsurf-browser/nsgenbind: netsurf binding generator - GitHub
    nsgenbind ========= This is a tool to generate JavaScript to DOM bindings from w3c webidl files and a binding configuration file.
  15. [15]
    Development - NetSurf
    Interface binding. In order for javascript programs to to interact with the page contents it must use the Document Object Model (DOM) and Cascading Style Sheet ...Missing: manipulation | Show results with:manipulation
  16. [16]
    View topic - netsurf unable to load most websites - Gentoo Forums
    Jul 7, 2023 · Netsurf was released in 2007 and its current stable release is from 2020. I read something recently about funding for a new browser (or ...Missing: 0.0 | Show results with:0.0
  17. [17]
    Development Progress - NetSurf
    Dec 20, 2012 · ... JavaScript support is currently at a very early stage of development. This means NetSurf currently lacks support for dynamic content. User ...
  18. [18]
    ChangeLog.txt - NetSurf
    * Improved browser history handling to be more robust. * Buildsystem dependency improvements. * Improved handling of messages and bundled resources. * Added ...
  19. [19]
    User Guide - NetSurf
    Nov 10, 2007 · To run NetSurf, simply double click on the NetSurf application. This will cause the NetSurf icon to appear on the iconbar. Select clicking on this icon will ...Missing: lightweight design principles engine
  20. [20]
  21. [21]
  22. [22]
  23. [23]
  24. [24]
  25. [25]
  26. [26]
  27. [27]
    GTK NetSurf Downloads
    The Netsurf GTK toolkit front end is targeted at systems that provive a Unix-like environment, such as Linux, OpenBSD, FreeBSD, NetBSD, Solaris and similar.Missing: 0.0 | Show results with:0.0
  28. [28]
    Build Instructions for GTK NetSurf
    GTK NetSurf has been tested on Debian, Ubuntu, Fedora 8, FreeBSD, NetBSD and Solaris 10. NetSurf requires at minimum GTK 2.12.Missing: size | Show results with:size
  29. [29]
    Index of /builds/windows/release - NetSurf
    Index of /builds/windows/release. [ICO], Name · Last modified · Size ... 2025-10-04 06:28, 8.2M. Apache/2.4.62 (Debian) Server at ci.netsurf-browser.org Port 443.
  30. [30]
    NetSurf Web Browser for AmigaOS 4 - Unsatisfactory Software
    The AmigaOS 4 port boasts a new native user interface, with tabbed browsing, bookmarks, history, cookie browser, ARexx port, upload and download of files ...Missing: features | Show results with:features
  31. [31]
    Internet - AmigaOS
    NetSurf is a fast CSS capable web browser. The AmigaOS 4 port boasts a new native user interface, with tabbed browsing, bookmarks, history, cookie browser, ...
  32. [32]
    visurf, a web browser based on NetSurf - Drew DeVault's blog
    Sep 11, 2021 · visurf, or nsvi, is a NetSurf frontend which provides vi-inspired key bindings and a lightweight Wayland UI with few dependencies.Missing: fork | Show results with:fork
  33. [33]
  34. [34]
    GitHub - CobaltBSD/neosurf: A NetSurf fork with various improvements
    ### Summary of NeoSurf (https://github.com/CobaltBSD/neosurf)