I am trying to generated the checksum for the mnemonics (BIP39) but can't get the correct value.

I used 3 resources

I can't get the first test vector to work out.

I SHA256 0x00000000000000000000000000000000 into 374708fff7719dd5979ec875d56cd2286f6d3cf7ec317a3b25632aab28ec37bb

The first four bits, which are the checksum bits, are 0b1101

That makes the last 11 bits of seed + checksum 0b00000001101, the last word of the mnemonic. Corresponds to 13 or index 12 "accident". However in the test vector it's index 4 "about".

I get the wrong word for every test vector. Probably a silly mistake. Thanks.

2 Answers 2


The checksum is expressed in Hex, so I believe the first character '3' represents the first four bits of the checksum string? If so, this is 0b0011. Word "about" is actually index '3' because the word list is 0-indexed (hence all zeroes maps to "abandon").


You are using the wrong byte-order. In big-endian the hash is 0b0011011101000111000010001111111111110111011100011001110111010101100101111001111011001000011101011101010101101100110100100010100001101111011011010011110011110111111011000011000101111010001110110010010101100011001010101010101100101000111011000011011110111011 so the first four bits are 0b0011 = 3 = about

You can find a python implementation of the mnemonic validation here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.