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,
  validateContractName
} 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

// Validate contract names
const validContract = validateContractName('my-contract');
console.log('Valid contract name:', validContract); // true

const invalidContract = validateContractName('My Contract!');
console.log('Valid contract name:', invalidContract); // false

Address types and detection

Identify address types and networks:

Address generation

Generate addresses from keys:

Contract address handling

Work with contract principals:

Address conversion utilities

Convert between formats and networks:

Advanced validation patterns

Comprehensive address validator

Create a robust validation system:

Address formatting

Format addresses for display:

Input validation hooks

React hooks for address inputs:

Security considerations

Implement secure address handling:

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:

Assuming address format:

Last updated

Was this helpful?