Loading the site, please wait.

Offline Bitcoin Wallet

Generate Secure Addresses

GitHub: github.com/coinsecure/Paper-Wallet.  

Open Source, JavaScript, Client-Side


Show generated addresses as:

These QR codes are robust, they will work even if part is missing. All private keys are shown in Wallet Import Format (WIF).

Select your preferred design:


Why this site?

This site is created to provide bitcoin users with a way to create perfectly secure offline addresses.

Almost all existing programs for generating bitcoin addresses aren't using truly random source of numbers to constructing private keys, but are instead using pseudorandom numbers which exposes users to security risks - for more information read below.

This site solves this problem by generating truly random numbers from user's mouse movements.

What is offline address?

Offline address is a public address whose private key never existed on a computer that's connected to the internet.

Today's computers can be attacked and hacked in a lot of ways. By never storing address on a computer while it's connected to the internet, user can be sure that there is no way address could have been stolen. That's why this site will warn the user if he attempts to create bitcoin addresses while connected to the internet.

Offline addresses can be used as saving accounts - user can send bitcoins to his address, while keeping his private key offline.

Serious security risk when generating private keys using bad randomness!

There is a serious security problem when generating bitcoin private keys and corresponding addresses using pseudorandom numbers.

To make sure your bitcoins are secure, you have to store them on an address that was created with truly random private key.

The private key is basically a big random number - what makes it secure is the fact that it's hard to guess it, because there is a huge number of valid private keys. Chances that someone else runs into your private key are very small (they could be using all computers in the world for their whole life, and the chance to run into your private key would still be negligible).

The problems appear if your private key isn't really random.

If you create your private key using pseudorandom numbers (and most wallet software today still use pseudorandom numbers, although security experts strongly advise against it), one small part of the key is random, and the rest is computed from that small first part, and isn't random. Resulting with the fact that only small limited subset of all possible valid private keys can be generated that way.

Someone can try generating all private keys from that small subset of private keys, and he'd be able to do that relatively fast (within just a few days), after which he'd be able to spend bitcoins from addresses tied to those private keys.

This site doesn't have this problem because all 256 bits needed to create each private key are provided from truly random numbers generated by shaking your mouse. Meaning that those private keys don't belong to any limited set of private keys - which makes them as secure as possible.

There is total of 115792089237316195423570985008687907852837564279074904382605163141518161494337 possible valid private keys. This site is capable of generating any of those private keys.

If you're using private keys generated from standard pseudorandom sequence of numbers generated in programming languages like C or C++, the total possible number of private keys that can be generated that way is: 4294967296 (if you're using programs written in Java, the number is: 281474976710656).

The bigger the number of possible private keys from which your key was created - the lower is the chance that someone will run into your private key.

Truly random numbers can't be generated inside a software, because there is no way software can roll a physical dice. That's why most application use pseudorandom numbers generated using algorithms like LDG, which are simple mathematical equations that define how to compute next pseudorandom number from previous pseudorandom number (and those equations are well known).

Truly random numbers have to be provided to the software. That's why this site uses data from user's mouse to provide randomness. Dots flying around the screen represent real data collected from user's mouse, which is used to generate truly random private keys.

Pseudorandom numbers shouldn't be used inside applications where security is critical. See this explanation.

However, most bitcoin wallets today use pseudorandom numbers anyway. If your favorite wallet doesn't generate secure addresses (check their site to see if they mention mouse movements or other human provided input as source of randomness), please contact them, and explain the security risk. In the meantime, you can generate your addresses using this site and import them into your wallet.

Other security mechanisms

  • This site generates private keys in your browser, not on our servers. Your private keys never leave your computer.
  • This site will always warn you if you're online when generating addresses.
  • This site doesn't store any cookies.
  • This site doesn't include any external JavaScript code automatically. No ads, and no analytic or tracking software (unless user decides to share this site on social platforms).
  • This site is supported only by donations made to: 17edQ3AseQtMHibLwCmTCqb9gk7zvj63cg

How to be more secure?

If you're looking for the ultimate approach:

  1. Download a live disc and compare it's checksum to original source.
  2. Boot your machine from a live disc.
  3. Load OfflineAddress.com.
  4. Disconnect from internet (unplug all network cables, turn off WiFi and Bluetooth, and turn on airplane mode if you have it).
  5. Generate addresses and print them out.
  6. Restart your machine.

Using existing operating system:

  • Make sure you have the newest and updated antivirus software.
  • Make sure your operating system isn't (and wasn't ever) infected.

Other important considerations:

  • Use your own internet connection which isn't shared with other people.
  • Make sure you're behind secure firewall.
  • Use your own private device.
  • Try to use only open source software.
  • Print QRcodes/keys/notes instead of copying them (some viruses steal user's clipboard content).

Why do I get two addresses for each private key imported into my wallet?

For each private key there is one public key, which it used to define public address.

However, there are two standard formats for writing down public keys, compressed and uncompressed format (from mathematical perspective those are two different way to define the same thing). Since your wallet software doesn't know which format was used, it uses both of them. This site generates uncompressed format of public keys in order to be compatible with older clients.

Is this site better then BitAddress.org?

BitAddress.org is a great site, and it's capable of creating fairly secure addresses (better then most bitcoin clients today).

If you used it before, please continue using it (or at least donating to it). This site isn't created to steal users from BitAddress.org.

Is this site discussed somewhere?

There is a discussion on BitcoinTalk.org: bitcointalk.org/index.php?topic=399452.

Also, you can see what developers discussed between themselves here.

Generate Bitcoin addresses.

Shake your mouse to add randomness - to create secure addresses.


Unfortunately, your browser is currently unsupported. Please use one of the supported browsers.

Supported browsers: Opera, Firefox, Safari, and Konqueror.

We could be the bad guys and steal your Bitcoins - we're not, but we could be!

Offline addresses should never exist on computer that's connected to the internet!

Please click cancel, unplug network cable and disconnect from any Wi-Fi (or turn on Airplane mode).

(To be secure in case your device is infected, we advise you to use this service from a live disc)

Please wait...
This might take a while.