BuildABrowser

Browser Source (GitHub) Webpage Source (GitHub) Discord

BuildABrowser

BuildABrowser is a project aiming to build a browser and its rendering engine in Java, and then (eventually) document it such that others can rebuild it for themselves.

Jump to Screenshots | View on YouTube
A screenshot showing BuildABrowser pass Acid2
Acid2, as rendered in BuildABrowser Browser (click to enlarge).
A screenshot showing BuildABrowser render GitHub (Logged In)
GitHub, as rendered in BuildABrowser Browser (click to enlarge).
A demo video demonstrating the browser running live.

Download Release v0.1.1:

Linux (Tested on Arch, btw) Windows (Tested on Windows 11) Android Desktop (Experimental)

The Linux/Window builds require a JVM (Java 24 or higher).

The browser uses the Skija painter by default. To use Java2D, pass the -gbe java2d flag.

Embedding Guides:

You can embed the BuildABrowser renderer in your Swing application or non-mobile Android Jetpack Compose application!

Take a look at some steps:

This section is a stub!

This section is a stub. It is not part of the v0.1.1 release.

All Steps

See a demo!

Each of the screenshots below was rendered by BuildABrowser Browser.

Acid1 Test

(click to enlarge)
A screenshot of the browser rendering the Acid1 test page.

The radio box hitbox has a bug, making it hard to click.

Acid2 Test

(click to enlarge)
A screenshot of the browser rendering the Acid2 test page.

Acid3 Test

(click to enlarge)
A screenshot of the browser rendering the Acid3 test page.

JS is not supported at this time.

BuildABrowser Homepage

(click to enlarge)
A screenshot of the browser rendering its homepage.

Browserling

(click to enlarge)
A screenshot of the browser rendering the Browserling homepage.

Not that it's useful in any meaningful way without JS, but I thought it looked cool.

DeviantArt Gallery

(click to enlarge)
A screenshot of the browser rendering DeviantArt's gallery.

There are only two columns because DA uses JS to reflow the layout which the browser does not support. In theory, you can also copy the 'td' cookie from another browser, which overrides layout.

GitHub PR Diff

(click to enlarge)
A screenshot of the browser rendering a GitHub diff view.

GitHub has recently been making me login... which is not ideal considering the browser is not hardened for security...

GitHub Homepage

(click to enlarge)
A screenshot of the browser rendering the GitHub homepage.

Hacker News Thread

(click to enlarge)
A screenshot of the browser rendering a Hacker News discussion thread.

HaikuOS

(click to enlarge)
A screenshot of the browser rendering the Haiku OS homepage.

HTML Specification

(click to enlarge)
A screenshot of the browser rendering the single-page HTML specification.

O&H Danish Bakery

(click to enlarge)
A screenshot of the browser rendering the O&H Danish Bakery storefront.

Old Reddit

(click to enlarge)
A screenshot of the browser rendering an Old Reddit thread.

Unfortunately, Old Reddit now requires login, and the login page is completely blank on the browser. This is a screenshot of what it looks like if you do manage to get logged in. (Especially annoying since the browser is not hardened for security...)

Python Homepage

(click to enlarge)
A screenshot of the browser rendering the Python homepage.

SerenityOS + Debugger

(click to enlarge)
A screenshot of the browser rendering Serenity's homepage.

This demo shows off the browser's debugger utility.

Vulkan Specification (vkspec)

(click to enlarge)
A screenshot of the browser rendering the Vulkan API specification (vkspec).

WhatIsMyBrowser

(click to enlarge)
A screenshot of the browser rendering the WhatIsMyBrowser webpage.

The red box is not part of the website.

Wikipedia

(click to enlarge)
A screenshot of the browser rendering the Wikipedia homepage.