Skip to content

About Kodari Tools

A small set of utilities for people who work on payment systems: parsing EMV tag structures, decoding ISO 8583 messages, and inspecting the hex that flows between terminals, acquirers and issuers.

Why this exists

I am a senior software engineer working on a payment gateway in Australia. Debugging live traffic means reading raw ISO 8583 and EMV hex all day — and building test payloads means writing it back out by hand. The tools for that are scattered across half-remembered bookmarks, desktop utilities and internal scripts, and plenty of them want you to paste card data into someone else's server.

So this is the one place I wanted: payment tooling that loads instantly, runs entirely on your machine, and covers the whole loop — decode a message, understand a tag, build the next payload. The day job is Java and Spring Boot over Redis, Couchbase and AWS, on reconciliation and workflow systems for retail payments; everything here comes out of problems that work actually threw at me.

Your data stays in your browser

Every tool here is a static page. There is no API, no analytics, no telemetry and no logging. Parsing happens in JavaScript on your machine, and nothing you paste is transmitted anywhere. You can confirm this by opening your browser's network tab while using a tool — you will see no requests carrying anything you pasted.

That said, treat production card data with the care it deserves. Prefer test PANs and test cryptograms where you can.

EMV TLV Parser

Parses BER-TLV as used in EMV Data Element 55. It handles multi-byte tags, short- and long-form lengths, and recurses into constructed templates. Tags are labelled from an EMV tag dictionary; unknown tags are reported rather than dropped. Structural problems — truncated values, unsupported indefinite lengths, declared lengths that overrun the buffer — surface as warnings alongside a best-effort parse, with byte offsets so you can find them in the original hex.

ISO 8583 Decoder

Reads the MTI, the primary bitmap and, when bit 1 is set, the secondary bitmap, then frames each data element according to a field table. Field lengths are expressed in field characters, and the decoder converts them to byte offsets using each field's encoding — BCD packs two digits per byte, ASCII one character per byte, binary is opaque. DE 55 is passed through the TLV parser and rendered as a nested tree.

The built-in table follows ISO 8583:1987. Real acquirers deviate from it constantly, so you can load your own field definitions as JSON; the schema is documented on the tool page and validated before use.

Accuracy

The parsing logic is covered by unit tests, but these are debugging aids, not certified reference implementations. If a tool disagrees with your specification, trust the specification. Found a message these tools get wrong? Reach out on LinkedIn with a sample and it will get fixed.

Built with

Astro and Tailwind CSS, deployed as static assets on Cloudflare Workers. Built by Kodari.