The JavaScript
for Web3

Get everything you need to build your Web3 application.

npm i @tatumio/tatum
GitHub license

Why Developers Build With Tatum
"Tatum helps us build robust product solutions in a fraction of the time."
zac barron

Zac Barron
Product Lead at Binance

"Building a product in the crypto space is hard. Making it work reliably across chains - even harder. Tatum helped us meet our deadline."
david spiltzer

David Spitzer-Dulagan
CTO at Limewire

"Tatum accelerates our web3 development."
hitoshi harada

Hitoshi Harada
Co-founder & CPO at Alpaca

Code Once,
Deploy Anywhere

Tatum SDK is a unified, flexible developer tooling for building applications using 90+ blockchains. It's the go-to open source SDK for Web3.

npm i @tatumio/tatum
Copy Code

Speed Up Delivery With Lean Code

With the Tatum SDK you'll reduce the length of your code by at least 90% helping you launch your dApp faster.

Without Tatum

// Fetch NFT balance.

const Web3 = require('web3');
const web3 = new Web3('https://rpc.provider/Your_Access_key'); 

const walletAddress = 'YOUR_WALLET_ADDRESS';
const abiDecoder = require('abi-decoder');

async function getNFTsForWallet() {
  try {
    const latestBlockNumber = await web3.eth.getBlockNumber();

    for (let i = 0; i <= latestBlockNumber; i++) {
      const block = await web3.eth.getBlock(i, true);

      if (block && block.transactions) {
        for (const tx of block.transactions) {
          const receipt = await web3.eth.getTransactionReceipt(tx.hash);

          if (receipt && receipt.logs) {
            abiDecoder.addABI(yourNFTContractABI); // Replace with the ABI of the NFT contract

            for (const log of receipt.logs) {
              const decodedLogs = abiDecoder.decodeLogs([log]);

              for (const decodedLog of decodedLogs) {
                if (decodedLog && === 'Transfer') {
                  const from =[1].value;
                  const to =[2].value;

                  if (to.toLowerCase() === walletAddress.toLowerCase()) {
                    console.log('Received NFT:', decodedLog);
  } catch (error) {
    console.error('Error:', error);


Using Tatum

// Fetch NFT balance using Tatum SDK.

import { TatumSDK, Network } from '@tatumio/tatum';

const tatum = await TatumSDK.init({ network: Network.ETHEREUM });

const balance = await tatum.nft.getBalance({addresses: [‘your address’]});

90+ Supported Blockchain Protocols


End Users




In Transaction Volume

Gain Usage Insights, Analytics and More

Tatum gives you a powerful Dashboard to track how your app is used.

Sign Up

Build Your First App!

Follow our easy to use guide and utilize our templates to build your first blockchain application.

Get started

Get Involved

Join the community of developers building with Tatum. Share your project and help others build theirs.