> 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-Wallet Swap: Trade From Many Wallets

[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 while a live terminal shows each wallet's status. It handles up to 1000 wallets per run, gives each wallet its own amount logic and pacing, and drops any that fail into a retry queue.

## What it is

Multi Swap is a batch trading tool. You import a set of wallets, choose Buy or Sell, and one run trades the same token from every wallet in order.

Each wallet trades separately. The tool builds an unsigned transaction per wallet, you sign them in your browser, and the platform broadcasts them, resends if the network drops one, and confirms each result. A finished run exports to CSV.

Routing is direct-DEX only. Every trade hits a real market for the token, a Pump.fun bonding curve, a PumpSwap pool, or a Raydium pool. There is no aggregator and no routing across third-party APIs.

## Why use this tool

* You get strict per-wallet ordering, live status, and a retry queue in one place, instead of tracking dozens of separate trades in your head.
* Pacing options space the trades out, so a run does not look like one obvious burst hitting the market at the same instant.
* The tool auto-detects the venue for you, or you can pin one specific market when you know exactly where the liquidity sits.
* The bulk amount logic applies to the whole list, and you can still override any single row before you start.

## How it works (under the hood)

When you start a run, the platform builds a separate swap transaction for each wallet. Every transaction quotes the trade against the live market for that token at that moment. A quote is the price the market will give for your size right now, and it changes as the pool moves.

Two numbers shape what you actually receive. **Slippage** is the tolerance you set: how far the real fill is allowed to drift from the quote before the trade fails on purpose rather than fill at a bad price. **Price impact** is the move your own order causes by taking liquidity out of the pool. A small trade barely moves the price. A large one walks it, and on a thin pool the impact can be the dominant cost. Multi Swap quotes and fills each wallet on its own, so impact builds across the run as wallets trade in sequence.

Routing is direct to the DEX. The tool reads which markets exist for your token and sends each trade straight to one of them. On **Auto**, it picks the live market for you. Pin a venue and it trades there only. No external aggregator sits in the path.

The platform fee attaches as a small, fixed SOL transfer inside the same flow as the swap, so the fee and the trade move together and the amount is shown before you sign. This is why the fee is reliable and why a wallet needs a little headroom beyond the trade size itself.

<figure><img src="/files/5TXhZrwgCePDJJupGUHn" alt="How a multi-route swap works"><figcaption></figcaption></figure>

## When to use it

* Your project needs to buy or sell from many wallets in one go, instead of trading each wallet by hand.
* 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. Token-2022 mints trade here, with two exceptions the tool rejects before it builds anything: a mint with a transfer hook, and a mint with a transfer fee. Both stop the run up front rather than failing wallet by wallet. 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)

## The options, explained

* **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 (the same SOL each), Range (random SOL within a min and 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 is 1 percent. The other presets are 0.5, 1 and 3 percent, plus a custom value; the server accepts 1 to 5000 bps (0.01 to 50 percent). After the first pass the runner re-quotes failed wallets twice and adds 2 percentage points each round, so a run started at 1 percent can reach 5 percent. That boost applies to whatever you set, not only to Auto. Sell runs get one more adjustment: each wallet's tolerance is scaled by its position in the queue, up to 25 points above your setting and hard-capped at 49 percent, so later sells can absorb the price the earlier ones moved.
* **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, set by chunk size and how many transactions may sit unconfirmed at once. Careful builds 10 at a time, keeps 5 in flight and pauses 1.5 to 3 seconds between chunks. Normal builds 100 at a time, keeps 120 in flight and does not pause. Turbo builds 100 at a time with no in-flight ceiling. None of them re-quote between chunks; fresh quotes come on the retry rounds.
* **Interval.** Anti-clustering pacing: Off (fast parallel chunks), Fixed (the same gap between wallets), or Random (a random gap in a min and max range), so a run looks less like one bundle.
* **Relay tier.** An optional second delivery lane, off by default. Presets are 0.0005, 0.001 and 0.003 SOL per transaction. When it is on, the tip rides inside each transaction and a copy of the signed transaction goes to Helius Sender, which fans it out to Jito and to staked connections across its regions. Your paid RPC pool still does the actual delivery; the relay only buys a second route in.
* **Wallet count.** How many imported wallets are in the run. The hard cap is 1000 per run, checked in the import modal and again on the server. Four more gates sit on top of it: one active run per operator wallet, three active runs across the platform, five new runs per operator wallet per hour, and ten per IP per hour. A run that trips one of these is refused at start, not mid-flight.

## Fees and costs

{% 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 %}

**Current platform fee: 0.0035 SOL per swap transaction.**

| Cost                 | Amount                                             |
| -------------------- | -------------------------------------------------- |
| J Tools platform fee | 0.0035 SOL per swap                                |
| Solana network fee   | a small amount per transaction, paid to validators |

Example: 20 swaps cost about 0.07 SOL in platform fees.

On top of the platform fee, each transaction pays the usual Solana network costs: a base signature fee plus the priority fee tier you pick, and rent for any new token account a wallet has to open. These go to the network and validators, not to the platform. The cost line also does not cover DEX fees or price impact. Pump.fun markets charge their own protocol and creator fee in SOL on top of the trade amount, so the page reserves a little headroom for it. On Raydium, the venue takes its fee from the swap output.

## Security and custody

The private keys you import through the **Import Wallets** modal stay in your browser tab, sign the server-built transactions locally, and are never transmitted. They clear on refresh, which stops a run from taking new actions; the page then rehydrates read-only from the last job, so you keep the results and the CSV export but have to re-import the keys before you can retry anything. Import throwaway hot wallets, never a key that also holds long-term funds.

## Common mistakes and troubleshooting

* **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.** The runner re-quotes the failed wallets and adds 2 percentage points per retry round, two rounds, whatever slippage you picked. On sells it also widens later rows by up to 25 points so they absorb the price the earlier rows moved. 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.
* **The run will not start.** Multi Swap allows one active run per operator wallet and three across the whole platform. If a run of yours is still finishing, or the platform is at capacity, the start call is refused before anything is built. Wait for it to finish, then start again.

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

## Advanced tips

* On a thin Pump.fun curve, spread a large buy across more wallets with smaller per-wallet sizes instead of a few big ones. Smaller slices cause less price impact per trade and keep you under the curve-depth warning.
* Reach for the **Relay tier** Jito tip only when blocks are congested and your trades keep expiring. In calm conditions a normal priority tier lands fine and costs less.
* Keep a small SOL buffer in each trading wallet beyond the cost line, especially on Pump.fun, where the protocol and creator fee come out as extra SOL on top of your amount.

## Related tools

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

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

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

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

{% hint style="success" %}
**J Tools is non-custodial.** We never store or transmit your private keys and never ask for your seed phrase. Every transaction is signed in your own browser, and nothing about a key ever reaches our servers. A few multi-wallet tools do let you paste private keys for throwaway hot wallets, which stay in your browser tab and are used only to sign locally. Never paste a key tied to long-term holdings, and if a page ever asks for your seed phrase, stop and close it.
{% 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.
