> For the complete documentation index, see [llms.txt](https://docs.stacks.co/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.stacks.co/reference/stacks.js/stacks-bitcoin-staking/btcaddress/btcaddress-stringify.md).

# BtcAddress.stringify

Encodes a [BtcAddressRepr](/reference/stacks.js/stacks-bitcoin-staking/btcaddress/btcaddressrepr.md), or a Clarity `{ version, hashbytes }` tuple, as a Bitcoin address string for a given network. Pure computation, no network call. Exported in the `BtcAddress` namespace.

***

### Usage

```ts
import { BtcAddress, PoXAddressVersion } from '@stacks/bitcoin-staking';
import { hexToBytes } from '@stacks/common';
import { Cl } from '@stacks/transactions';

const data = hexToBytes('751e76e8199196d454941c45d1b3a323f1433bd6');

BtcAddress.stringify({ version: PoXAddressVersion.P2WPKH, data }, 'mainnet');
// 'bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4'

BtcAddress.stringify({ version: PoXAddressVersion.P2WPKH, data }, 'testnet');
// 'tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx'

// Same address from a Clarity tuple
const tuple = Cl.tuple({ version: Cl.buffer(Uint8Array.of(0x04)), hashbytes: Cl.buffer(data) });
BtcAddress.stringify(tuple, 'mainnet');
// 'bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4'
```

#### Notes

* Versions `0x00` to `0x03` encode as base58 addresses, with `P2SHP2WPKH` and `P2SHP2WSH` written as P2SH addresses. `0x04` and `0x05` encode as bech32, `0x06` as bech32m.
* The network picks the prefix: `bc` and base58 bytes `0x00`/`0x05` for `'mainnet'`, `tb` and `0x6f`/`0xc4` for `'testnet'`, `bcrt` and `0x6f`/`0xc4` for `'devnet'` and `'mocknet'`.
* An argument with a `type` field is read as a Clarity tuple. A tuple without buffer `version` and `hashbytes` entries throws an `Error` starting with `Invalid argument`.
* An unknown version throws `Unexpected PoX address version: <n>`. Hash bytes of the wrong length throw `Invalid PoX address hashbytes: version <v> requires <n> bytes, got <m>`.
* A `StacksNetwork` object that matches no known network throws `networkNameFrom: unrecognized network object`.

[**Reference Link**](https://github.com/stx-labs/stacks.js/blob/6101c99efe5a9616ce7e16cef68e28fd10676e7e/packages/bitcoin-staking/src/btc-address.ts#L196-L242)

***

### Signature

```ts
function stringify(
  address: BtcAddressRepr | TupleCV,
  network: StacksNetworkName | StacksNetwork
): string;
```

***

### Returns

`string`

The Bitcoin address.

***

### Parameters

#### address (required)

* **Type**: `BtcAddressRepr | TupleCV`

The address to encode: a [BtcAddressRepr](/reference/stacks.js/stacks-bitcoin-staking/btcaddress/btcaddressrepr.md), or a Clarity tuple with one-byte buffer `version` and buffer `hashbytes`, such as one built with `Cl.tuple`.

#### network (required)

* **Type**: `StacksNetworkName | StacksNetwork`

The network to encode for: a name such as `'mainnet'` or `'testnet'`, or a [StacksNetwork](/reference/stacks.js/stacks-network/network/stacksnetwork.md) object.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.stacks.co/reference/stacks.js/stacks-bitcoin-staking/btcaddress/btcaddress-stringify.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
