Here's a full list of all the web-based bitcoin tools available on this site.
This is a toolbox for bitcoin programmers.
Never enter your actual private key or seed into a website. This is the easiest way to get your bitcoins stolen.
Tools for working with raw block data.
Block Hash
Create a block hash from a block header.
0 bytes
Used internally inside raw block headers
Used externally when searching for blocks on block explorers
Block Header
Decode and encode a block header.
This is the HASH256 of the hex block header. It's also in reverse byte order, because that's how block hashes are displayed in block explorers.
Merkle Root
Calculate the merkle root from a list of TXIDs.
A list of TXIDs separated by spaces, commas, or new lines. Quotes and brackets are ignored.
The TXIDs should be input in reverse byte order (as they appear on blockchain explorers), but they are converted to natural byte order before the merkle root is calculated.
The byte order as it comes out of the hash function
The byte order as shown on blockchain explorers
Target Bits
Convert between a target and its compact "bits" representation.
Target Adjustment
Calculate the next target value based on the current target and the time between blocks.
The target adjustment period is 2016 blocks. A block is mined on average every 600 seconds (10 minutes), so the expected time is 2016 * 600 = 1209600 seconds.
Ratio
The actual time divided by the expected time. We multiply the current target by this ratio to get the new target.
Note: This target value has been truncated slightly for storage in the bits field of the block header, and that's the target value that's actually used when mining.
Difficulty
Convert between a target and difficulty.
Version Bits
4 bytes
Tools for working with raw transaction data.
Transaction Builder
Build raw transaction data.
Raw Transaction Data
0100000001aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0000000000ffffffff0100000000000000000000000000
60 bytes
60 vbytes
Transaction Splitter
Split a raw transaction in to individual fields.
0 vbytes
Result
TXID
Create a TXID from raw transaction data.
Used internally inside raw transaction data
Used externally when searching for transactions on block explorers
wTXID
Create a wTXID from raw transaction data.
Also known as the transaction "hash" when using bitcoin-cli commands
bitcoin-cli
Script
Decode and encode a script.
0 characters
Sequence
Decode a transaction input's sequence field to see the features enabled.
The sequence as found in raw transaction data
Relative Locktime
Construct a relative locktime for a transaction input's sequence field.
x 512 = 0 seconds
Tools for generating, constructing, and converting raw bitcoin keys and addresses.
Private Key
Generate a random 256-bit number.
256 bits
32 bytes
Never use a private key generated by a website, or enter your private key into a website. Websites can easily save the private key and use it to steal your bitcoins.
Public Key
Calculate the public key from a private key.
A public key is just a point on an elliptic curve. The final public key is these coordinates in hexadecimal.
The elliptic curve is symmetrical along the x-axis, so a compressed public key only needs to store the full x-coordinate and whether the y-coordinate is even or odd.
An x-only public key is used in Taproot outputs. The corresponding y-coordinate is assumed to be even.
Never enter your private key into a website, or use a private key generated by a website. Websites can easily save the private key and use it to steal your bitcoins.
Address (Base58)
Encode the hash160 of a public key or script to a legacy address.
1 byte
Base58 encoding of the above data
Address (Bech32)
Encode a P2WPKH, P2WSH, or P2TR locking script to an address.
OP_0
OP_1
Type:
Bech32 encoding of the ScriptPubKey
WIF Private Key
Convert between a raw private key and Wallet Import Format.
Base58 encoding of above data
Checksum
Create a checksum for data.
Some bytes of data you want to create a checksum for
First 4 bytes of hash256(data)
Expected:
The original data with the checksum appended
Base58
Convert between hexadecimal and base58 encoding.
A legacy address or WIF private key for example
0 digits
Base58Check
Create a checksum for data and then encode to base58.
0 characterss
Bech32
Convert between a ScriptPubKey and a Bech32 address.
0 bits
Tools for generating seeds and addresses for use in HD wallets.
Mnemonic Seed
Generate a BIP 39 mnemonic sentence and seed for use in a HD wallet.
128 bits
4 bits
0 words
extra word
PBKDF2
Never use a seed generated by a website, or enter your seed into a website. Websites can easily save the seed and use it to steal all your bitcoins.
Extended Keys
Derive a child extended key from a parent extended key.
If you enter a seed, the parent extended key below will be the master extended key.
The master extended private key is created by putting the seed through HMAC-SHA512.
The index number of this child from its parent
Derivation Paths
Derive multiple private keys and addresses from a mnemonic sentence or seed using a specified derivation path.
Starting with m/, enter a full derivation path to a specific child key. For example, derivation paths are often shortened to m/44'/0'/0', but that assumes you want to see the first key in the receiving section, which is m/44'/0'/0'/0/0. In other words, you may want to add an /0/0 to the base path you get from a wallet to retrieve the addresses you expect.
m/
m/44'/0'/0'
m/44'/0'/0'/0/0
/0/0
m / purpose' / coin type' / account' / receiving or change / index
Never enter your seed into a website, or use a seed generated by a website. Websites can easily save the seed and use it to steal all your bitcoins.
Address (Extended Key)
Encode an extended key to an address.
Note: 1addresses (P2PKH)
Note: 3addresses (P2SH-P2WPKH)
Note: bc1addresses (P2WPKH)
How many derivations deep from the master key (0 if master key)
The first 4 bytes of the HASH160 of the parent's public key (00000000 if master key)
The index number of this key from its parent (0 if master key)
The last 32 bytes from the HMAC-SHA512 of the parent key (key+index, chain code) or (seed, passphrase)
Raw private key (32 bytes) or public key (33 bytes)
Base58 encoding of the serialized extended key and checksum
The hash functions used in Bitcoin.
HASH256
Double SHA-256. Used for hashing block headers, transaction data, and mostly anything that needs to be hashed in Bitcoin.
SHA-256(SHA-256(data))
HASH160
SHA-256 + RIPEMD-160. Used for shortening a public key or script before converting to an address.
A public key or script for example
RIPEMD-160(SHA-256(data))
SHA-256
Single SHA-256. Hash bytes of data using the SHA-256 hash function.
RIPEMD-160
RIPEMD-160. Hash bytes of data using the RIPEMD-160 hash function.
SHA-256 (Text)
Hash a string of text using the SHA-256 hash function.
Enter any string of characters
This is just a quick example of the SHA-256 hash function. It hashes text (ASCII characters) instead of hexadecimal bytes. Use SHA-256 and HASH256 instead for hashing actual raw data in Bitcoin using SHA-256.
HMAC-SHA512
Used when deriving extended keys.
seed or (private/public key + 4-byte index)
"Bitcoin seed" or chain code
HMAC-SHA512(data, key)
Create a seed for a HD Wallet from a mnemonic sentence (and optional passphrase).
mnemonic sentence
passphrase
PBKDF2(password, salt, iterations, algorithm, length)
Never enter your mnemonic sentence into a website, or use a mnemonic sentence generated by a website. Websites can easily save the seed and use it to steal all your bitcoins.
Tagged Hash
Create a hash of data with a tag prefix. Used in Schnorr sign, Schnorr verify, and Taproot.
SHA256(SHA256(string) || SHA256(string) || data)
Tools for working with elliptic curve mathematics and signatures.
ECDSA Sign
Sign the hash of a message using a private key.
This is typically the hash of some transaction data (that has been prepared for signing)
ECDSA Verify
Verify a signature using the hash of a message and a public key.
DER Signature
Convert between a raw ECDSA signature and a DER-encoded signature.
Schnorr Sign
Sign a message using a private key.
Schnorr Verify
Verify a signature for a public key and message.
Modular Inverse
Find the inverse of a number with a specific modulus.
EC Double
Double a point on the secp256k1 elliptic curve.
EC Add
Add two points on the secp256k1 elliptic curve.
EC Multiply
Multiply a point on the secp256k1 elliptic curve.
Tools for decoding and converting bytes found in raw transactions and blocks.
Reverse Bytes
Little Endian
Convert numbers to big-endian and little-endian byte orders.
Base Converter
Convert a number between different bases (binary, decimal, hexadecimal).
Compact Size
The first byte indicates which bytes encode the integer:
<=FC
FD
FE
FF
Note: Bytes encoding the integer are in little endian.
ASCII
Convert between bytes (in hexadecimal) and ASCII characters.
0x20
0x1f
0x80
See the ISO 646 encoding standard for details.
Unix Time
Convert the number of seconds since 1 Jan 1970, 00:00:00 to a date.
Unit Converter
Convert between common units of bitcoin.
Basic tools for understanding bits and bytes. Mostly educational and not particularly useful.
Bytes
0
0b0000000000000000
0d0
0x0000
Byte (ASCII)
Convert between a byte and an ASCII character.
The following characters are from Code Page 437, which is a popular 8-bit ASCII character set.
Basically, all ASCII character sets contain the same standard letters and numbers (between 0x20 and 0x7f). These are historically known as the printable characters.
0x7f
Code Page 437 extended this with an additional 128 characters (between 0x80 and 0xff) to include international, box drawing, and mathematical characters too. This additional set of characters is commonly referred to as "extended ASCII".
0xff
Code Page 437 also replaced the obsolete control characters (between 0x01 and 0x1f) from the original ASCII standard (e.g. ISO 646) with decorative characters instead.
0x01
There is no specific ASCII character set used in Bitcoin, but this is a popular one, and it's good for demonstrating how bytes can be assigned to characters.
Standard ASCII
Extended ASCII
Byte (Integer)
Byte (Hexadecimal)
Tip: The lowest value bit is on the right →
Tip: Half of a byte is called a "nibble". But that's not important to know for Bitcoin.
Bit Field
0b00000000000000000000000000000000
0x00000000
Byte
Bit
Note: Just click the bit to turn it "on" and "off".
I built these tools using PHP and HTMX.
Every time you enter some data into the tool, the data gets sent to my server, gets processed using a bitcoin library I've written in PHP, and reloads the form on the page with the results.
So everything you enter into these tools gets sent to my server for processing. As such, you should avoid entering any sensitive data like your own personal private keys into these tools (as it goes for any web-based bitcoin tool). I do not save any data you enter into these tools, but you only have my word.
As you can imagine, these bitcoin web tools are designed for educational purposes. I've coded them to the best of my ability, and I use them regularly for working with raw bitcoin data myself, but I wouldn't recommend using them for critically important bitcoin programming work.
In other words, have fun, but don't blame me if something goes wrong.
If you find any problems with these tools or have any suggestions for improvement, please send me an email at gregDELETEME@learnmeabitDELETEMEcoin.com.
gregDELETEME@learnmeabitDELETEMEcoin.com
If you're unlucky the tool you're using may process and return some data at the exact moment you've typed something new in. So if you want to be 100% confident about the results of your input, just hit Enter again.
Because it's the language I know best.
These tools would run faster if I coded them in Javascript, but all of my own personal bitcoin library code is written in PHP, so I thought it would more reliable to use my PHP code in conjunction with HTMX to create these interactive online tools for Bitcoin.
So you may not get the instant-response (or client-side processing) that you would get from a Javascript-based web tool, but using PHP allows me to process the data confidently and give you the most reliable results I can.
Or in other words, the reason they're so slow is because I didn't want to rewrite all my PHP code in God forbidden Javascript.
Enjoy.
Here are some other awesome online bitcoin tools that are better than mine: