in-solana by Supanode

Jito Bundles and Tips Explained

TL;DR

  • - Jito bundles let you group up to 5 transactions that execute atomically and in order
  • - Tips go to Jito's tip payment program, not as priority fees
  • - Bundles are best for arbitrage, liquidations, and sequences where order matters

Jito bundles let you submit up to 5 transactions as a single atomic unit. Either all transactions in the bundle execute in the specified order, or none of them do. This is critical for MEV strategies, liquidations, and any workflow where transaction ordering matters.

How Jito bundles work

Jito operates a modified validator client (a fork of the Agave validator) that includes a block engine. When you submit a bundle:

  1. Your bundle (1–5 transactions) is sent to the Jito Block Engine via gRPC or JSON-RPC.
  2. The block engine simulates the bundle to verify it succeeds.
  3. Bundles are auctioned — higher tips win priority.
  4. The winning bundles are included in the next block the Jito validator produces.
  5. All transactions in the bundle execute sequentially and atomically.

Bundles are not forwarded through the normal TPU path. They go exclusively through the Jito Block Engine, which means they only land during slots where a Jito-enabled validator is the leader.

Tips vs. priority fees

Jito tips and Solana priority fees are different mechanisms:

FeaturePriority feeJito tip
Where it goesValidator block rewardJito tip payment program
Set viaComputeBudgetProgramTransfer instruction to tip account
Works withAll validatorsJito validators only
Ordering guaranteeNoYes (within bundle)
AtomicityNoYes (all-or-nothing)

A tip is a regular SOL transfer instruction added to the last transaction in your bundle. The transfer goes to one of the 8 Jito tip payment accounts:

const TIP_ACCOUNTS = [
  "96gYZGLnJYVFmbjzopPSU6QiEV5fGqZNyN9nmNhvrZU5",
  "HFqU5x63VTqvQss8hp11i4bVqkfRtQ7NmXwkiNPLNiU7",
  "Cw8CFyM9FkoMi7K7Crf6HNQqf4uEMzpKw6QNghXLvLkY",
  "ADaUMid9yfUytqMBgopwjb2DTLSKtCyDrRr9eZgNPMLN",
  "DfXygSm4jCyNCybVYYK6DwvWqjKee8pbDmJGcLWNDXjh",
  "ADuUkR4vqLUMWXxW9gh6D6L8pMSawimctcNZ5pGwDcEt",
  "DttWaMuVvTiduZRnguLF7jNxTgiMBZ1hyAumKUiL6d8u",
  "3AVi9Tg9Uo68tJfuvoKvqKNWKkC5wPdSSdeBnizKZ6jT",
];

Pick one at random to distribute load across validators.

When to use bundles

Use bundles when:

  • You need atomic execution of multiple transactions (arbitrage, liquidations).
  • Transaction ordering matters (sandwich protection, sequenced operations).
  • You want to avoid partial execution of a multi-step workflow.
  • You need frontrunning protection (your bundle is private until it lands).

Use standard sending when:

  • You have a single transaction with no ordering requirements.
  • You do not need atomicity.
  • You need to land during non-Jito validator slots.
  • Cost sensitivity — bundles require tips on top of priority fees.

Sending a bundle

Using the Jito JSON-RPC endpoint:

const response = await fetch("https://mainnet.block-engine.jito.wtf/api/v1/bundles", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    jsonrpc: "2.0",
    id: 1,
    method: "sendBundle",
    params: [serializedTransactions],
  }),
});

Each transaction in the params array must be a base58-encoded signed transaction. The last transaction must include the tip transfer.

Bundle simulation

Always simulate before submitting:

const simResult = await fetch("https://mainnet.block-engine.jito.wtf/api/v1/bundles", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    jsonrpc: "2.0",
    id: 1,
    method: "simulateBundle",
    params: [{ encodedTransactions: serializedTransactions }],
  }),
});

Simulation catches errors before you spend a tip on a bundle that would fail.

Tip amount strategy

There is no fixed minimum tip. The effective minimum depends on:

  • Current network congestion.
  • Competition from other bundles targeting the same opportunity.
  • The Jito validator’s slot frequency (roughly 15–20% of slots as of 2026-10-21).

Monitor the Jito tip dashboard for recent averages. During low congestion, 1,000–10,000 lamports may suffice. During high competition (new token launches, liquidation cascades), tips can reach 0.01–0.1 SOL or more.

Common pitfalls

  1. Tip in the wrong transaction. The tip must be in the last transaction of the bundle. Putting it elsewhere causes the bundle to be rejected.
  2. Stale blockhash. All transactions in the bundle must use the same recent blockhash. If the blockhash expires before a Jito leader slot, the bundle is dropped.
  3. Bundle too large. Maximum 5 transactions per bundle. Split larger workflows into multiple bundles if needed.
  4. Ignoring non-Jito slots. Bundles only land during Jito validator slots. For time-sensitive operations, also send via the standard path as a fallback.

FAQ

What percentage of slots are Jito validators? As of 2026-10-21, Jito-enabled validators produce roughly 15–20% of slots. This percentage fluctuates with stake distribution.

Can I send a single transaction as a bundle? Yes. A single-transaction bundle gives you the atomicity guarantee (trivially) and frontrunning protection. The transaction stays private until it lands or expires.

What happens if my bundle partially fails? It does not partially fail. Bundles are atomic — if any transaction in the bundle would fail, the entire bundle is rejected and none of the transactions execute.

Are Jito tips refunded if the bundle does not land? Yes. If the bundle is not included in a block, no tip is paid because the tip transaction never executes.

Updated: