Melonade blog
Idea Exploration: Making a web browser in 3D
Published on the 27th June 2025.
So, the web is a very spatial space. We use spatial analogies all the time. However, I do not know of any tool that tried to render the WEB content in a 3D space. Traditional web browsers are 2D. and it’s so difficult to make a browser.
What is a browser in the first place?
According to wikipedia:
A web browser, often shortened to browser, is an application for accessing websites. When a user requests a web page from a particular website, the browser retrieves its files from a web server and then displays the page on the user’s screen. Browsers can also display content stored locally on the user’s device.
Among the current web browsers, there are only a few layout engines. All of these layout engines are 2D. When making a web browser, AFAIU, there’s four layers:
- Communication layer, responsible for querying and retrieving the resources.
- Layout engine, responsible for converting the resources into a visual representation.
- Javascript engine
- User-side interface, responsible for presenting preferences and configuration of the other two.
Let’s now prioritize them in order of implementation for implementing a 3D layout engine:
- Is mandatory for a MVP, but can be mocked until late. AFAIK a basic communication layer should be quite fast to setup in most context, HHTTP queries on URLs is common and should have helper libraries in most high level languages.
- It’s the meat and bone of the project. Design and implementation should start from here :)
- Can do without even for a MVP. Native HTML/CSS interactivity provided by the layout engine is enough for a MVP.
- Will probably be mandatory for debugging and manual testing.
2 > 4 > 1 > 3
What should a layout engine support exactly?
Naive idea before researching: HTML content, User controls on the display (scrolling, hovering, …), CSS rules, some native interactions, in this order of priority.
Looking at a benchmark for browser like https://html5test.com/ , it gives a better idea of what is expected. This is probably a bit too complex for us right now.
I guess user agent is a wider definition than web browser, and it fits quite well my idea, without creating too much expectations.
https://github.com/cbracco/html5-test-page looks like much more reasonable expectations