Address Lookup Tables Explained for pump.fun Bundles

What Solana address lookup tables are, why a pump.fun launch bundle cannot fit in 1232 bytes without one, and how one table gets 11 wallets into 5 transactions.

By DevBundler Team · · 5 min read

The short answer

An address lookup table (ALT) is an on-chain list of account addresses that a Solana transaction can reference by 1-byte index instead of the full 32-byte address. pump.fun launch bundles need one because the create transaction and its buys reference so many accounts that they would not fit in Solana's 1232-byte transaction limit otherwise.

Key takeaways

  • Every Solana transaction must fit in 1232 bytes, and each account address normally takes 32 of them.
  • An address lookup table stores addresses on chain so a transaction can point to each one with a 1-byte index.
  • Signers cannot come from a lookup table: every wallet that signs still costs a full address plus a 64-byte signature.
  • Without an ALT, even the pump.fun create transaction with buys would not fit the size limit.
  • DevBundler creates one reusable lookup table per account, once, for about 0.005 SOL.

1232 bytes. That is the most any Solana transaction can weigh, signatures, instructions and all. An account address takes 32 of those bytes. A pump.fun buy touches more than a dozen accounts: the global config, the fee recipient, the mint, the bonding curve and its token account, the buyer, the buyer's token account, several programs and a few more. Add a create instruction and a handful of buyers and you run out of room long before you run out of wallets.

Address lookup tables are how bundlers get around that limit. They are not a trick or a workaround. They are a standard Solana feature built for exactly this problem.

Where does the 1232-byte limit come from?

Solana sends transactions over the network in single UDP packets, and the limit is sized so a transaction fits in one packet with room for headers. It is not something a tool can raise. Every transaction your bundler builds has to fit, or it is rejected before it is ever sent.

1232

bytes, the maximum size of a Solana transaction

32

bytes for a full account address

1

byte for an address loaded from a lookup table

64

bytes for each signature

What is an address lookup table?

An address lookup table, usually shortened to ALT, is an on-chain account that holds a list of addresses. Once the table exists, a versioned (v0) transaction can say "use the table at this address, and load entries 3, 7, 12 and 19 from it". Each of those entries costs 1 byte in the transaction instead of 32.

A single table can hold up to 256 addresses, which is why a 1-byte index is enough to point at any of them.

Without a lookup tableWith a lookup table
Cost per non-signer account32 bytes1 byte (plus 32 once for the table itself)
15 shared accounts480 bytes15 bytes + 32 for the table address
Transaction versionLegacy or v0v0 only

That is a saving of over 400 bytes on shared accounts alone, in a transaction that only has 1232 to work with.

What cannot go in a lookup table?

Signers. Any account that signs a transaction must be listed in full in the transaction itself, and each signer adds a 64-byte signature on top. So every wallet that buys in a transaction costs at least 96 bytes no matter what, plus its own token account and the instruction data for its buy.

How a lookup table is set up

Creating a lookup table is a short on-chain process. It only needs to happen once per table.

Lifecycle of a lookup table
  1. Create

    a transaction creates an empty table owned by your authority wallet

  2. Extend

    another transaction adds the addresses you want to reference

  3. Wait a slot

    newly added addresses become usable after the next slot

  4. Use

    every later v0 transaction can load those addresses by index

The table is an ordinary account, so it needs rent, roughly in proportion to how many addresses it stores. If you ever want that rent back, the authority can deactivate the table and, after a cooldown, close it.

How DevBundler uses one

When you pick a dev wallet on DevBundler's launch page, it prepares a lookup table for your account in the background. It is a one-time setup of about 0.005 SOL, and the same table is reused for every launch after that, so you do not pay it again for each coin.

A launch table like this is most useful for the accounts that every pump.fun buy repeats, such as the program, its global config and fee accounts, and the system and token programs. With those shrunk to 1 byte each, a launch then fits into one Jito bundle: the create and dev buy in the first transaction and up to 10 more wallet buys across the remaining four, with the tip in the last. Without the table, even the create transaction plus its buys would not fit under 1232 bytes.

Common questions about lookup tables

Does a lookup table make my transactions cheaper? Not much directly. Solana's base fee is per signature, not per byte. The real benefit is fitting more into each transaction, which means fewer transactions per launch, and that is what lets a full launch fit inside one 5-transaction bundle.

Can someone else use my lookup table? Anyone can read a table and reference it in their own transactions, because it is just a list of public addresses. Only the authority can add to it, deactivate it or close it.

What if the table is not ready? Newly added addresses can only be used after the slot in which they were added. A tool that creates a table and immediately tries to use it in the same slot will fail. DevBundler handles this by preparing the table ahead of the launch.

Where lookup tables fit in the bigger picture

A bundled launch rests on three pieces working together: the Jito bundle that makes everything land together, the tip that gets it picked up, and the lookup table that makes it fit. How Jito bundles work on Solana covers the first two. If you are curious about the rent side of all the accounts a launch creates, Solana rent and token accounts explained breaks that down, including how to get token account rent (about 0.002 SOL each) back later.

Frequently asked questions

›What is an address lookup table on Solana?

It is an on-chain account that stores a list of addresses. A versioned (v0) transaction can then reference any address in that list with a 1-byte index instead of writing out all 32 bytes.

›Why do pump.fun bundlers need address lookup tables?

A launch transaction references many accounts, and Solana caps a transaction at 1232 bytes. A lookup table shrinks most of those references from 32 bytes to 1, which is what lets several wallet buys fit in each transaction.

›How much does an address lookup table cost?

The table is an account, so it needs rent proportional to how many addresses it holds. In DevBundler, the one-time setup for your account's reusable table is about 0.005 SOL.

›Can I put wallet signers in a lookup table?

No. Accounts that sign a transaction must be listed in full in the transaction itself. Only non-signing accounts can be loaded from a lookup table.

Keep reading