Skip to content

Latest commit

 

History

History
872 lines (625 loc) · 30.1 KB

web-browsers-by-engine.md

File metadata and controls

872 lines (625 loc) · 30.1 KB

FOSS web browsers by engine

We've originally tried to enumerate lightweight web browsers for outdated computers. They are grouped by engine as resource consumption usually correlates well. One supporting multiple engines is listed under the lightest engine.

Blink engine

AgregoreWeb

  • https://github.com/AgregoreWeb/agregore-browser
  • interface: Electron BrowserWindow and BrowserView
  • implemented in: interface in JavaScript, Electron and Blink in C++
  • license: interface is AGPL-3.0, Electron is MIT, Blink is BSD-3
  • protocols: HTTP, HTTPS, Hypercore, Dat, Gemini, IPFS, BitTorrent, magnet, SSB

Chromium

apt install chromium-browser

Dooble

Falkon

apt install falkon

morph-browser

apt install morph-browser

New Edge

privacybrowser

apt install privacybrowser

SRWare Iron

WebKit engine

GNOME Web

apt install epiphany-browser

Konqueror

apt install konqueror

Luakit

apt install luakit

Nyxt

Oku

Oku lets you create replicas, virtual drives that you can share online. A read-only ticket can be used to view, but not edit, your replica. Is this ready to be my default browser? No. Oku is still actively in development.

Otter Browser

Qutebrowser

apt install qutebrowser

sugar-browse-activity

apt install sugar-browse-activity

Surf

apt install surf

vimb

KHTML engine

Gecko engine

Firefox

apt install firefox
apt install firefox-esr

GNU IceCat

SeaMonkey

Waterfox

Goanna engine

A fork of older Firefox/Gecko for security and to keep older extensions working.

Basilisk

Conkeror

Pale Moon

May become full featured

gngr

More of a tech demo than a product for end users, but it is a unique independent engine with theoretically good coverage of standards.

Based on The Lobo Project. jStyleParser: for parsing and analysing CSS, okhttp: support for cookies, SPDY.

Ladybird

SerenityOS LibWeb

It first started as the document rendering component LibWeb built into SerenityOS in 2019:

It was then split to create a separate cross-platform browser:

It received $1M funding on 2024-07-01 to help release a public beta by 2026.

LoboEvolution

NetSurf

  • https://en.wikipedia.org/wiki/NetSurf
  • rendering engine: Hubbub (independent and are working to support common web pages in iterations)
  • interface: support for GTK and Linux Framebuffer
  • features: HTML5, simple CSS (LibCSS), JavaScript support was implemented with SpiderMonkey in the past, and recently with DukTape.
  • platform: RISC OS, Linux, Haiku (BeOS), AmigaOS, Windows, Atari
  • implemented in: C

visurf

Web-K

More of a tech demo than a product for end users, but it is a unique independent engine with theoretically good coverage of standards.

Web-K is FlyingSaucer-based pure Java browser and Swing browser component. Nashorn JavaScript runtime, Canvas, es6-shim polyfill. Modified JSoup library provides support of HTML5 at parsing level.

Graphical browsers with compromises

Arachne

  • https://en.wikipedia.org/wiki/Arachne_(web_browser)
  • https://www.glennmcc.org/
  • language: C
  • features: tables, frames, animated GIF, subset of HTML 4.0, CSS 1.0 (color, background-color, font-size, font-style:italic, font-weight:bold, text-decoration:underline), supports an extensive plugin system
  • supported HTML tags: a (href, name), area, b (=em, strong), base (href), basefont (size, color, 3d, outline), bgsound (src, filename), big, blocquote, body (background, bgcolor, text, link, vlink, marginwidth, marginheight, mail, noresize, bgproperties), br (clear), button (uri, usr, url, to, subject, value, size, type, checked, active, name), caption (align, valign, nowrap, colspan, rowspan, bgcolor, background, height, width), center, code (=kbd), dd, div (align), embed (src, filename), font (size, color, 3d, outline), form (method, action), frame (src, name, framespacing, frameborder, border, scrolling, marginwidth, marginheight), frameset (frameborder, border, rows, cols), h1, h2, h3, h4, h5, h6, head, hr (size, noshade, align, width), i (=cite, address), iframe (src, name, framespacing, frameborder, border, scrolling, marginwidth, marginheight), img (src, align, ismap, usemap, border, height, width, alt, name), input (uri, usr, url, to, subject, value, size, type, checked, active, name), li (=dt), link (rel, href), map (name), meta (http-equiv, content), nobr, noframes, noscript, ol (=menu, dl, dir), option (selected, value), p (align), pre, s (=strike, del), script (?), select (size, name, multiple), small, style, sub, sup, table (border, frame, cellspacing, cellpadding, width, align, bgcolor, background), td (align, valign, nowrap, colspan, rowspan, bgcolor, background, height, width), textarea (rows, cols, name, wrap, active), th (align, valign, nowrap, colspan, rowspan, bgcolor, background, height, width), title, tr, tt, u (=ins), ul
  • contains a web browser, email client and modem dialer
  • DOS, Linux & SVGAlib
  • no JavaScript

Dillo

HV3

KolibriOS WebView

Text-only

Terminal

edbrowse

apt install edbrowse

ELinks

  • https://en.wikipedia.org/wiki/ELinks
  • https://github.com/rkd77/elinks
  • text-based
  • interface can be scripted via guile, Lua, Perl, Python, Ruby or SpiderMonkey
  • features: mouse, utf-8, idn, brotli, zstd, text color, tables, frames, inline images using Sixel, some CSS, some JS with a subset of DOM level 1
  • content JavaScript engine can be configured at compilation: SpiderMonkey, QuickJS or MuJS (formerly: NJS)
  • protocol: http, https, gopher, gemini, ftp, sftp, nntp, smb, bittorrent, fsp
  • implemented in: C

Emacs Eww

Links2

  • CSS support to be improved
  • version 2.1pre28 was the last version that could interpret Netscape JavaScript 1.1
  • http://links.twibright.com/download/ChangeLog
  • can run either a text-only version from the terminal or display images inline and antialiased fonts if running on X11 or DirectFB
  • implemented in: C
apt install links2
links2 -g

lynx

apt install lynx

netrik

  • https://salsa.debian.org/debian/netrik
  • interface: text-only
  • text color, bold, italic, forms, table placeholder markers without layout
  • UTF-8 rendering glitches, no CSS, no JS, no TLS, no cookies
  • implemented in: C
  • license: GNU GPL v2 or later
apt install netrik

w3m

  • https://en.wikipedia.org/wiki/W3m
  • https://salsa.debian.org/debian/w3m/-/tree/master
  • interface: text-based
  • features: mouse, cookies, forms, FTP, dl, dt, frameset, table, no CSS, no JS
  • can show images inline with sixel (Bobcat, Contour, ctx terminal, Darktile, DomTerm, Eat, foot, iTerm2, konsole, LaTerminal, MacTerm, mintty, mlterm, Rlogin, sixel-tmux, SwiftTerm, SyncTERM, tmux, toyterm, U++, Visual Studio Code, wezterm, xfce-terminal, xterm, xterm.js, yaft, Yakuake, Zellij, Hyper, Theia), osc5379, iTerm2, kitty (WezTerm, Konsole, wayst)
  • can open images with a viewer for X11, DirectFB and Windows
  • implemented in: C
  • license: MIT
apt install w3m

Experimental

Chawan

  • https://sr.ht/~bptato/chawan/
  • text-only
  • features: CSS with layout (flow, table, flexbox), forms, cookies, mouse
  • protocols: FTP, Gopher, Gemini, Finger
  • QuickJS JavaScript for link navigation and basic DOM manipulation
  • implemented in: Nim
  • license: public domain

Cocktail

With Cocktail, write HTML/CSS applications in Haxe and build them for OpenFL and flash/Air. As Cocktail uses the standard DOM API NME (another Haxe library)

Cog

It provides no user interface and is suitable to be used as a web application container for embedded devices in kiosk mode.

HighWire

  • last update: mostly implemented in 2010, but many recent commits
  • https://github.com/freemint/highwire
  • uses: HTMLtidy
  • features: HTML 3.2, images (gif, jpg, png), tables, hyperlinks, sound, file selector, Gemscript, HTTP, forms
  • partially working: HTML 4.0, frameset, PDF, Unicode characters up to U+FFFD, no CSS, no JavaScript
  • platform: Atari (MiNT, MagiC)
  • implemented in: C
  • license: Zlib

kosmonaut

Kosmonaut is built with Rust using OpenGL bindings via gl-rs, Glutin for window management and OpenGL context creation, Servo's html5ever and cssparser for HTML and CSS parsing, and various other auxiliary libraries. Only a very limited subset of CSS is currently supported, so most web pages will not work.

kristall

Graphical small-internet client for windows, linux, MacOS X and BSDs. Supports gemini, http, https, gopher, finger. text/gemini, text/html (reduced feature set), text/markdown Qt5

mbrowser

mBrowser is a toy browser developed from scratch for learning purpose.

moon

This is a web browser developed from scratch using Rust. To fit with the "make from scratch" spirit, the development of the browser avoids the use of external libraries as much as possible.

naglfar

A toy web browser implemented in Rust from scratch

Odyssey Web Browser

QEmacs html-mode

WYSIWYG HTML/XML/CSS2 mode graphical editing. Also supports lynx like rendering on VT100 terminals. Quite complete CSS2 support (including generated content and counters). Full Bidirectionnal Unicode support. Table support with both 'fixed' and 'auto' layout algorithms.

Satori

  • https://github.com/vercel/satori/
  • https://github.com/facebook/yoga
  • rendering engine: Yoga
  • implemented in: TypeScript
  • platform: browser, Web Worker, Node.js
  • not a web browser, only a rendering engine producing SVG
  • dependencies: opentype.js, css-background-parser, css-box-shadow, css-gradient-parser, css-to-react-native, emoji-regex, escape-html, linebreak, parse-css-color, postcss-value-parser, yoga-wasm-web

Simple-San-Simon-Functional-Web-Browser

support for a small sub-set of HTML, XHTML and XML grammar small sub-set of CSS. We implemented 48 CSS properties that let us modify Box features, apply styles to texts, use list and generate content.

thdwb

This is the hotdog web browser project. It's a web browser with its own layout and rendering engine, parsers, and UI toolkit! It's made from scratch entirely in golang. External dependencies are only OpenGL and GLFW, even go dependencies are kept to a minimum.

WebWhir

WebWhir uses Boost sparingly and SFML for graphics. designed to be very easy to link into any application HTML tokenizer only handles the few of these that were necessary to parse simple and well-formatted strings

wowser

An (un)impressive browser being written from scratch in Rust

Planned

Projects listed here have not produced a browser a user could test yet or are only components that others may build a web browser from in the future.

CSSBox

The input of the rendering engine is the document DOM tree and a set of style sheets referenced from the document. The output is an object-oriented model of the page layout. This model can be directly displayed but mainly, it is suitable for further processing by the layout analysis algorithms as for example the page segmentation or information extraction algorithms. The core CSSBox library may be also used for obtaining a bitmap or vector (SVG) image of the rendered document. Using the SwingBox package, CSSBox may be used as an interactive web browser component in a Java Swing application. CSSBox relies on the jStyleParser open source CSS parser the NekoHTML parser is used for creating the DOM tree. As an alternative, the The Validator.nu HTML Parser has been tested with CSSBox too. The Xerces library may be replaced by any other DOM implementation.

gemiweb0

  • The main scope is producing only documentation, specification and conformance tests. Developers are expected to implement it on their own.
  • A proof of concept web browser, web server and bot user agent will be provided later in multiple languages, both low level and high level.

gosub-browser

GoSub: Gateway to Optimized Searching and Unlimited Browsing A feeble attempt on writing a browser and learning rust. Note: code in the main branch is currently not stable and might not even compile. In the future, this component (html5 parser) will receive through an API a stream of bytes and will output a stream of events. The events will be consumed by the next component and so on, until we can display something in a window/user agent. This could very well be a text-mode browser, but the idea is to have a graphical browser.

Haphaestus

Lexbor

litehtml

litehtml is the lightweight HTML rendering engine with CSS2/CSS3 support. Note that litehtml itself does not draw any text, pictures litehtml just parses HTML/CSS and places the HTML elements into the correct positions (renders HTML). To draw the HTML elements you have to implement the simple callback interface document_container. litehtml uses the gumbo-parser to parse HTML

LURE

LURE does not intend to implement a fully standards compliant web browser. LURE is currently under development and cannot yet produce rendered content. Much of the DOM and associated subsystems are still under heavy design and development

Robinson

Verso

  • https://github.com/versotile-org/verso
  • rendering engine: Servo
  • interface: glutin, widgets rendered with Servo
  • implemented in: Rust
  • platform: Windows, Mac OS, Flatpak, NixOS
  • license: Apache-2.0, MIT

WeasyPrint

visual rendering engine for HTML and CSS that can export to PDF. It is based on various libraries but not on a full rendering engine like WebKit or Gecko. The CSS layout engine is written in Python, designed for pagination, and meant to be easy to hack on. flit_core, pydyf, cffi, html5lib, tinycss2, cssselect2, Pyphen, Pillow, fonttools[woff]

Unmaintained

Abaco

https://en.wikipedia.org/wiki/Abaco_(web_browser)

  • OS: Plan 9 and Linux
  • HTML 4.01, frames, tables

Amaya

Arena

  • last update: 1998
  • https://en.wikipedia.org/wiki/Arena_(web_browser)
  • features: HTML 3.0, tables, math, links, images (jpg, png, gif, xpm, xbm), forms, CSS1, Java applets, no JavaScript
  • protocol: HTTP 1.1, FTP, NNTP, gopher, WAIS, mailto
  • parser and networking: libwww
  • implemented in: C

AWeb

BrowseX

Charon

contiki-os webbrowser

  • last update: repository in 2018, browser mostly written in 2003
  • https://github.com/contiki-os/contiki/blob/master/apps/webbrowser/
  • interface: text-only
  • features: a href links, img (only shows alt instead of the image), no layout (breaks flow on: p, h1, h2, h3, h4, newline on: br, tr, div), li, comments, form (action, input, submit), skips inline content of style, script and select
  • protocols: HTTP 1.0 (with host header added, supporting 301/302 redirects)
  • User-Agent: Contiki/3.x (; http://www.contiki-os.org/)
  • no CSS, no JS
  • implemented in C, up to 256 bytes of buffer lookahead
  • platform: contiki-os
  • license: BSD3

Emacs w3

Erwise

kweb

Line Mode Browser

Midori

apt install midori

Mycel

Still experimental and a lot of features are missing. Rudimentary HTML5 and CSS support, large parts like float/flex layout are just stub implementations. Since the implementation is very limited anyway, DOM changes are only computed initially and during click events. A handful of jQuery UI widgets work

NCSA-mosaic

Nexus WorldWideWeb

Odysseus

retawq

  • last update: 2006
  • https://retawq.sourceforge.net/
  • text-only
  • features: mouse, incremental rendering, forms partially, tables partially, frames partially
  • no CSS, no JS
  • protocols: http, https, ftp, ftps, nntp, finger, file, local cgi

tkWWW

Uzbl

https://en.wikipedia.org/wiki/Uzbl

  • WebkitGtk+
  • libsoup

Voyager

Related

HTML rich text support by desktop widget toolkits

FOSS JavaScript interpreters, runtimes

./javascript-interpreter-runtimes.md

References