FfirmwarekitEMBEDDED / DEVELOPER TOOLS
> tools / tlv_parser

TLV parser.

Paste bytes. Split records. Read the values.

Inputs stay on your device

01Input

HEX is formatted as uppercase byte pairs as you edit. Non-HEX characters are ignored; 0x prefixes are accepted. Limit: 64 KiB.

02Settings

TYPE / LENGTH / VALUE

Decimal or 0x HEX. End is exclusive. Skip transport headers or trailing status bytes; reported offsets stay absolute.

Value views change the display only. BLE UUIDs and identifiers use their protocol byte order in the automatic view.

Reading TLV records

HELP / EXAMPLES

TLV means type (or tag), length, value. With one-byte fields and value-only length, 01 03 41 42 43 is type 01, length 3, and value 41 42 43 (“ABC”). Custom mode also supports LTV order, wider headers, and lengths that count header bytes.

BLE advertising: 02 01 06 has declared length 2, type 01 (Flags), and one value byte. Names, flags, service UUID lists/data, TX power, appearance, and manufacturer company IDs have readable interpretations. Paste AD structures, without HCI or link-layer headers. Zero length terminates the list; bytes after it remain unparsed.

NFC Type 2: paste the logical TLV data area, excluding UID, capability container, lock bytes, and reserved memory gaps. NULL (00) and terminator (FE) occupy one byte. Length FF introduces a big-endian two-byte length. NDEF message contents are retained as raw values; this preset splits the outer TLVs and does not decode NDEF records or reconstruct physical tag memory.

BER-TLV: handles definite short/long lengths, tags up to eight bytes, and optional constructed children. Nested offsets stay absolute. Smart-card multi-byte tags are accepted. Indefinite lengths, APDU status-word parsing, ASN.1 schema validation, and EMV transaction validation are outside this preset.

Parsing stops at the first malformed boundary and retains complete records before it. Unknown types remain visible. Interpretation warnings do not alter record boundaries. Limits are 64 KiB, 1,024 total records, eight nested levels, and four following bytes in BER long lengths. Text views escape control characters; copy value always returns its exact HEX bytes.