Web Bluetooth in iOS Safari
Install the free beacio Safari extension. Then every Bluetooth web app just works in Safari on your iPhone.
Continue on your iPhone
or open beacio.com in Safari
The beacio scanner
Scan results
You're set.
Tap Scan to find a device — or go back to your Bluetooth website and tap its Connect button.
SETUP
Three steps, about a minute.
You do this once. After that, every Bluetooth website you open in Safari just works.
1 · Install beacio
It’s free on the App Store. No account, no sign-up, nothing to pay for later.
2 · Turn it on in Safari
Open any website and tap the Page Menu button at the left end of the address bar → Manage Extensions → switch beacio on → Done. Then tap beacio and choose Allow on Every Website, so it works everywhere and not just on one site. (beacio is also listed under Settings > Apps > Safari > Extensions.)
3 · Go back and tap Connect
Open your device’s website and tap its own Connect button. Safari asks once to allow Bluetooth — tap Allow — then pick your device from the list iOS shows you. That list comes from iOS, not from the website.
IS THIS YOU?
Will it work with my device?
Blood-pressure cuffs, thermometers, scales, glucose monitors, heart-rate straps, smart locks, trackers, ESP32 and micro:bit boards — beacio doesn’t care what the device is. It cares whether the website already speaks Bluetooth. Sites built for Android Chrome or a laptop generally work unchanged, because it is the same standard API.
“Your browser does not support Bluetooth”
The site put up that banner the moment you opened it on your iPhone. It isn’t your phone and it isn’t the site — Safari simply had no Bluetooth API. beacio adds it.
It works on your friend’s Android
Same website, same device, different phone. That gap is exactly what beacio closes.
The maker’s page says “use Chrome”
Chrome on iPhone is Safari underneath, so switching never helped. With beacio, Safari is the browser that works.
IF IT ISN’T WORKING
Installed it and nothing happened?
It’s almost always one of these four, and each takes about thirty seconds to check.
The switch isn’t on yet
Installing beacio from the App Store does not switch it on. On any website, tap the Page Menu button at the left end of the address bar → Manage Extensions → switch beacio on → Done.
It’s on, but not allowed on this site
Switching beacio on and letting it work on a site are two separate permissions. In the same place you switched it on, choose Allow on Every Website.
You’re not actually in Safari
Links opened inside Instagram, Facebook, X or LinkedIn run in a mini-browser that can’t load extensions. Tap the … menu, choose Open in Safari, and try again.
The site still says your browser isn’t supported
beacio reports a genuine Safari user agent, and the standard Bluetooth API is there. A few sites check for Chrome by name instead of checking for the API. If that’s what you’re seeing, it’s the site that needs a one-line fix — nothing on your phone can change it.
ANSWERS
Questions people ask
Does Web Bluetooth work in Safari?
Yes — with the beacio Safari extension installed, navigator.bluetooth works in the real Safari you already use on iPhone: the same URL bar, bookmarks and history, not a separate browser. Pages run under a genuine Safari user agent, so sites that check for an unsupported browser still work. Install beacio from the App Store, turn it on in Safari, and your existing Web Bluetooth code works unchanged.
Is beacio a separate browser app?
No. beacio is a Safari extension, not a separate browser. Your Bluetooth website opens in the real Safari you already use, keeping your bookmarks, history, tabs and autofill. Turn it off in the same place you turned it on, or delete it like any other app, and Safari goes back to exactly how it was.
What does it cost?
Nothing. beacio is free on the App Store, with no account and no sign-up, and it stays free on unlimited websites. Paid plans exist for website operators who want extra capabilities for their own product — never for the person using the site.
What do I need?
An iPhone running iOS 18.0 or later, and Safari. Chrome, Firefox and Edge on iPhone are separate apps and cannot load Safari extensions. Most extensions, beacio included, are switched off in Private Browsing, and the website you are using must be secure (https).
How do I use Bluetooth in a web app on iPhone?
Install the beacio Safari extension from the App Store, turn it on in Safari, then open the Bluetooth website and tap its own Connect button. The website needs no code changes: beacio installs the standard navigator.bluetooth API on every secure page before the page's own scripts run, so the same code that works in Chrome works in Safari on iPhone. The beacio SDK and the CDN script are optional enhancements, not a required step.
Does beacio see my Bluetooth data?
Your device's data goes between your device and the website you opened. Permission checks, the W3C GATT blocklist and origin validation are enforced by beacio on your iPhone, out of reach of the websites you visit, and there is no account to sign in to.
FOR DEVELOPERS
Your site needs no code changes.
beacio installs the standard
navigator.bluetooth API on every
secure page before the page’s own scripts run, so the code you
already ship to Android Chrome runs in iPhone Safari unmodified. The
SDK and the CDN script are optional enhancements, not a required
step.
How it compares with Chrome
The same Web Bluetooth calls, side by side with Chrome on Android, macOS and Windows.
| Feature | Chrome (Android, macOS, Windows) | beacio in iPhone Safari |
|---|---|---|
| Standard Web Bluetooth | ||
requestDevice() with filters and
exclusionFilters
|
Yes | Yes |
GATT connection and discovery:
gatt.connect(), disconnect(),
getPrimaryService,
getCharacteristic, getDescriptor
|
Yes | Yes |
Characteristic readValue(),
writeValueWithResponse(),
writeValueWithoutResponse(); descriptor
readValue() and writeValue()
|
Yes | Yes |
startNotifications() and
characteristicvaluechanged
|
Yes | Yes |
| Advertisements and scanning | ||
watchAdvertisements() and
advertisementreceived
|
Behind a flag | Yes |
requestLEScan() |
Behind
#enable-experimental-web-platform-features
|
Yes, on navigator.bluetooth |
| Permissions and lifecycle | ||
getDevices() |
Behind a flag | Yes |
forget() |
Behind a flag | Yes |
getAvailability() |
Yes, from Chrome 78 | Yes |
onavailabilitychanged |
Not implemented | Yes |
navigator.permissions.query() for
'bluetooth'
|
Not implemented | Yes |
| beacio additions | ||
| BLE connections and alerts while Safari is in the background | Disconnects once Chrome is closed | Pro |
| Peripheral mode (the iPhone advertises) | No | Pro |
| Auto-reconnect supervision | With the same optional SDK | With the optional SDK or CDN script |