ZeroX-DG/moon

🌎 🌔 A hobby web browser developed from scratch

Rust

434

331 commits

updated May 31, 2026

See the code

README

Moon

A hobby web browser developed from scratch

MIT License By Vietnamese

What is this?

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.

Wanna try it out?

First, make sure you have all the right dependencies installed:

sudo apt install build-essential cmake pkg-config libssl-dev mold

Then it's just as simple as:

  1. Clone the repository.
  2. Run cargo run and wait for the code to compile & execute.

Check out the Getting Started Guide for more advanced stuff.

Screenshots

Rendering comparison between Moon & Firefox

Features

  • HTML: Spec-compliant HTML tokenizer, parser & DOM tree builder.
  • CSS: Spec-compliant CSS tokenizer, parser & CSSOM tree builder.
  • Style processing: Style cascading, style value computation, selector matching & render tree construction.
  • Layout: Flow layout (Block & Inline).
  • Rendering: GPU rendering & text rendering.
  • Networking: Spec-compliant URL parser.
  • User Interface: GTK-based browser UI.

Blog posts

I write about what I learn from this journey on my blog (order by latest):

  • Browser from Scratch: Layout - Read more
  • Browser from Scratch: CSS parsing & processing - Read more
  • Browser from Scratch: HTML parsing - Read more
  • Browser from Scratch: DOM API - Read more
  • Browser from Scratch: Introduction - Read more

Author

License

browser
browser-engine
dom
hobby-browser
rust

ZeroX-DG/moon

🌎 🌔 A hobby web browser developed from scratch

Rust

434

331 commits

updated May 31, 2026

See the code

README

Moon

A hobby web browser developed from scratch

MIT License By Vietnamese

What is this?

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.

Wanna try it out?

First, make sure you have all the right dependencies installed:

sudo apt install build-essential cmake pkg-config libssl-dev mold

Then it's just as simple as:

  1. Clone the repository.
  2. Run cargo run and wait for the code to compile & execute.

Check out the Getting Started Guide for more advanced stuff.

Screenshots

Rendering comparison between Moon & Firefox

Features

  • HTML: Spec-compliant HTML tokenizer, parser & DOM tree builder.
  • CSS: Spec-compliant CSS tokenizer, parser & CSSOM tree builder.
  • Style processing: Style cascading, style value computation, selector matching & render tree construction.
  • Layout: Flow layout (Block & Inline).
  • Rendering: GPU rendering & text rendering.
  • Networking: Spec-compliant URL parser.
  • User Interface: GTK-based browser UI.

Blog posts

I write about what I learn from this journey on my blog (order by latest):

  • Browser from Scratch: Layout - Read more
  • Browser from Scratch: CSS parsing & processing - Read more
  • Browser from Scratch: HTML parsing - Read more
  • Browser from Scratch: DOM API - Read more
  • Browser from Scratch: Introduction - Read more

Author

License

browser
browser-engine
dom
hobby-browser
rust

Significant stargazers

Nico Burns

445 followers · starred Feb 2023

Jamie Mansfield

118 followers · starred Feb 2022

Masanori Ogino

650 followers · starred Dec 2022

Julia

176 followers · starred Feb 2022