> For the complete documentation index, see [llms.txt](https://docs.j.tools/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.j.tools/tools/trade/multi-swap.md).

# Multi Swap

[Multi Swap](https://j.tools/en/tools/multi-swap) buys or sells one Solana token from a whole list of imported wallets in a single coordinated run. You pick the token and a direction, set how much each wallet trades, and the tool routes every trade directly to a live market (a Pump.fun bonding curve, PumpSwap, or Raydium) while a live terminal shows each wallet's status. It handles up to 1000 wallets per run. Each wallet gets its own amount logic and pacing, and any that fail drop into a retry queue.

```mermaid
flowchart TD
  A[Pick the token and the wallets] --> B[Set the amount per wallet]
  B --> C[Build the swaps]
  C --> D[You sign in the browser]
  D --> E[Broadcast through the server fan-out]
  E --> F[Per-wallet results come back]
  classDef brand fill:#EF2A2A,stroke:#EF2A2A,color:#ffffff,font-weight:bold;
  classDef soft fill:#1f2937,stroke:#374151,color:#e5e7eb;
  class E brand;
  class A,B,C,D,F soft;
```

{% hint style="warning" %}
**About fees.** Every action has two costs: the Solana **network fee** paid to validators, and the **J Tools platform fee**. The platform fee always shows in the app before you confirm, and nothing is charged until you sign. Fees can change over time, so trust the in-app summary rather than a number you saw once.
{% endhint %}

## When to use this

* Your project needs to buy or sell from many wallets in one go, instead of trading each wallet by hand.
* You manage a large set of wallets and want strict per-wallet ordering, status tracking, and retries in one place.
* You trade Pump.fun, PumpSwap, or Raydium markets and want the tool to auto-detect the venue, or to pin one specific market.

For a single trade from one wallet, use [Swap](/tools/trade/swap.md). When several trades must land together in the same block, use [Bundled Trade](/tools/trade/bundled-trade.md), which leans on [Jito bundles](/concepts/bundles-and-jito.md).

## Before you start

* A connected operator wallet ([how to connect](/getting-started/quick-start.md)). It anchors the run's fee records and referral credit. It does not fund the trades.
* The private keys for the wallets that will actually trade, imported through the **Import Wallets** modal. Keys stay in your browser tab and are never transmitted.
* Enough SOL in each trading wallet to cover the trade amount **plus** a per-wallet reserve (platform fee, a network margin, new token-account rent, the priority fee, and any relay tip).
* A token mint with a live market on a Pump.fun curve, PumpSwap, or Raydium. Pick it with the built-in token selector. If you are new to how these venues hold liquidity, read [DEXes and liquidity](/concepts/dexes-and-liquidity.md).

{% hint style="warning" %}
The operator wallet and the trading wallets are separate. The operator wallet pays nothing toward the swaps. Every wallet in the list must hold its own SOL, or its row will fail when the reserve does not cover the trade.
{% endhint %}

## Step by step

{% stepper %}
{% step %}

### Connect and pick the token

Connect your operator wallet. Choose the token (paste a mint or select it), then choose **Buy** or **Sell**. The page probes the Pump.fun, PumpSwap, and Raydium markets for that token and shows which ones exist.
{% endstep %}

{% step %}

### Choose a venue

Leave routing on **Auto** to let the tool detect the live market, or pin **Pump.fun**, **PumpSwap**, or **Raydium** to trade strictly on that one market.
{% endstep %}

{% step %}

### Import the wallets

Open the **Import Wallets** modal and add the private keys for the wallets you want to trade from. Keys stay in the tab. Balances are fetched in bulk so you can see what each wallet holds.
{% endstep %}

{% step %}

### Set the amount logic

For buys, choose Fixed, Range, percent of balance, or Max. For sells, choose 25, 50, 75, 100 percent, or a custom percent of each wallet's own holdings. You can edit any single row to override the bulk setting.
{% endstep %}

{% step %}

### Set the execution knobs

Pick a speed, a slippage setting, a priority fee tier, optional interval pacing, and an optional Jito relay tip. Read the cost line: platform fee per transaction, the network estimate, rent for any new token account, and the relay tip if it is on.
{% endstep %}

{% step %}

### Simulate, then start

Click **Simulate** to preview which wallets will execute and which will be skipped. When it looks right, click **Start Multi Swap**. The server builds the unsigned transactions, your browser signs them, and the server broadcasts, resends, and confirms. Watch the per-wallet status and the terminal feed. Use **Retry failed** to rerun only the wallets that failed, and **Export CSV** for the results.
{% endstep %}
{% endstepper %}

[**Open Multi Swap in the app →**](https://j.tools/en/tools/multi-swap)

{% hint style="info" %}
**About wallet warnings.** Some tools sign more than one thing in a single step, for example creating a token and its metadata together. Phantom can show a caution banner for these multi-step transactions. The banner is expected here and does not mean something is wrong. Read what you are signing, then approve.
{% endhint %}

## The options, explained

| Field         | What it does                                                                                                                                                                               |
| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Side          | Buy or sell direction for the whole run.                                                                                                                                                   |
| Token         | The Solana token to trade, chosen with the built-in token selector.                                                                                                                        |
| Route mode    | Venue routing: Auto, Pump.fun curve, PumpSwap, or Raydium. Auto detects the live market; pinning trades on that market only.                                                               |
| Buy mode      | Per-wallet buy size: Fixed (same SOL each), Range (random SOL within a min/max), Percent (a share of each wallet's SOL balance), or Max (spend everything above the fee and rent reserve). |
| Sell mode     | Sell size as a percent of each wallet's token holdings: 25, 50, 75, 100, or a custom percent.                                                                                              |
| Slippage      | Auto (starts near 1 percent and steps up toward 3 percent on slippage failures with a fresh quote) or a fixed percent. Clamped to 1–5000 bps.                                              |
| Priority tier | Priority fee preset per transaction: Auto reads the fee market, or step it up manually through Fast, Turbo, and Ultra.                                                                     |
| Speed         | Execution pace: Careful (small groups with random pauses), Normal (waits for confirmations and re-quotes between chunks), or Turbo (fires as fast as possible).                            |
| Interval      | Anti-clustering pacing: Off (fast parallel chunks), Fixed (the same gap between wallets), or Random (a random gap in a min/max range) so a run looks less like one bundle.                 |
| Relay tier    | Optional Jito tip relay. Off by default. When on, it adds a Jito tip to every transaction and mirrors each send to the Jito Block Engine for a priority lane.                              |
| Wallet count  | How many imported wallets are in the run. The hard cap is 1000 per run.                                                                                                                    |

{% hint style="info" %}
The cost line covers the platform fee, network estimate, token-account rent, priority fee, and relay tip. It does **not** include DEX fees or price impact. Pump.fun markets also charge their own protocol and creator fee as extra SOL on top of the trade amount, so the page reserves a small headroom for that. On Raydium, the venue takes its fee from the swap output.
{% endhint %}

## Supported markets

Multi Swap routes each trade directly to a live market. There is no aggregator step.

{% tabs %}
{% tab title="Pump.fun curve" %}
Trades against a token's Pump.fun bonding curve. On **buys**, the page watches aggregate impact: it warns near 60 percent of the remaining curve depth and blocks at 100 percent or more until you explicitly confirm, because a large run can move the price and graduate the token mid-run. Pump.fun also charges its own protocol and creator fee in SOL on top of your trade amount.
{% endtab %}

{% tab title="PumpSwap" %}
Trades on the PumpSwap market for the token, used once a token has a PumpSwap pool. Pin this venue to trade there only, or leave routing on Auto to let the tool find it.
{% endtab %}

{% tab title="Raydium" %}
Trades on the token's Raydium market. Raydium takes its swap fee from the output of each trade rather than as a separate SOL charge.
{% endtab %}
{% endtabs %}

{% hint style="warning" %}
Multi Swap routes directly to these three venues only. The interface may mention Orca and Meteora, but those are labeled coming soon and are not selectable routes today. Use Pump.fun curve, PumpSwap, or Raydium.
{% endhint %}

## If something goes wrong

* **A wallet is skipped or fails.** Its balance likely did not cover the trade plus the reserve, or its market was not live. Top it up, then use **Retry failed** to rerun only the failed wallets.
* **Buys blocked on a Pump.fun curve.** The run would consume too much of the remaining curve depth. Lower the per-wallet amount, reduce the wallet count, or confirm the warning if you accept the price move.
* **Slippage failures.** On Auto slippage, the tool re-quotes and steps the tolerance up toward 3 percent. If trades still fail, the market is moving fast; try a smaller size or a higher priority tier.
* **Transaction expired.** The network was busy and a blockhash aged out. The server resends and confirms; remaining failures show in the terminal and can be retried.
* **Phantom shows a caution banner.** These are fee-bearing, multi-signer transactions, so the banner can appear. Read what you are signing, then approve.

For the full list, see the [Error codes reference](/reference/error-codes.md).

## FAQ

<details>

<summary>Does the connected wallet pay for the trades?</summary>

No. The operator wallet you connect anchors the fee records and referral credit. The SOL for each trade comes from the imported wallet doing that trade.

</details>

<details>

<summary>Where do my imported private keys go?</summary>

They stay in your browser tab. The keys sign server-built transactions locally and are never transmitted. They are cleared on refresh, and a finished run rehydrates read-only from the last job.

</details>

<details>

<summary>How many wallets can one run handle?</summary>

Up to 1000 per run. The amount logic and pacing apply across the whole list, and you can override any single row before you start.

</details>

<details>

<summary>Can I preview a run before committing?</summary>

Yes. Click **Simulate** to see which wallets will execute and which will be skipped, then start the run when it looks right.

</details>

<details>

<summary>Is this the same as a Jito bundle?</summary>

No. Multi Swap sends each wallet's transaction on its own, with optional pacing and an optional [Jito](/getting-started/glossary.md) tip relay for a priority lane. If you need a group of trades to land in the same block, all or nothing, use [Bundled Trade](/tools/trade/bundled-trade.md).

</details>

## Related tools

{% content-ref url="/pages/wzTSdddfnEFKadxZXdPR" %}
[Swap](/tools/trade/swap.md)
{% endcontent-ref %}

{% content-ref url="/pages/zgLeX2wmooChfRiWqoSM" %}
[Bundled Trade](/tools/trade/bundled-trade.md)
{% endcontent-ref %}

{% content-ref url="/pages/a7TACAPAW24OFOSbtgNw" %}
[Wallet Generator](/tools/wallets/wallet-generator.md)
{% endcontent-ref %}

{% content-ref url="/pages/ABVX2mBQDoCv7DEdVmKp" %}
[Multi Sender](/tools/wallets/multi-sender.md)
{% endcontent-ref %}

{% hint style="success" %}
**J Tools is non-custodial.** We never hold your private keys and never ask for them. Every transaction is built in your browser and signed by your own wallet. If any page ever asks you to paste a private key, stop, close it, and let us know.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.j.tools/tools/trade/multi-swap.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
