USB Descriptor Utility

USB Descriptor Decoder

Decode hexadecimal USB descriptors into human-readable fields. Inspect USB device, configuration, interface, endpoint, string, HID, BOS and device capability descriptor structures with descriptor lengths, types, addresses, attributes, VID/PID values and byte-level details.

✓ Device Descriptor ✓ Configuration ✓ Interface ✓ Endpoint ✓ String ✓ HID / BOS
USB
USB Descriptor Decode
● Ready
Sequence mode continues decoding descriptors according to each bLength field.
USB string descriptors normally store text using UTF-16LE.
Enter bytes separated by spaces, commas, colons or hyphens. Continuous hexadecimal input and 0x prefixes are accepted.
Decoder scope: standard USB descriptor fields are decoded where their format is defined. Class-specific, vendor-specific and unknown descriptors are preserved as raw bytes rather than assigned meanings that are not proven by the descriptor type.
USB Descriptor Decode Result Decoded
Decoded Descriptor Structure
Descriptors
First Descriptor
Total Input Bytes
Parsed Bytes
USB Version
VID / PID
Interfaces
Endpoints
# Offset bLength bDescriptorType Descriptor Decoded Summary
Byte-Level Descriptor Breakdown

What Is a USB Descriptor Decoder?

A USB Descriptor Decoder converts raw descriptor bytes into fields defined by the USB specification. USB devices expose descriptors during enumeration so the host can learn what device is connected, which configurations are available, which interfaces exist and which endpoints can transfer data.

Every standard descriptor begins with a length byte and descriptor-type byte, which makes it possible to walk through a sequence of descriptors without assuming every descriptor has the same size.

USB Descriptor Header

Byte 0: bLength Byte 1: bDescriptorType Remaining bytes: Descriptor-specific fields

For example, a standard USB device descriptor normally begins with 12 01. Hexadecimal 0x12 means the descriptor is 18 bytes long, while descriptor type 0x01 identifies a Device Descriptor.

Common USB Descriptor Types

Type Descriptor
0x01Device
0x02Configuration
0x03String
0x04Interface
0x05Endpoint
0x06Device Qualifier
0x07Other-Speed Configuration
0x08Interface Power
0x09OTG
0x0BInterface Association
0x0FBOS
0x10Device Capability
0x21HID class descriptor in HID context

USB Device Descriptor

The device descriptor contains information applying to the overall device, including the supported USB version, device class, endpoint-zero packet size, vendor ID, product ID and string-descriptor indexes.

12 01 00 02 00 00 00 40 34 12 78 56 00 01 01 02 03 01

The two-byte fields are stored little-endian. Therefore raw VID bytes 34 12 represent vendor ID 0x1234, while 78 56 represent product ID 0x5678.

USB Configuration Descriptor

A configuration descriptor describes one device configuration and includes the total number of bytes returned for that configuration tree, the number of interfaces, configuration attributes and maximum bus current.

bLength bDescriptorType wTotalLength bNumInterfaces bConfigurationValue iConfiguration bmAttributes bMaxPower

For USB 2.0-style configuration descriptors, bMaxPower is expressed in units of 2 mA.

USB Interface Descriptor

An interface represents a functional portion of a USB configuration. It defines an interface number, alternate setting, expected endpoint count and class/subclass/protocol values.

09 04 00 00 01 03 01 01 00 bInterfaceNumber = 0 bAlternateSetting = 0 bNumEndpoints = 1 bInterfaceClass = 0x03

Class 0x03 is commonly associated with HID, but the decoder continues to display numeric class fields so that the raw descriptor remains visible.

USB Endpoint Descriptor

Endpoint descriptors describe non-control endpoints used to exchange data. Important fields include the endpoint address, transfer type, maximum packet size and polling interval.

07 05 81 03 08 00 0A Endpoint Address: 0x81 Direction: IN Endpoint Number: 1 Attributes: 0x03 Transfer Type: Interrupt Maximum Packet: 8 bytes Interval: 10

Endpoint Address Direction

Bit 7 of bEndpointAddress indicates transfer direction for non-control endpoints.

0x81 Bit 7 = 1 Direction = IN Endpoint number: 0x81 & 0x0F = 1

IN means transfers move from the USB device toward the host. OUT means data travels from the host toward the device.

USB Endpoint Transfer Types

bmAttributes Bits 1:0 Transfer Type
0Control
1Isochronous
2Bulk
3Interrupt

USB String Descriptor

USB string descriptors commonly store text using UTF-16LE. After the bLength and bDescriptorType bytes, each character occupies two bytes.

0E 03 42 00 69 00 6E 00 61 00 72 00 79 00 Decoded: "Binary"

String descriptor zero is special because its payload normally contains language IDs rather than ordinary text.

USB HID Descriptor

A HID class descriptor commonly appears after a HID interface descriptor. Its descriptor type is 0x21 and it can contain the HID specification version, country code and subordinate descriptor information.

The HID report descriptor itself uses a different variable-item grammar, so a USB descriptor stream parser should not blindly interpret its payload as ordinary fixed-format USB descriptors.

USB BOS Descriptor

The Binary Object Store, or BOS, groups device capability descriptors. It is used by newer USB specifications to advertise additional device-level capabilities.

BOS Descriptor Type: 0x0F Device Capability Descriptor Type: 0x10

Device capability payload interpretation depends on the capability type, so unknown capability data is preserved instead of guessed.

Little-Endian USB Fields

Many multi-byte numeric fields in USB descriptors are transmitted little-endian.

Raw bytes: 34 12 16-bit value: 0x1234

This applies to common fields such as bcdUSB, idVendor, idProduct, wTotalLength and wMaxPacketSize.

USB Descriptor Decoder FAQs

What does bLength mean in a USB descriptor?
bLength is the total number of bytes occupied by that descriptor, including the bLength and bDescriptorType bytes.
What does bDescriptorType identify?
It tells the host which descriptor structure follows, such as Device, Configuration, Interface, Endpoint or String.
What does USB descriptor type 0x01 mean?
Descriptor type 0x01 identifies the standard USB Device Descriptor.
What does descriptor type 0x02 mean?
It identifies a Configuration Descriptor.
What does descriptor type 0x04 mean?
It identifies an Interface Descriptor.
What does descriptor type 0x05 mean?
It identifies an Endpoint Descriptor.
How are USB vendor and product IDs stored?
The 16-bit idVendor and idProduct fields are stored little-endian in the standard Device Descriptor.
What does endpoint address 0x81 mean?
It represents endpoint number 1 with the IN direction bit set.
What does endpoint attribute 0x03 mean?
The lower two bits are 3, identifying an Interrupt endpoint.
How are USB strings encoded?
Ordinary USB string descriptors generally encode their character data as UTF-16LE.
Can this decoder parse multiple descriptors together?
Yes. Sequence mode advances using each descriptor’s bLength field and decodes the next descriptor from the following byte.
What happens with vendor-specific descriptors?
They are preserved as raw bytes unless their structure is defined by one of the standard descriptor formats handled by this page.

Decode USB Descriptor Hex Bytes

Inspect descriptor boundaries, USB versions, VID/PID values, configuration properties, interfaces, endpoint direction and transfer type, strings, HID metadata and other USB descriptor structures.

Scroll to Top