Validate any Bitcoin address - P2WSH, P2WPKH, P2SH, P2PKH - Mainnet & Testnet
npm install bitcoin-address-validation


Validate Bitcoin addresses - P2WSH, P2WPKH, P2PKH, P2SH and P2TR.
``js
validate('bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4');
==> true
getAddressInfo('bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4');
==> {
bech32: true,
network: 'mainnet',
address: 'bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4',
type: 'p2wpkh'
}
`
to your Javascript project dependencies using Yarn:
`bash
yarn add bitcoin-address-validation
`
Or NPM:
`bash
npm install bitcoin-address-validation --save
`Usage
$3
Import using ES6:`js
import { validate, getAddressInfo } from 'bitcoin-address-validation';
`Or AMD:
`js
const { validate, getAddressInfo } = require('bitcoin-address-validation');
`$3
validate(address) returns true for valid Bitcoin addresses or false for invalid Bitcoin addresses.`js
validate('17VZNX1SN5NtKa8UQFxwQbFeFc3iqRYhem')
==> truevalidate('invalid')
==> false
`#### Network validation
validate(address, network) allows you to validate whether an address is valid and belongs to network.`js
validate('36bJ4iqZbNevh9b9kzaMEkXb28Gpqrv2bd', 'mainnet')
==> truevalidate('36bJ4iqZbNevh9b9kzaMEkXb28Gpqrv2bd', 'testnet')
==> false
validate('2N4RsPe5F2fKssy2HBf2fH2d7sHdaUjKk1c', 'testnet')
==> true
`$3
getAddressInfo(address) parses the input address and returns information about its type and network.If the input address is invalid, an exception will be thrown.
`js
getAddressInfo('17VZNX1SN5NtKa8UQFxwQbFeFc3iqRYhem')
==> {
address: '17VZNX1SN5NtKa8UQFxwQbFeFc3iqRYhem',
type: 'p2pkh',
network: 'mainnet',
bech32: false
}
`$3
This library supports the following Bitcoin networks:
mainnet, testnet and regtest.> Note: When dealing with non-bech32 addresses, all
regtest addresses will be recognized as testnet addresses.
$3
If you're using TypeScript, the following types are provided with this library:
`ts
enum Network {
mainnet = "mainnet",
testnet = "testnet",
regtest = "regtest",
}enum AddressType {
p2pkh = 'p2pkh',
p2sh = 'p2sh',
p2wpkh = 'p2wpkh',
p2wsh = 'p2wsh',
p2tr = 'p2tr',
}
type AddressInfo = {
bech32: boolean;
network: Network;
address: string;
type: AddressType;
}
`#### TypeScript usage
`ts
import { validate, getAddressInfo, Network, AddressInfo } from 'bitcoin-address-validation';validate('36nGbqV7XCNf2xepCLAtRBaqzTcSjF4sv9', Network.mainnet);
==> true
const addressInfo: AddressInfo = getAddressInfo('2Mz8rxD6FgfbhpWf9Mde9gy6w8ZKE8cnesp');
addressInfo.network;
==> 'testnet'
``Rui Gomes
https://ruigomes.me
The MIT License (MIT). Please see LICENSE file for more information.