This is has been around for a long time.

https://www.bitaddress.org/bitaddress.org-v3.3.0-SHA256-dec17c07685e1870960903d8f58090475b25af946fe95a734f88408cef4aa194.html

Its done client side, meaning you can load the page, disconnect from the internet, and generate the key pair.

You probably already know this but I mention just in case:

  • This is not really a wallet it is just a single key. So whoever uses this will want to sweep the key before spending it. There is no change address natively as this is a single key.
  • I would not put any significant amount on these address. As this is not the most secure method of storing bitcoin.

There maybe a newer solution out there for Vouchers. Other people will probably chime in with the new hotness.

Thank you!

If you are considering this, at least use a private key you've generated yourself (e.g., from a python script), and not the keys BitAddress creates using the browser in Javascript.

And for better security, load the page locally, and not from that website: https://github.com/pointbiz/bitaddress.org

Here's a way to create a paper wallet from python alone: https://medium.com/@sunnyday.james/how-to-make-a-bitcoin-paper-wallet-offline-with-a-little-python-440035f50a2

For bulk paper wallets, here's python to do that:

https://github.com/1200wd/bulkpaperwallets

And for those, there's the suggestion to not use pip to install, but use the source code, as mentioned here:

https://bitcoin.stackexchange.com/questions/112279/using-the-bitcoin-python-library-to-generate-private-key-noob-question#comment128245_112279

Nice. Local tools preferred for known reasons.