Bitcoin Address Tool

Paste a secp256k1 private key as hex or WIF and derive legacy, wrapped SegWit, native SegWit addresses, public key, HASH160, and WIF locally.

Try:
Derived addresses

What this tool does

Paste an existing Bitcoin secp256k1 private key and derive the standard address formats and WIF export locally. The tool accepts either a 32-byte hex private key or a WIF string. For hex input you choose mainnet or testnet and whether the public key should be compressed. For WIF input, the embedded network and compression flag are detected from the WIF itself.

The output includes the private key hex, WIF, public key hex, HASH160, legacy P2PKH address, wrapped SegWit P2SH-P2WPKH address, and native SegWit P2WPKH address when the key is compressed.

Address formats

FormatMainnet prefixTestnet prefixNotes
P2PKH legacy1…m… or n…Hash160 of the selected public-key encoding, Base58Check
P2SH-P2WPKH wrapped SegWit3…2…Hash160 of the v0 witness redeem script, Base58Check
P2WPKH native SegWitbc1q…tb1q…Bech32 witness v0 program
WIFK…/L… or 5…c… or 9…Base58Check private-key export

SegWit address formats require compressed public keys. If you derive from an uncompressed key, the tool returns the P2PKH address and WIF, and explains why P2SH-P2WPKH/P2WPKH are not emitted.

Example

Private key 0000000000000000000000000000000000000000000000000000000000000001 with mainnet + compressed produces:

FAQ

Does this generate a new Bitcoin private key?

No. It derives addresses from a private key you already provide. If you need a fresh random wallet keypair, use the wallet keypair generator instead.

Is my private key uploaded?

No. The derivation runs locally in your browser or CLI using pure Rust code. Treat private keys carefully anyway: avoid pasting real production funds into any tool you do not control.

Why are SegWit addresses missing for an uncompressed key?

P2SH-P2WPKH and P2WPKH spend paths are defined for compressed public keys. For an uncompressed key the tool returns the legacy P2PKH address and WIF, then marks the SegWit fields as requiring a compressed key.

Can I use WIF input?

Yes. WIF is decoded with Base58Check. Its version byte selects mainnet or testnet, and its optional compression flag selects compressed or uncompressed public-key handling, overriding the page controls.

Developer & Automation Access

Run it from the terminal

Same engine as this page, headless — via the gizza CLI:

gizza tool bitcoin-address "0000000000000000000000000000000000000000000000000000000000000001"

New to the CLI? Get gizza →

Open it by URL

Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:

https://gizza.ai/tools/bitcoin-address/?key=0000000000000000000000000000000000000000000000000000000000000001&network=mainnet&compressed=true

Machine-readable descriptor: tool.json — title + parameters JSON Schema for agents.