Address Validation

Validate and format Stacks addresses and principals.

Overview

Stacks addresses follow specific formats that differ between mainnet and testnet. Proper validation ensures your application handles addresses correctly, preventing loss of funds and improving user experience. This guide covers address validation, formatting, and conversion utilities.

Basic address validation

Validate Stacks addresses:

basic-validation.ts
import { 
  validateStacksAddress
} from '@stacks/transactions';

// Validate standard addresses
const isValidMainnet = validateStacksAddress('SP2J6Y09JMFWWZCT4VJX0BA5W7A9HZP5EX96Y6VZY');
console.log('Valid mainnet:', isValidMainnet); // true

const isValidTestnet = validateStacksAddress('ST2JHG361ZXG51QTKY2NQCVBPPRRE2KZB1HR05NNC');
console.log('Valid testnet:', isValidTestnet); // true

const isInvalid = validateStacksAddress('invalid-address');
console.log('Valid:', isInvalid); // false

Address types and detection

Identify address types and networks:

Contract address handling

Work with contract principals:

Address conversion utilities

Convert between Stacks and Bitcoin address formats:

Advanced validation patterns

Address formatting

Format addresses for display:

Testing utilities

Test address validation:

Best practices

  • Always validate user input: Never trust addresses from users

  • Check network compatibility: Ensure addresses match your network

  • Handle edge cases: Contract addresses, multisig, etc.

  • Cache validation results: Avoid redundant validation

  • Provide clear error messages: Help users fix invalid inputs

Common mistakes

Not checking network type:

Last updated

Was this helpful?