Skip to main content

Tact language

Tact is a fresh programming language for TON Blockchain, focused on efficiency and ease of development. It is a good fit for complex smart contracts, quick onboarding and rapid prototyping.

Developed by TON Studio, powered by the community — at the start of 2025, the number of unique code1 contracts deployed on the mainnet reached almost 28 thousand, of which about 33% were written in Tact. You can view some selected projects here: Tact in production.

Tact has undergone a comprehensive security audit by Trail of Bits, a leading Web3 security firm.

Try it online!

Tact Documentation

Awesome Tact

Features

The most prominent and distinctive features of Tact are:

Security

Tact in production

Some selected software and applications based on contracts written in Tact, deployed in production, and consumed by end users:

Open source or source available
Closed source

See Tact in production on the Awesome Tact list.

Installation

Compiler

The Tact compiler is distributed as an NPM package bundled with the Tact standard library.

The recommended Node.js version is 22 or higher, while the minimum version is 18.

Use your favorite package manager to install it into a Node.js project:

# yarn is recommended, but not required
yarn add @tact-lang/compiler

# you can also use npm
npm i @tact-lang/compiler@latest

# or pnpm
pnpm add @tact-lang/compiler

# or bun
bun add @tact-lang/compiler

Alternatively, you can install it globally as such:

npm i -g @tact-lang/compiler

It will make the tact compiler available on your PATH, as well as:

  • a convenient unboc disassembler of a contract's code compiled into a Bag of Cells .boc format.
  • a formatter tact-fmt, which can format or check the formatting of individual Tact files and directories.

Tooling

Extensions and plugins
Security
Utility
  • Formatter (tact-fmt) — The official formatter. It ships with the Tact Language Server, VS Code extension, and as a standalone binary with the compiler. You can invoke it by running npx tact-fmt in your Tact projects.
  • BoC Disassembler (unboc) — Disassembler for .boc files. Ships as a standalone binary with the compiler. You can invoke it by running npx unboc in your Tact projects.

Getting started

For a quick start, read the "Let's start!" mini-guide in the Tact documentation. It uses the Blueprint development environment for writing, testing, and deploying smart contracts on TON Blockchain.

If you want more manual control, use tact-template. It's a ready-to-use template with the development environment set up, including the Tact compiler with TypeScript + Jest, a local TON emulator, AI-based editor support, and examples of how to run tests.

git clone --depth 1 https://github.com/tact-lang/tact-template

Community

If you can’t find the answer in the docs, or you’ve tried to do some local testing and it still didn’t help — don’t hesitate to reach out to Tact’s flourishing community:

Contributing

Contributions are welcome! To help develop the compiler, see the contributing guide.

Footnotes

  1. The "unique code" means that each contract in the data sample has at least one TVM instruction that differs from the other contracts, excluding many preprocessed wallets with everything inlined — even seqno and a public key for signature verification!