Crypto Payment QR Generator

Create BIP-21 Bitcoin and EIP-681 Ethereum payment request URIs and QR codes with optional amount, label and network. Addresses are checksum-validated and everything runs locally in your browser.

Everything is generated locally — no keys, no wallet connection, nothing leaves your browser.

Download PNG

Receive crypto with a payment QR code

Pick Bitcoin or Ethereum, paste your receiving address and optionally add an amount, label or network. The tool validates the address checksum first, assembles a standard BIP-21 or EIP-681 payment URI and renders it as a QR code you can download or copy. ETH amounts are converted to wei with exact integer math — no floating-point rounding. Everything is generated locally — no keys, no wallet connection, nothing leaves your browser.

Wallets understand standard payment URIs: BIP-21 for Bitcoin (bitcoin:address?amount=…&label=…) and EIP-681 for Ethereum (ethereum:address@chainId?value=…). Encode one into a QR code and the payer scans it instead of typing 42+ characters by hand — the single biggest source of lost-funds accidents in crypto payments.

This generator validates the receiving address before it will draw a code: Bitcoin addresses get full Base58Check or Bech32/Bech32m checksum verification, Ethereum addresses get format checks with a pointer to full EIP-55 validation. Ethereum amounts are converted to wei with integer BigInt math so no precision is lost. Everything — validation, URI assembly, QR rendering — happens locally; no keys, no wallet connection, and the amount is only a suggestion the payer can change.

FAQ

What are BIP-21 and EIP-681?

They are the standard payment URI formats that wallets understand. BIP-21 defines bitcoin: links with optional amount, label and message parameters. EIP-681 defines ethereum: links with an optional @chainId and a value expressed in wei. This page encodes those URIs into QR codes.

What happens when someone scans the code?

Their wallet app opens a pre-filled send screen: the receiving address is set, and the amount, label or network are applied when the URI includes them. Scanning never moves funds by itself — the payer still reviews and confirms the transaction in their own wallet.

Why is the amount only a suggestion?

The URI merely pre-fills the send form. Every wallet lets the payer edit the amount before sending, so treat it as a request rather than a guarantee, and confirm what actually arrived in your own wallet or a block explorer.

Why are ERC-20 tokens such as USDT or USDC not supported?

Token transfers use a different EIP-681 form that calls the token contract’s transfer function, and wallet support for that form is inconsistent — a code that silently fails in half the wallets is worse than none. This tool sticks to native coins: BTC on Bitcoin, ETH on the selected network.

Is my address or amount uploaded anywhere?

No. Everything is generated locally — no keys, no wallet connection, nothing leaves your browser. There is no server component: the URI is assembled and the QR code is drawn entirely on your device.

Which Ethereum networks can I pick?

Ethereum Mainnet, Base, Arbitrum One, OP Mainnet and Polygon. Mainnet URIs omit the chain id, while the other networks append @chainId so compatible wallets switch to the right network. The tool only requests the native coin of the selected network.

Does the tool check my address before generating?

Bitcoin addresses are fully validated first — Base58Check double SHA-256 for legacy 1… and 3… addresses, Bech32 or Bech32m checksums for bc1… addresses — so a typo cannot become a scannable code. Ethereum addresses are checked for the 0x-plus-40-hex format, and mixed-case ones can be checksum-verified in our Ethereum Address Validator.

Last updated: