> For the complete documentation index, see [llms.txt](https://docs.leather.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.leather.io/learn/op-cat.md).

# What is OP\_CAT?

OP\_CAT is a Bitcoin script opcode that joins two pieces of data. Satoshi disabled it in 2010; BIP 347 proposes bringing it back.

OP\_CAT (concatenate) is a Bitcoin script opcode that joins two pieces of data into one. It was part of Bitcoin's original script language.

## History

Satoshi Nakamoto disabled OP\_CAT, with several other opcodes, in 2010. Together with other opcodes, it could let a script build very large data and exhaust a node's memory. Disabling it was the quickest fix.

In April 2024, a proposal to re-enable OP\_CAT in Tapscript, the script language of Taproot, received the number BIP 347. Tapscript limits data sizes, which removes the original memory problem.

## What OP\_CAT could enable

Supporters argue that combining data in scripts would allow:

* **Covenants:** rules on where coins can be sent next, such as vaults that delay withdrawals so the owner can stop a theft.
* **More trust-minimized bridges** and layers that verify more on Bitcoin itself.
* **Other constructions**, such as new signature schemes, built from simple parts.

## Concerns

* New opcodes can enable uses nobody planned, including ones that put more load on the network.
* Some argue the same goals can be met with more targeted proposals, or on layers.
* Changing Bitcoin's rules needs a soft fork, which requires broad agreement among users, developers and miners.

A BIP number means the proposal is documented, not that it is accepted or activated.
