Bite Apps › SafeFIX › Checksum calculator
FIX checksum and BodyLength calculator
Paste one message or a whole log: every line gets the correct 9= and 10=, wrong values are flagged, a corrected copy is ready to copy or download, and each field is decoded with its FIX 4.4 name and value.
Need more than one message? SafeFIX reads entire FIX logs, explains rejects and order lifecycles, and anonymizes logs with recalculated 9 and 10 — locally.
Open SafeFIX — free, in your browserEverything is calculated in this page — nothing is uploaded or stored.
Corrected messages
How BodyLength (9) is calculated
BodyLength is the number of bytes after the delimiter that ends the 9= field, up to and including the delimiter just before 10=. 8=, 9= and the CheckSum field itself are not counted. Every SOH counts as one byte — so when a log shows the delimiter as | the count is the same, but ^A is two characters on screen for one byte on the wire.
8=FIX.4.4|9=58|35=0|34=216|49=CLIENT1|52=20261114-09:30:30.000|56=BROKER|10=230|
└─────────────────── 58 bytes counted ───────────────────┘
How CheckSum (10) is calculated
Add the byte values of every character from 8= up to and including the delimiter before 10=, take the total modulo 256 and write it as exactly three digits with leading zeros (10=007, not 10=7) — the example above adds up to 10=230. Because the BodyLength digits are part of that sum, a wrong 9= usually means a wrong 10= as well — fix the length first, then the checksum.
Why a message gets “wrong checksum” or “wrong body length”
- The message was edited by hand — a test value changed in a replayed log without recalculating 9 and 10. Paste it above to get both numbers right.
- Accented or other non-ASCII characters in a free-text field (58=Text, 354/355 encoded fields): UTF-8 needs 2–4 bytes per character, ISO-8859-1 one. Use the setting above that matches your engine.
- The delimiter was converted — a log copied with
|and sent as is, or a line ending (\r\n) left inside the message. - Header order — 8, 9 and 35 must be the first three fields and 10 the last; the tool moves them back and tells you.
- A missing delimiter before 10= — the most common bug in home-grown FIX code.
A counterparty that receives a garbled message normally ignores it or answers with a Reject (35=3); see FIX reject codes and, for sequence problems after a resend, FIX session troubleshooting.
FAQ
How do I calculate the FIX checksum?
Sum the byte values of the whole message from 8= up to and including the SOH before 10=, take the remainder modulo 256 and write it as three digits, for example 10=230.
What does BodyLength include in FIX?
All bytes after the SOH that ends the 9= field up to and including the SOH that precedes 10=. The BeginString (8), BodyLength (9) and CheckSum (10) fields are not counted.
Does the | delimiter change the checksum?
No, as long as each | stands for one SOH byte: the tool converts it back to SOH before counting. A ^A shown in a log is also treated as one SOH byte.
Is my FIX message sent anywhere?
No. The page has no network access; parsing, the calculation and the corrected output all happen in your browser.
Last updated 2026-11-14. Something wrong or missing? Email support@biteapps.cc.