TLV Parser

Decode BER-TLV and EMV hex data into a readable tag tree.

This tool runs entirely in your browser. Your files are never uploaded to a server.

6FFile Control Information (FCI) Template(26 bytes)
84Dedicated File (DF) Name(14 bytes)
325041592E5359532E4444463031
A5FCI Proprietary Template(8 bytes)
88Short File Identifier (SFI)(1 bytes)
02
5F2DLanguage Preference(2 bytes)
656E

Recognizes common EMV tags; unrecognized tags are still parsed and shown as "Unknown tag".

What this tool does

Parses raw BER-TLV or EMV hex data into a structured tree, showing each tag's ID, resolved name where known, byte length, and decoded value, recursively expanding any constructed (nested) tags into their child elements.

How to use it

Paste a hex string of BER-TLV or EMV data into the input box; the parsed tag tree appears automatically below it, with constructed tags shown as expandable groups containing their nested tags.

Worked example

Parsing `5A08 4111111111111111` produces a single primitive tag: ID `5A`, resolved name "PAN" (Primary Account Number), length `08` (8 bytes), and value `4111111111111111` — exactly the structure a chip card or payment terminal would read from that byte sequence.

Understanding tag, length, value

Every BER-TLV element has three parts: the tag byte(s) identify what kind of data follows, the length byte(s) state exactly how many bytes of value come next, and the value itself is either raw data (a primitive tag) or more nested TLV elements (a constructed tag, identified by a specific bit in the tag byte).

The built-in EMV tag dictionary

Common EMV tags — such as `5A` (PAN), `5F20` (Cardholder Name), `9F26` (Application Cryptogram), `57` (Track 2 Equivalent Data), and `4F`/`84` (Application Identifier) — are resolved to their human-readable names automatically; tags outside this dictionary are still parsed structurally and shown by their raw hex ID.

Where this format is used

BER-TLV is the encoding inside EMV chip card data (the format read by payment terminals), many ISO 8583 message fields, and various smart card and government ID applications, wherever structured, self-describing binary data needs to be nested arbitrarily deep.

Privacy

Parsing happens entirely in your browser via client-side JavaScript; the hex data you paste is never uploaded to a server, which matters when working with real card or terminal data.

Frequently Asked Questions

What is BER-TLV encoding?
BER-TLV (Basic Encoding Rules, Tag-Length-Value) is a binary format where each data element consists of a tag identifying its meaning, a length field, and a value. It's the encoding used inside EMV chip card data, ISO 8583 fields, and many smart card applications.
Which EMV tags does the parser recognize?
The built-in dictionary covers the most common EMV tags, such as 5A (PAN), 5F20 (Cardholder Name), 9F26 (Application Cryptogram), 57 (Track 2 Equivalent Data), and 4F/84 (AID). Unrecognized tags are still decoded structurally, just shown without a friendly name.
Does the tool process my data on a server?
No, parsing happens entirely in your browser. The hex data you paste is never uploaded, which matters when you're working with real card or terminal data.