Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/nordicsemi/bluetooth-numbers-database/llms.txt

Use this file to discover all available pages before exploring further.

GATT Services are the top-level organizational unit in Bluetooth Low Energy’s attribute protocol. A service groups a set of related characteristics — for example, the Heart Rate Service bundles the Heart Rate Measurement characteristic and the Body Sensor Location characteristic together under a single UUID. When a BLE central device connects and performs service discovery, it reads the list of service UUIDs advertised by the peripheral to understand what capabilities the device exposes. The Bluetooth Numbers Database consolidates all known service UUIDs — both the 16-bit UUIDs assigned by Bluetooth SIG and the 128-bit proprietary UUIDs contributed by vendors such as Nordic Semiconductor, Apple, Google, Adafruit, and others — into a single JSON array that can be queried at runtime without network access.

Data Structure

Each entry in service_uuids.json conforms to the following schema:
uuid
string
required
The UUID that uniquely identifies the service. This is either a 4-character hexadecimal string for 16-bit SIG-assigned UUIDs (e.g., "1800") or a 36-character hyphenated string for 128-bit proprietary UUIDs (e.g., "EF680100-9B35-4933-9B10-52FFA9740042"). The UUID pattern enforces uppercase hex only.
name
string
required
Human-readable service name as defined in the GATT Specification Supplement or the originating vendor’s documentation (e.g., "Generic Access", "Nordic UART Service").
identifier
string
required
Uniform Type Identifier (UTI) in reverse-dot notation that provides a machine-readable, globally scoped name for the service. SIG-defined services use the org.bluetooth.service.* prefix; vendor-defined services use the vendor’s reverse domain (e.g., com.nordicsemi.service.uart, com.apple.service.media).
source
string
required
Identifies the organization that defined the service UUID. Common values include:
  • gss — GATT Specification Supplement (Bluetooth SIG-defined)
  • nordic — Nordic Semiconductor
  • apple — Apple Inc.
  • google — Google LLC
  • adafruit — Adafruit Industries
  • microbit — Micro:bit Educational Foundation
  • philips-hue — Signify Netherlands B.V.
  • lego — LEGO Group
  • ti — Texas Instruments
  • apache — Apache MyNewt / MCUmgr (SMP Service)
  • helium — Helium
  • memfault — Memfault
  • blecon — Blecon

Example Entries

[
  {
    "name": "Generic Access",
    "identifier": "org.bluetooth.service.generic_access",
    "uuid": "1800",
    "source": "gss"
  },
  {
    "name": "Battery Service",
    "identifier": "org.bluetooth.service.battery_service",
    "uuid": "180F",
    "source": "gss"
  },
  {
    "name": "Heart Rate",
    "identifier": "org.bluetooth.service.heart_rate",
    "uuid": "180D",
    "source": "gss"
  },
  {
    "name": "Thingy Configuration Service",
    "identifier": "com.nordicsemi.service.thingy.configuration",
    "uuid": "EF680100-9B35-4933-9B10-52FFA9740042",
    "source": "nordic"
  }
]

UUID Formats

Service UUIDs come in two formats, and both are present in this database: 16-bit UUIDs (4 hex characters, e.g., "1800") are assigned by Bluetooth SIG and stored in the Assigned Numbers document. They are shorthand representations of the full 128-bit Bluetooth Base UUID: 0000XXXX-0000-1000-8000-00805F9B34FB, where XXXX is the 16-bit value. All SIG-assigned service UUIDs with source: "gss" use this format. 128-bit UUIDs (36-character hyphenated string, e.g., "EF680100-9B35-4933-9B10-52FFA9740042") are used for proprietary or vendor-specific services that are not registered with Bluetooth SIG. These must be globally unique to avoid conflicts with other vendors’ services on the same physical radio medium. Entries with source values such as "nordic", "apple", "google", and "adafruit" use 128-bit UUIDs or, in some cases, SIG-registered 16-bit UUIDs obtained through the Bluetooth SIG member program (e.g., "FEAA" for Google Eddystone, "FE59" for Nordic Secure DFU Service).

Common Service Lookups

import services from './v1/service_uuids.json';

// Find Heart Rate service
const heartRate = services.find(s => s.uuid === '180D');
console.log(heartRate.name);       // "Heart Rate"
console.log(heartRate.identifier); // "org.bluetooth.service.heart_rate"

// Find Battery Service
const battery = services.find(s => s.uuid === '180F');
console.log(battery.name); // "Battery Service"

// Find Device Information Service
const deviceInfo = services.find(s => s.uuid === '180A');
console.log(deviceInfo.name); // "Device Information"

// Look up a Nordic proprietary service by partial name
const nordicUart = services.find(s =>
  s.name.toLowerCase().includes('uart')
);
console.log(nordicUart.uuid); // "6E400001-B5A3-F393-E0A9-E50E24DCCA9E"

Filtering by Source

To work only with SIG-standardized services, filter by source === 'gss'. To enumerate vendor-specific services from a particular company, filter by the corresponding source value:
import services from './v1/service_uuids.json';

// Get all SIG-defined GATT services
const sigServices = services.filter(s => s.source === 'gss');
console.log(`${sigServices.length} SIG-defined services`);

// Get all Nordic-defined services
const nordicServices = services.filter(s => s.source === 'nordic');
nordicServices.forEach(s => console.log(`${s.uuid}${s.name}`));

// Get all Apple-defined services
const appleServices = services.filter(s => s.source === 'apple');
Identifier naming convention: The identifier field follows a four-part reverse-domain pattern — (reverse domain).(attribute type).(use case) — for example org.bluetooth.service.heart_rate. For vendor-defined services this becomes com.company.service.product_name. This convention makes identifiers globally unique and maps intuitively to package names in Android and bundle identifiers in iOS development.

Build docs developers (and LLMs) love