ISO 8583 Parser
Free · Decoder · Updated 2026-08-09
online lookup

EMV TLV Parser — Decode a BER-TLV String

Paste the hex and get a tree: every tag with its name, length and value, nested templates expanded, truncated lengths flagged. Bit-string tags get a link that carries the value into the decoder built for it.

Examples:

Tag, length, value — and then the nesting

BER-TLV is three parts repeated: a tag, a length, then that many bytes of value. Two details make hand-parsing error-prone. A tag whose first byte has bits 5–1 all set (1F masked) continues into further bytes — that is why 9F26 is two bytes and 95 is one. And a length byte with the top bit set does not encode the length; it says how many following bytes do, which is how a value longer than 127 bytes is expressed.

Tags whose first byte has bit 6 set are constructed: their value is itself TLV. This tool expands them inline, so an FCI template or a format-2 response comes out as a tree rather than a wall of hex.

The values that are not values

Several EMV tags carry bit strings rather than readable data: TVR (95), AIP (82), TSI (9B), CID (9F27), CVM Results (9F34), CVM List (8E), IAD (9F10), ATC (9F36). A TLV dump gives you the hex and stops there — which is where most debugging actually begins.

When one of those tags appears, this page adds a link that opens the matching decoder with the value already filled in. No copying, no switching tabs and pasting: click decode this value and read the bits.

The two things that go wrong when pasting

A length prefix came along for the ride. DE55 in a log is often shown with its own length in front. Feed that to a TLV parser and the first “tag” is the length digits, after which nothing lines up. If the first tag looks like nonsense, drop the first two or four characters and try again.

The data is truncated. A field cut short by a log truncation produces a length that runs past the end. This page flags exactly where that happens rather than silently returning a short tree — so you know whether to blame the parser or the capture.

Nothing leaves your browser. Parsing happens in this page's JavaScript, so real card data can be pasted here — though if your policy is that real PANs never touch a website, the offline edition exists precisely so you can prove it.