Home Projects Blog



This project allows you to use an iOS device to browse secure Web Bluetooth enabled webpages. It was built for and has been primarily tested with puck.js pucks.

If you are having difficulties, first check out the FAQs.

If you have questions, comments or features you'd like to see, please email support@greenparksoftware.co.uk.

Features added in 1.4.0:

  • Support for device.gatt.getPrimaryServices()

Fixes in 1.4.0:

  • Bug where we used the underlying ArrayBuffer instead of the wrapping TypedArray, potentially causing a crash on the bluetooth device (e.g. Nordic based devices like the Puck.js).

See older...

Features added in 1.3.1:

  • Geolocation support!

Features added in 1.3.0:

  • Dark mode!

Deprecations in 1.3:

  • Now only works with iOS 13.2 and above.

Fixes in 1.3.0:

  • Minor API omissions in issues 27, 22, and 16 fixed.

Fixes in 1.2.3:

  • Do not crash on startup on iOS 13 devices
  • Large internal refactor to allow people to reuse the webble core in other projects

Fixes in 1.2.2:

  • now calls handleEvent if the callback object has that function
  • accepts DataView like objects as well as ArrayBuffer objects in characteristic.writeValue()
  • bluetooth events now have srcElement configured
  • console.dir() doesn't crash
  • stopNotifications() now actually works
  • startNotifications() and stopNotifications() returns a Promise[Characteristic] like they're supposed to
  • Fixes this characteristic notification issue

And probably some other things beside...

New features in 1.2.1

  • Full screen support
  • Loading status bar
  • Hiding of the home bar indicator in full screen
  • Better handling of navigation errors

New features in 1.2.0

  • Showable / hideable console, with copy-and-pastable logs.

New features in 1.1.6

  • Fix name and namePrefix filters when requesting devices.
  • Support BLE characteristics both when they support sending responses to write requests and when they don't.

New features in 1.1.5

  • Support for links of the form webble://www.greenparksoftware.co.uk/projects/webble/1.1.5/puckdemo which can be clicked on in a web browser on iOS to open the link in WebBLE
  • Fix an issue receiving notifications from characteristics.
  • Fix bugs relating to abbreviated service and characteristics.
  • Various other small bug fixes, particularly relating to navigation.

New features in 1.1.4

  • Fixed a bug where requesting a device with specified services but not a name or a namePrefix was not working.
  • Couple of other small fixes.

New features in 1.1.3

  • The URLs in the bookmarks page are now shorter to make them more readable.
  • I've fixed a bug which prevented a characteristic from being used on more than one connected device.

New features in 1.1.2

  • The ID of devices is now displayed after their name in the picker view, to help differentiate between them.
  • The acceptAllDevices Boolean flag is now properly handled (and all devices are shown).
  • The "name" filter is now supported (as well as "namePrefix").

New features in 1.1.1

  • The last page you navigated to is remembered so if the app is closed and re-opened it will return there rather than coming to this page.
  • A couple of handy bookmarks have been added (you can delete them if you don't need them of course).
  • Various bug-fixes.

New features in 1.1.0

  • You can now add bookmarks for the pages you visit, and rearrange and delete them from the bookmarks menu.
Privacy Info

Your privacy while using WebBLE


Frequently asked support questions

App Store

WebBLE is available from the App Store

Puck.js Demo Page

New Puck owners start here.

If you have a Puck.js, you can use this demonstration page from within the Web Bluetooth app, or a mainstream browser that supports Web Bluetooth, such as Chrome, to try it out.

Puck.js Home

Find out more about puck.js.

WebBLE thread in Espruino forums

Has some useful tips and will probably get comments for any bugs people find and workarounds for them.

Puck Device Tests

This page runs some tests of the web bluetooth API implementation in your browser (you will need a couple of pucks handy). WebBLE should pass them all!

Github repo

A large proportion of the code for WebBLE is open-source and available on github.

Full Web Bluetooth spec

Only a subset of this is implemented at this time in WebBLE.

Copyright 2018 David Park