servo is a free, open source browsers & extensions project written in Rust and released under MPL-2.0. It has 38,001 GitHub stars, 3,798 forks and 3,209 open issues, and was last pushed 3 hours ago. On this registry it ranks #6 of 65 tracked projects in Browsers & Extensions, with 5 head-to-head comparisons available. It gained 22 stars over the last 3 tracked days.

What is servo?

What it is

Servo is a prototype web browser engine written in the Rust programming language. It is developed on 64-bit macOS, 64-bit Linux, 64-bit Windows, 64-bit OpenHarmony, and Android, and it lives in the Rust ecosystem as an open-source project licensed under MPL-2.0. The repository carries the topics browser, rust, servo, web, webbrowser, webengine, and webplatform, and the project describes itself as aiming to empower developers with a lightweight, high-performance alternative for embedding web technologies in applications. Documentation lives in the Servo Book, with news and guides at servo.org.

The concrete problem it solves is embedding. Applications that need to render web content, whether a browser shell, a runtime, or a platform-specific product, otherwise depend on an existing engine that may be heavy, hard to port, or tied to a single vendor. Servo offers an engine written in Rust, one that can be built and targeted across desktop, mobile, and OpenHarmony platforms rather than a single operating system. It is a prototype rather than a finished product, and the project coordinates its development in the open through GitHub Issues, the Servo Zulip, and video calls advertised in the servo/project repository.

Key capabilities

  • A parallel browser engine implemented in Rust, with the source available under the MPL-2.0 license.
  • Platform coverage spanning 64-bit macOS, 64-bit Linux, 64-bit Windows, 64-bit OpenHarmony, and Android.
  • A shell binary, servoshell, produced by the build, which serves as the runnable engine host.
  • A uniform build entry point, the ./mach tool, used for both bootstrap and build across supported platforms.
  • Bootstrap automation that installs platform dependencies through ./mach bootstrap on macOS, Linux, Windows, Android, and OpenHarmony.
  • Android build support with explicit SDK and NDK configuration, including a pinned NDK version and system images.
  • OpenHarmony build support targeting both HarmonyOS NEXT and pure OpenHarmony, selected through environment variables.

Who uses it and how

  • Developers building or embedding a web engine into their own applications, using servoshell as the reference host.
  • Contributors to the engine itself, who follow the Servo Book for getting the code and building Servo, then work through GitHub Issues.
  • Platform teams targeting Android, who set `ANDRO
project readme (upstream, from github) — read inline

The Servo Parallel Browser Engine Project

Servo is a prototype web browser engine written in the Rust language. It is currently developed on 64-bit macOS, 64-bit Linux, 64-bit Windows, 64-bit OpenHarmony, and Android.

Servo welcomes contribution from everyone. Check out:

Coordination of Servo development happens:

Getting started

For more detailed build instructions, see the Servo Book under Getting the Code and Building Servo.

macOS

  • Download and install Xcode and brew.
  • Install uv: curl -LsSf https://astral.sh/uv/install.sh | sh
  • Install rustup: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  • Restart your shell to make sure cargo is available
  • Install the other dependencies: ./mach bootstrap
  • Build servoshell: ./mach build

Linux

  • Install curl:
    • Arch: sudo pacman -S --needed curl
    • Debian, Ubuntu: sudo apt install curl
    • Fedora: sudo dnf install curl
    • Gentoo: sudo emerge net-misc/curl
  • Install uv: curl -LsSf https://astral.sh/uv/install.sh | sh
  • Install rustup: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  • Restart your shell to make sure cargo is available
  • Install the other dependencies: ./mach bootstrap
  • Build servoshell: ./mach build

Windows

  • Download uv, and rustup
    • Be sure to select Quick install via the Visual Studio Community installer
  • Ensure that winget is available. It should be preinstalled on Windows 10 1809+ and Windows 11, otherwise can be manually installed.
  • In the Visual Studio Installer, ensure the following components are installed:
    • Windows 10/11 SDK (anything >= 10.0.19041.0) (Microsoft.VisualStudio.Component.Windows{10, 11}SDK.{>=19041})
    • MSVC v143 - VS 2022 C++ x64/x86 build tools (Latest) (Microsoft.VisualStudio.Component.VC.Tools.x86.x64)
    • C++ ATL for latest v143 build tools (x86 & x64) (Microsoft.VisualStudio.Component.VC.ATL)
  • Restart your shell to make sure cargo is available
  • Install the other dependencies: .\mach bootstrap
  • Build servoshell: .\mach build

Android

  • Ensure that the following environment variables are set:
    • ANDROID_SDK_ROOT
    • ANDROID_NDK_ROOT: $ANDROID_SDK_ROOT/ndk/28.2.13676358/ ANDROID_SDK_ROOT can be any directory (such as ~/android-sdk). All of the Android build dependencies will be installed there.
  • Install the latest version of the Android command-line tools to $ANDROID_SDK_ROOT/cmdline-tools/latest.
  • Run the following command to install the necessary components:
    sudo $ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager --install \
     "build-tools;36.0.0" \
     "emulator" \
     "ndk;28.2.13676358" \
     "platform-tools" \
     "platforms;android-37" \
     "system-images;android-37;google_apis;x86_64"
    
  • Follow the instructions above for the platform you are building on

OpenHarmony

  • Follow the instructions above for the platform you are building on to prepare the environment.
  • Depending on the target distribution (e.g. HarmonyOS NEXT vs pure OpenHarmony) the build configuration will differ slightly.
  • Ensure that the following environment variables are set
    • DEVECO_SDK_HOME (Required when targeting HarmonyOS NEXT)
    • OHOS_BASE_SDK_HOME (Required when targeting OpenHarmony)
    • OHOS_SDK_NATIVE (e.g. ${DEVECO_SDK_HOME}/default/openharmony/native or ${OHOS_BASE_SDK_HOME}/${API_VERSION}/native)
    • SERVO_OHOS_SIGNING_CONFIG: Path to json file containing a valid signing configuration for the demo app.
  • Review the detailed instructions at [Building for OpenHarmony].
  • The target distribution can be modified by passing --flavor= to mach .

Frequently asked questions

Is servo free to use?

servo is open source under the MPL-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does servo do?

Servo aims to empower developers with a lightweight, high-performance alternative for embedding web technologies in applications.

What is servo written in?

servo is primarily written in Rust. Its source is publicly available at https://github.com/servo/servo, and it has 38,001 GitHub stars.