Drop a .json export file onto the tree pane to import it directly
Message Input +
Paste one or more messages — separate them with a blank line
Format auto-detect — the parser automatically identifies the input format (Pure Hex, Spaced Hex, HexAscii, ASCII, NETARD, etc.) on each parse
Format selector (Auto dropdown) — override auto-detection by selecting a specific format; the dropdown turns amber when a format is forced
ISO timestamp prefixes (YYYY-MM-DD HH:MM:SS) are automatically stripped and displayed separately
NETARD capture files are supported (multi-record, multi-message); a Line Width control appears in the header for NETARD input
Drop any text or capture file onto the panel to load it
✕ Clear button — clears all input and resets the parser
Use < > arrows in the header to navigate between messages when multiple are loaded
The header shows a format badge (e.g. NETARD, HEX) and a message count badge when multiple messages are present
DDL Matching & Parse Flow +
When ▶ Parse is clicked the app selects a DDL through four priority levels:
Manual Override (Priority 1) — if you have a single DDL node selected in the tree and the input contains exactly one message, a confirmation dialog asks whether to use that DDL exclusively. The USER badge appears in the results when this path is used.
Message Type Detection (Step 3) — the decoded message content is matched against known protocol signatures:
DDL Message Map — DDLMM (Priority 2) — explicit routing rules defined by the user. Each rule specifies MSG pattern, SOURCE, DESTINATION, and a target DDL path. Rules are evaluated at six specificity levels (most specific wins). ## sentinel rules additionally require the detected type to match the rule's TYPE column. When a rule matches, its DDL is used directly and its TYPE badge overrides the auto-detected type.
Auto-detect Fallback (Priority 3) — if no DDLMM rule matched, every DDL in the preferred volume (or all volumes if unknown type) is tried. Each is scored: successfully parsed fields ÷ total attempted. Outcome depends on the number of DDLs with score > 0:
Zero matches → "No matching DDL for this message" shown in results panel
One match → used automatically; a prompt offers to save it as a DDLMM rule
Multiple matches → a picker lists each DDL and its score; you choose one and select Use for session (applies to all same-type messages in this run) or Save as rule (creates a permanent DDLMM rule)
The DDL Message Map can be opened from the tree by clicking DDL Message Map at the top of the tree panel.
Message Formats +
The format is auto-detected on each parse. Separate multiple messages with one or more blank lines.
Pure hex — F0200022000000...
Spaced hex — F0 20 00 22 ...
Tandem dump — 0000: F0 F2 .. |0200|
ASCII raw — character bytes interpreted as-is
NETARD capture — multi-record files with packet headers; sub-formats (HEX, DUMP, OCT, EBCDIC, ASCII) are detected per-record
Parse Results +
Click a row → highlights that field's bytes in the Raw hex dump and selects it (accent background)
Hover a row → previews byte highlighting without changing selection
↑ ↓ — move field selection up / down
Filter bar — type to narrow results by field ID or value
Columns dropdown — show or hide Field, Description, Length, Value, Trk
Raw Hex column appears automatically when the Raw Message panel is collapsed
Drag any column header edge to resize that column
Hide Redef button — toggle visibility of REDEFINES fields
Trk checkbox — mark fields you want to track across messages
⊞ Track Mode button — appears when at least one Trk checkbox is checked; switches to cross-message matrix view
⬇ Export button — appears when messages are parsed; opens the message export modal
Double-click the panel title (e.g. Rec #975415) or the n / m counter to copy all fields of the current message to the clipboard as tab-separated text (Field ID, Description, Len, Value)
Double-click any field row to copy just that field to the clipboard
Track Mode +
Check Trk on any fields you want to compare
Click ⊞ Track Mode in the Parse Results header
A cross-message matrix appears — one row per tracked field, one column per message
Click ⊞ Track Mode again to return to the normal field list
Trk selections are preserved when navigating between messages
Export / Import +
DDL Definitions:
Export — saves a .json file; choose exactly which Volumes / Subvolumes / DDLs to include via the checklist; can export a single DDL, an entire Subvolume, a Volume, or everything
Import — reads a previously exported .json; a preview modal shows conflicts before confirming
Drop a .json file onto the tree pane to import it directly
Messages:
⬇ Export button in the Parse Results header — opens a modal to select and export parsed messages to a .json file with full field data and metadata
Layout +
Drag any splitter bar to resize panels horizontally or vertically
Drag the right edge of the tree pane to resize it
Each panel has a − toggle button to collapse it to a labeled strip; click again to expand
At least one panel per row must remain expanded
Settings → Panels on Startup — set the default collapsed / expanded state for each panel at load time
All panel sizes, column widths, and column visibility are saved automatically in the browser
Go to Settings → Layout → ↺ Reset Layout to restore all defaults
Token Maps +
Token maps link a 2-character token ID to the DDL name used to parse its data. Store them as DDL files inside the tree — the parser auto-detects them by their format.
Supported formats:
"B4" = EMV-STAT-TKN
EMV-STAT-TKN = "B4"
Both directions are accepted — "ID" = NAME and NAME = "ID"
Token IDs are exactly 2 characters enclosed in double-quotes
Comments (* in column 1) are ignored
If a token is not found in any map, the record is shown as unparsed (raw bytes with the token ID)
When the same token has both a Binary and an ASCII DDL variant (e.g. EMV-STAT-TKN and EMV-STAT-TKNX), map only the Binary name (without the X suffix) — the parser selects the X variant automatically for ISO/B24 messages
Feedback
Found a bug or have an idea? Send us a note — your email client will open with diagnostic info pre-filled.
About
⬡ DDL Parser v
A self-contained, single-file tool for parsing and analysing HP NonStop / Tandem · Base24 · ISO 8583
financial messages against DDL field definitions.
All data stays in your browser — nothing is sent to any server.
DDL definitions are persisted in localStorage.
Single file App100% offline
⇧ Export DDL Definitions
Select the items you want to include in the export file.