FIXtags · Docs
Open app
Quick start

Find an order. See its complete lifecycle.

FIXtags turns raw FIX messages and ordinary log lines into a searchable message stream and correlated order lifecycles. Parsing happens locally in your browser.

Start with a log

1

Paste or drop

Paste raw FIX, prefixed log lines, JSON-wrapped logs, or a whole file. Pipe, SOH, and ^A delimiters are detected automatically.

2

Parse

FIXtags extracts each message, decodes tags and enum values, and groups related messages across cancel/replace chains.

3

Find the order

Search by ClOrdID, OrigClOrdID, OrderID, symbol, account, message type, or any field value.

4

Inspect the lifecycle

Switch to Orders, select the order, then click any lifecycle message to inspect its decoded fields and raw FIX.

Core workflow

Inspect an order lifecycle

The Orders view rolls the initial order, acknowledgements, fills, cancels, and replacements into one row. Replacement ClOrdIDs remain connected to the original chain.

NOSNewPartialFillReplaceFilled
  • Select an order to open its message chain in the detail pane.
  • Click a message in the chain to jump into the Messages view with the order isolated.
  • Use Trace messages to keep only messages belonging to that order.
  • Click an ID to copy its full value, even when the table displays a shortened version.
Analyze results

Move from an order to the evidence

Most investigations start in Orders, then move into the exact messages and fields that explain the lifecycle.

Narrow by order state

Use Working, Partial, Filled, Canceled, Unacked, and Rejected chips to isolate the lifecycles that matter. The live counts update with the current data.

Inspect decoded fields

Select a message to see its raw FIX, decoded tag names and enum values, repeating groups, and checksum/BodyLength validation.

Use findings as guardrails

FIXtags flags lifecycle inconsistencies such as fills after terminal states, quantity mismatches, duplicate ExecIDs, unacknowledged orders, and sequence gaps.

Compare or focus

Pin important messages, compare two messages field by field, promote useful tags into columns, or drag across the activity timeline to isolate a time window.

Live tail

Stream logs directly from a terminal

The CLI starts a localhost-only bridge and opens FIXtags connected to the stream. Nothing is sent to a remote backend.

npx fixtags fix.logRun without installing
npm install -g fixtagsInstall the fixtags command
npx fixtags /var/log/fix.logFollow a file
tail -f fix.log | npx fixtagsPipe any command
ssh prod 'tail -f /var/log/fix.log' | npx fixtagsTail remotely over SSH
Search & filter

Start simple, then get precise

ORD-001Text anywhere in the message
11=ORD-001Exact tag and value
@Symbol == "AAPL"Field-name query
@MsgType == @ExecutionReportDecoded enum alias
@Symbol == "AAPL" and @Side == @BuyCombined conditions

Type @ for field autocomplete. Use the .* Regex button when a regular expression is the clearest match.

Persistent work

Sessions and named streams

A plain CLI run is temporary and ends with Ctrl-C. Name a session or stream when several terminals should feed one browser workspace or when a feed needs to survive terminal restarts.

fixtags --session cert --stream orders cert.logName the workspace and feed
fixtags --stream orders -- kubectl logs pod-a -fLet FIXtags manage the command
fixtags lsList background sessions
fixtags streams lsList streams in the selected session
CLI reference

Common session and stream controls

fixtags --bg fix.logKeep a background session after the terminal exits
fixtags --newClear the selected session and start fresh
fixtags streams clear ordersRemove one stream's retained messages
fixtags streams stop ordersStop accepting that stream until its feeder is rerun
fixtags sessions stopStop the selected background session
fixtags urlPrint the selected session's browser URL
fixtags configShow persisted CLI defaults
fixtags --helpShow every command, option, and example

Useful options

--localServe the app locally for Safari or offline use
--echoMirror streamed lines to the terminal
--decodeAnnotate FIX enum values in terminal output
--history NSet how many lines a background session retains
--idle-timeout MINChoose when an inactive background session exits
--no-openPrint the URL without opening a browser
No browser required

Use the same filters from the terminal

--grep prints matching original log lines and exits without starting a server or writing session state.

fixtags --grep '@Symbol == "AAPL"' fix.logQuery by decoded field
fixtags --grep '35=8' -c fix.logCount ExecutionReports
Export & share

Take the useful part with you

  • Copy All Raw copies the original messages represented in the current dataset.
  • CSV is useful for spreadsheets; JSON preserves structured decoded fields.
  • Share Link carries the log, filter, Messages/Orders mode, trace, and current selection in the URL fragment so the recipient opens the same view.
Privacy

Your logs stay with you

  • Paste and file parsing run entirely inside the browser.
  • Live mode connects the page directly to a tokenized localhost server started by the CLI.
  • History, saved filters, pins, and display preferences are stored in browser local storage.
  • Share links encode data in the URL fragment, which is not sent to the web server; recipients with the complete link can still read that data.
  • Use Clear or browser storage controls when a local trace should no longer remain on that device.
Keyboard

Useful shortcuts

/Focus search
j kNext / previous message or order
EnterOpen the selected order trace
TTrace the selected order
cOpen the correlated lifecycle
yCopy the selected raw message
⌘KOpen the command palette
?Show every shortcut