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 table | With a lookup table | |
|---|---|---|
| Cost per non-signer account | 32 bytes | 1 byte (plus 32 once for the table itself) |
| 15 shared accounts | 480 bytes | 15 bytes + 32 for the table address |
| Transaction version | Legacy or v0 | v0 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.
Create
a transaction creates an empty table owned by your authority wallet
Extend
another transaction adds the addresses you want to reference
Wait a slot
newly added addresses become usable after the next slot
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
How Jito Bundles Work on Solana (Explained for Devs)
How a Jito bundle travels from your app to a Solana block: the block engine, the tip, ordering, atomic execution, and why a bundle sometimes never lands.
· 5 min read
What Is a pump.fun Bundler? A Clear Definition
A pump.fun bundler creates your coin and buys from several wallets in one atomic Jito bundle. What it is, how it works, what it costs and what it cannot do.
· 7 min read
Solana Rent and Token Accounts Explained for pump.fun Devs
What Solana rent is, why every token account holds about 0.002 SOL, why launch wallets need extra SOL, and how to get that rent back by closing accounts.
· 5 min read