I heard there is a limit of 30. Not sure if true or not.

3 Answers 3

  • Transactions can have a maximum of 1232 bytes in them.
  • Each public key takes up 32 bytes
  • Each signing public key takes up 64 bytes, this includes the signature

If you only had public keys in the instruction data you could fit 38 public keys in 1232 but because you need extra bytes, for instruction data and signing public keys, 30 public keys / accounts passed in sounds like a reasonable maximum. Though in practice you may end up with slightly more or less.

There is a new functionality coming soon to Solana that will allow a limited number of accounts to be stored on chain, it should reduce public keys from 32 bytes to 4 bytes. This isn't live yet though and how it will work in practice isn't clear yet. But at the very least in the future you should be able to fit double the current number into a transaction.

  • any updates on it for 1.5 years? Nov 22, 2023 at 17:25
  • yes, look up transaction V2 on solana. There are lookup tables for reused accounts
    – Henry E
    Dec 5, 2023 at 13:48

Currently the limit is 30 due to transaction size limits

In the future, there will be address lookup tables that will increase this limit to 256 addresses per transaction, with up to 64 write-locked accounts


The total size of a Transaction is 1232 bytes, including:

Instruction data, instruction accounts and Signature(s).

So it will primarily be gated by the instruction data and account meta size.

Your milage may vary!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.