Why does the length of a bitcoin key vary? Why aren't they all the same length?


2 Answers 2


The length of a key doesn't vary. Private keys are always 32 bytes, and public keys are always 65 bytes (or 33 bytes for a compressed public key). Public key hashes are always 20 bytes.

The length of addresses vary because in Bitcoin's base58 encoding, leading zero bytes are expressed as a single "1". Other bytes require more than one character in order to be expressed in base58.

  • Do you have private keys and public keys reversed in the above answer? It seems to me that private keys are longer. Nov 20, 2011 at 19:34
  • 2
    @shoelessjoe I don't think so. Public keys are definitely 64 bytes plus the leading 0x04 byte, and I assume that the 256 in "secp256k1" refers to the size of the private key in bits.
    – theymos
    Nov 21, 2011 at 1:33
  • You said "Private keys are always 32 bytes, and public keys are always 65 bytes." That makes public keys longer than private keys? Nov 29, 2011 at 18:13
  • @shoelessjoe Yes. I think this is the case with all public-key crypto, actually.
    – theymos
    Nov 30, 2011 at 22:12
  • In fact, we could move to compressed public keys, which are 257 bits long (33 bytes). Slightly longer than the private key indeed, but almost nothing. Dec 4, 2011 at 14:56

Private keys are 256 bit numbers

Public keys are a pair of X,Y coordinates. Each coordinate is a 256 bit number. BUT for every X coordinate there are only two possible Y coordinates (one positive, one negative) so you can store a public key as just the X coordinate (256 bits) and the sign of the Y coordinate (1 bit) and the proper Y coordinate can then be calculated from the X coordinate and the sign.

So private key = 256 bits, public key = 2*256=512 bits OR 256+1=257 bits

Then there is a small amount of formatting overhead of a few bits.

Then these are encoded.

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.