Private Key Tools

Private key → P2PKH address (uncompressed)

The other 1… address for the same private key: this one hashes the full 65-byte public key 04‖X‖Y. It is the format every wallet used before 2012, it is still valid and spendable today, and it is the address where a lot of old coins actually sit.

The 65-byte public key 04‖X‖Y is derived from this value and then hashed with hash160. Accepts an optional 0x prefix, spaces and upper case; shorter values are left-padded. Must be in [1, n−1].
No input yet

Enter a value above and press Convert. Not sure what to type? Press “Use example” to load the sample from the placeholder.

How it works

What this page computes

The same private key as the compressed page, but hashed through the 65-byte uncompressed public key 04 ‖ X ‖ Y. The address formula is identical — only the bytes that go into the hash change:

address = Base58Check( 0x00 ‖ RIPEMD160(SHA256(pubkey_uncompressed)) )
private key k→ k · G→ 65-byte 04‖X‖Y→ SHA-256→ RIPEMD-160→ hash160 (20 B)→ 0x00 ‖ hash160 ‖ checksum→ 1… address

The two addresses have the same shape, the same length and the same version byte, and they are not interchangeable. Coins live at one specific address, and only the hash of the exact byte string that was used at receive time will recognise them.

1. The uncompressed public key: 04 ‖ X ‖ Y

SEC1 defines several serializations of an elliptic-curve point. The original one spells everything out: a 04 tag, then the 32-byte X coordinate, then the 32-byte Y coordinate. Nothing is compressed, nothing has to be recomputed — the verifier reads both coordinates straight off the wire.

FormTagContentLengthUsed by
Uncompressed04X (32 B) ‖ Y (32 B)65 bytes / 130 hexSatoshi-era clients, this page
Compressed, even Y02X (32 B)33 bytes / 66 hexeverything since 2012
Compressed, odd Y03X (32 B)33 bytes / 66 hexeverything since 2012
x-only (BIP340)—X (32 B)32 bytes / 64 hexTaproot output keys

Both forms describe the same point on the same curve. Compression is not a different key, not a different derivation path, and not a "legacy mode" of the maths — it is only a shorter spelling, made possible by the fact that Y is fully recoverable from X and one parity bit (see the compressed page for that trick).

A private key has no compression flag

The 32-byte scalar is just a number. "Compressed" is a property of how a wallet serializes the public key, and it is recorded nowhere except in the WIF string (5… = uncompressed, K…/L… = compressed) and in the wallet's own metadata. This single fact is the root cause of every "my coins disappeared" story described below.

2. Why the hash — and therefore the address — differs

hash160 is a function of the exact byte string you feed it, not of the point it represents. A 65-byte input and a 33-byte input have different lengths, different first bytes, and a completely different digest. There is no relationship between the two results: they are two independent 160-bit values.

StepCompressed (C)Uncompressed (U)
Public key02ff812e…8c67ee80 (33 B)04ff812e…32b424ae (65 B)
SHA-256 of it067eb00a0b9864633b020eef374476142daba913c5481ad6a4741cc8ab70261730c812bb6ef97f95538e2423f944d056d0cefc28021113de143e56d2c9d11900
hash160 (20 B)21f57b6debcfc5b67182dfb4af1641f0a81890123f0e966dc089c611a9c1d03bd4f69ea53b0223f9
Payload with version byte0021f57b…12003f0e96…f9
Checksum (4 B)cbd7667e3b0b7cbd
P2PKH address146ZNjH7XTXnMd1ofe3z7CL2i8WM7N2UqT16kR3eiswUY6tmGnxZhwQmW6LAvTLGWG2G
WIF that implies itKwVYL77Lcs1ckM39NvGjrtfKhU4KKdR2iB9Wq2FSMN6rbGK5tVqG (K…)5HssbguBnjbaUVZCsH9YuzUG7T4vYQf51iiodi4izdVy6aVNekU (5…)

Both rows are correct, both are spendable, and both belong to the same 256-bit secret. Nothing on-chain indicates that they are related — that is exactly what makes this an interoperability trap rather than a curiosity.

3. The historical timeline

Uncompressed is not a broken legacy format; it is the original one.

PeriodWhat happened
January 2009Bitcoin v0.1 ships. Keys are serialized uncompressed; the earliest coins are mostly P2PK outputs that contain the full 65-byte key.
2009 – 2011Every wallet — including the reference client — hashes the 65-byte form. Essentially every address from this era is an uncompressed P2PKH address.
March 2012The reference client's 0.6 series adds compressed public keys; newly generated keys use 02/03 and WIFs gain the K…/L… prefix. BIP16 (P2SH) activates on 1 April 2012 in the same era.
2013 – 2014HD wallets (BIP32 / BIP44) become standard and assume compressed keys for every derived address. Uncompressed becomes an export-only format.
24 August 2017SegWit activates. Compressed keys become mandatory for witness address types, making the split permanent.
TodayUncompressed P2PKH is still valid, still relayed, and still holds real coins — mostly untouched since 2009–2011.

4. Wallet recovery: why an old address shows coins the new wallet cannot see

This is the situation the page exists for. You restore a seed, or import a key, and the wallet shows a zero balance — while a block explorer shows coins sitting quietly at a 1… address that you are sure belongs to you. Three things have gone wrong at once:

  1. The wallet only computes one serialization. A modern wallet following BIP44 / BIP49 / BIP84 / BIP86 derives compressed public keys by convention. It hashes the 33-byte form, gets the compressed hash160, and looks up 146ZNjH7…. The coins are at 16kR3eis… — a value the wallet never computes, so it never asks the network about it.
  2. A restored seed is not a restored wallet. The seed deterministically produces the private key, but the address convention is client software, not mathematics. The same seed with a 2009 client and with a 2024 client yields two disjoint sets of addresses.
  3. The WIF flag, not the key, decides. When the key was exported as 5HssbguBnjbaUVZCsH9YuzUG7T4vYQf51iiodi4izdVy6aVNekU (prefix 5), the wallet should treat it as uncompressed. Import it as K…/L…, or paste the raw hex into a wallet that assumes compressed, and the coins vanish from view without moving an inch.
How to actually recover such a wallet

Derive both addresses for every key you own and look up the uncompressed one specifically. Tools that do this: an offline wallet with an "uncompressed / legacy" import option, a key-sweeping utility that scans both hash160 forms, or a page like this one paired with an offline explorer. Do not "fix" it by sending coins from the old address to the new one until you can sign with the old key — you still need the key that controls the source address, and it is the same key, so signing is fine; the danger is concluding the money is gone and doing something drastic.

5. Is the uncompressed form still valid on-chain?

Yes. Nothing in the consensus rules forbids it, and a P2PKH output created from an uncompressed key remains spendable today:

Nothing needs to be "fixed"

An uncompressed P2PKH address is not deprecated and not broken: it is an ordinary, fully spendable output. Making such outputs unspendable would require a soft fork that no one has proposed, so the coins will still be there whenever you get around to them. The only real deadline is the practical one — the longer a key sits exposed to weak-randomness and phishing risk, the more chances an attacker gets.

Never build a SegWit address from an uncompressed key

Feeding hash160(uncompressed pubkey) into a P2WPKH or P2SH-P2WPKH encoder produces a syntactically perfect address that you may be unable to spend through normal relay, because the witness would have to carry the 65-byte key. If a tool offers to "upgrade" an old key to SegWit, it must start from the compressed public key derived from the same scalar — the uncompressed hash is simply the wrong 20 bytes for every witness address type.

6. The economics: bigger script, higher fees

Spending an uncompressed P2PKH output costs more because the unlocking script must carry 32 extra bytes: the full Y coordinate. Both addresses look identical on the receiving side; the difference shows up only when the coins move.

ItemCompressedUncompressed
Public key in the scriptSig33 B + 1 push byte = 34 B65 B + 1 push byte = 66 B
Signature push (typical)1 + 70…72 B + 1 sighash byte ≈ 73 Bsame ≈ 73 B
scriptSig total≈ 107 bytes≈ 139 bytes
Whole input (txid + vout + script + sequence)32 + 4 + 1 + 107 + 4 = 148 bytes32 + 4 + 1 + 139 + 4 = 180 bytes
Extra weight per input—+32 bytes = +32 vB
Extra fee at 10 sat/vB—+320 sat per input

At 10 sat/vB the surcharge is about 320 satoshis per input; on a sweep of 50 old inputs that is roughly 16 000 satoshis of pure overhead, and the gap widens whenever fees spike. It is a real cost, but it is also the only way to move those coins: the fee is not optional and not avoidable, because the extra bytes are what make the hash match.

7. Mainnet vs testnet version bytes

NetworkP2PKH versionP2PKH prefixP2SH versionWIF versionBech32 hrp
Mainnet0x001…0x050x80bc
Testnet0x6Fm… / n…0xC40xEFtb

The version byte is the only thing that differs between the two chains for a given hash160: the uncompressed hash160 above yields 16kR3eiswUY6tmGnxZhwQmW6LAvTLGWG2G on mainnet and mmGNLhorkVyMfskQg8gKEgiRCAXAGnxeBv on testnet. The version byte is also the only reason the mainnet address starts with 1 — Base58 writes each leading 0x00 as a literal 1.

8. Worked example with the demo key

StepValue
Private key k0824c314772b2c2859c889471390a36bf66e53a1ca1642f96f0f2c9307a171ca
Uncompressed public key (65 B)04ff812e26116a9aa140abe629e7f8a38401653caf925119def59ed3758c67ee808f49cde13c7ffd64f1d730bf87a743a578eda4971ddac4a08118160732b424ae
SHA-256 of that (32 B)30c812bb6ef97f95538e2423f944d056d0cefc28021113de143e56d2c9d11900
hash160 (20 B)3f0e966dc089c611a9c1d03bd4f69ea53b0223f9
Payload = 00 ‖ hash160 (21 B)003f0e966dc089c611a9c1d03bd4f69ea53b0223f9
Checksum (4 B)3b0b7cbd
P2PKH address (uncompressed)16kR3eiswUY6tmGnxZhwQmW6LAvTLGWG2G
Same key, compressed address146ZNjH7XTXnMd1ofe3z7CL2i8WM7N2UqT
Matching scriptPubKey (25 B)76a9143f0e966dc089c611a9c1d03bd4f69ea53b0223f988ac

Everything in that table is recomputed live by the result panel, so you can confirm that the two hash160 values, and therefore the two addresses, have nothing in common.

9. Where this fits in the chain

10. Security notes

Keys created in 2009–2011 are still live targets

Uncompressed addresses are heavily associated with early, high-value coins, and some early keys were generated with weak randomness (a predictable RNG seeded from the clock, or invented by hand). An uncompressed address sitting at the top of a "rich list" attracts brute-force attention. If you control such coins, move them — but move them correctly: first sweep the uncompressed address with the 5… WIF, then consolidate to a fresh, modern address derived from a properly random seed.

11. Common mistakes

12. Quick reference

ItemValue
FormulaBase58Check(0x00 ‖ hash160(uncompressed pubkey))
Hash input65-byte key 04 ‖ X ‖ Y (130 hex digits)
Hash functionhash160 = RIPEMD160(SHA256(x)), 20 bytes
Version byte0x00 mainnet, 0x6F testnet
Encoded payload25 bytes = 1 + 20 + 4
scriptSig when spending≈ 139 bytes (vs ≈ 107 compressed)
WIF that implies it5… (uncompressed)
SegWit compatible?No — witness programs are compressed-only by policy
Demo address16kR3eiswUY6tmGnxZhwQmW6LAvTLGWG2G
Still spendable?Yes — consensus and relay policy both accept it