Update banner widget

One script tag. Visitors on outdated browsers see a small dismissible notice with the official update link. Everyone else sees nothing at all.

Add it to your site

Paste this anywhere in your page — head or body, order does not matter. The script loads asynchronously and never blocks rendering:

<script src="https://mybrowser.org/widget.js" async></script>

Changing an option above rewrites the snippet — attributes are only added when they differ from the defaults. Tip: data-threshold="2" or "3" makes the banner extra quiet, so nobody is flagged in the middle of a normal release rollout. (One exception: end-of-life browsers such as Internet Explorer are always flagged, whatever the threshold.)

Live preview

See exactly what your visitors would get. The preview uses the widget’s built-in test mode (data-test="1") to force the banner even if your browser is current.

The banner appears fixed at the top or bottom of this page, using the position and language chosen above.

All attributes

AttributeValuesDefaultWhat it does
data-position top | bottom top Where the banner is fixed on the screen. If your site has a fixed or sticky top navigation bar, choose bottom so the banner does not cover it.
data-lang en | bg en Language of the banner text. English and Bulgarian ship built in.
data-threshold 110 1 How many major versions behind the latest stable release a browser must be before the banner shows. 23 is a good low-noise choice. Values above 10 are treated as 10. Exception: end-of-life browsers with no current release to compare against (Internet Explorer) are always flagged, regardless of this setting.
data-dismiss-days 0365 7 After a visitor dismisses the banner (or clicks Update), it stays hidden for this many days. Values above 365 are treated as 365; non-numeric values fall back to 7. 0 is mainly for testing: the banner may reappear on the very next page view.
data-test 1 off Forces the banner to show regardless of the visitor’s browser — for previewing your setup. Opening any page with #mbw-test in the URL does the same, so you can verify a live site without editing it.
data-api URL https://mybrowser.org/api Detection endpoint. Override it to test locally or run the whole thing self-hosted.

How it decides

Your visitor’s browser makes one small request to our API. The server identifies the browser from the request’s own User-Agent and low-entropy Client Hints headers — the same engine behind mybrowser.org — and compares the major version against the current stable releases (last refreshed 2026-08-11, updated weekly). The widget itself contains zero version logic, so it never goes stale in your visitors’ caches.

It is built to fail quiet, never loud: bots, unknown browsers, unrecognized versions and Firefox ESR releases all get no banner. A false “you are outdated” on your site is the one thing this widget refuses to do.

Privacy

Compatibility & security notes

The script is plain ES5 with no dependencies and runs on IE10+ and Safari 6+. One practical limit applies: devices that no longer trust Let's Encrypt's certificate root (Android 7.0 and below) cannot reach our HTTPS API, so on those the widget is a guaranteed silent no-op — as it is on any other failure. A script failure can never break your page — the widget simply does nothing. Total size is under 3 KB compressed.

Running a Content-Security-Policy? Allow script-src https://mybrowser.org and connect-src https://mybrowser.org.

Two layout notes: the banner uses z-index 2147483000, deliberately below the maximum — your own overlays with a higher z-index at the same screen edge (cookie or consent bars at 2147483647 are common) will cover it, so keep such overlays at or below 2147483000 or place the banner at the other edge. And if your page applies transform, filter or perspective to <body>, the widget attaches the banner to <html> instead so it stays fixed to the viewport — avoid such styles on <html> itself, where no fallback exists.

The banner is accessible: a labelled region, real keyboard-operable buttons, WCAG AA contrast, no focus stealing and no auto-hide.

← What browser am I using?