For some of the new APIs we introduce in Chromium, you need to set a browser flag for experimentation.
This article explains how to do this in the various Chromium derivatives like Google Chrome, Microsoft Edge, and others.


![Thomas Steiner](https://web.dev/images/authors/thomassteiner.jpg) Thomas Steiner [GitHub](https://github.com/tomayac) [LinkedIn](https://www.linkedin.com/in/thomassteinerlinkedin) [Mastodon](https://toot.cafe/@tomayac) [Bluesky](https://bsky.app/profile/tomayac.com) [Homepage](https://blog.tomayac.com/)

<br />

[Chromium](https://www.chromium.org/) is an open-source browser project that aims to build a safer,
faster, and more stable way for all users to experience the web. A lot of web browsers are built on
Chromium, including the popular browsers [Google Chrome](https://www.google.com/chrome/) by
[Google](https://www.google.com/), [Microsoft Edge](https://www.microsoft.com/en-us/edge) by
[Microsoft](https://www.microsoft.com/), [Opera Web Browser](https://www.opera.com/) by
[Opera](https://www.opera.com/about), and
[many others](https://developer.chrome.com/%3Chttps://en.wikipedia.org/wiki/Chromium_(web_browser)#Browsers_based_on_Chromium%3E).

## The `chrome://` scheme

Google Chrome has since the beginning supported a special scheme called `chrome://` for accessing
browser-internal settings or features. You can see the full list by putting
`chrome://chrome-urls` into the URL bar. The special URL of interest here is `chrome://flags`.

## Setting browser flags

For some [new APIs](https://web.dev/articles/tags/capabilities) in Chromium, you need to set a browser
flag for experimentation. You guessed it, `chrome://flags` is where this happens. The most popular flag we
ask you to set is `chrome://flags/#enable-experimental-web-platform-features`, which, as the name
suggests, enables experimental web platform features.

> [!WARNING]
> **Warning:** As the name suggests, experimental web platform features are *experimental*. We do not recommend you set flags on your daily production browser. Instead, we prefer you to use a development browser version like the Beta, Dev, or Canary channel for your development needs where you can set flags as required, and the Stable channel for everything else. Also be sure to only set flags based on instructions from sources you trust.

![Toggling the 'experimental web platform features' flag.](https://developer.chrome.com/static/blog/browser-flags/image/toggling-experimental-w-727a1e1a7e3f4.png)

> [!NOTE]
> **Note:** Browser flags are distinct from [origin trials](https://developer.chrome.com/docs/web-platform/origin-trials.md.txt).
>
> Origin trials are set by website owners and opt a user's browser into supporting a given feature. Only
> features deemed safe for testing with real users are available for origin trials.
>
> Browser flags are set by you and opt in your local browser to a given feature. Not all features that
> are available behind a flag are ripe for production---sometimes quite the opposite.

## Scheme rewrites

Something interesting happens, though, if you enter a `chrome://` URL into a browser that is not
Chrome. For example, if you enter `chrome://flags/#enable-experimental-web-platform-features` into
Microsoft Edge, you will notice that it gets rewritten as
`edge://flags/#enable-experimental-web-platform-features`. All vendors have created this rewrite
mechanism, which makes sense, as Edge is not Chrome, although it is based on Chromium.

## Inclusive documentation

We strive for making our documentation inclusive of different browsers, so, for example, telling a
[Brave](https://brave.com/) user to navigate to `chrome://flags` to toggle a given flag---while it
works thanks to the rewrite mechanism---may not be the most welcoming experience. At the same time,
listing all possible vendor schemes like `edge://`, `chrome://`, `brave://`, etc. is not a great
solution either.

## One scheme to rule them all

Luckily there is a hidden champion scheme that fits all our needs: `about://`. In Chrome, `about://`
URLs get rewritten to `chrome://`, in Edge to `edge://`, and so on for all vendors. We are in this
web thing together, and this is `about://` all of us! Whenever you see instructions that include the
`about://` scheme, your Chromium browser of choice will do the right thing.

> [!NOTE]
> **Note:** A notable exception to the rewriting mechanism is `about:blank` (without the `//`), which displays a blank, empty document.