> 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/swap.md).

# Solana Token Swap: Best Route, One Wallet

[Swap](https://j.tools/en/tools/swap) trades one Solana token for another from your own browser wallet on Solana mainnet. You pick what you spend and what you want back, the page pulls a live quote through the Jupiter aggregator, and you sign a single transaction. Your keys stay in your wallet, and the platform fee (0.8%, taken out of the amount you enter) is shown in the summary before you commit.

## What it is

Swap is a one-screen, single-wallet trade. It works with SOL, USDC, USDT, and any custom mint you paste in, as long as a tradeable pool exists for the pair. There is no batching, no multi-wallet logic, and no extra setup.

## Why use this tool

Swapping by hand on a raw DEX interface means finding the right pool, reading the pool math yourself, and guessing at a safe slippage number. Swap does that work for you:

* **One screen, no DEX hunting.** You do not pick a pool or a venue by hand. The tool asks Jupiter for the route that gives the best price for your pair.
* **Numbers before you sign.** The quote, the price impact, the slippage tolerance, the minimum you will actually receive, the network fee, and the platform fee are all visible before you approve anything.
* **Custom mints welcome.** Paste any mint address and trade it if a pool exists. [Token-2022](/concepts/spl-vs-token2022.md) mints work on the receive side; on the pay side use SOL or a classic SPL token, because the fee transfer is built for the classic token program and fails with a Token-2022 mint.

## How it works (under the hood)

When you enter an amount, the tool fetches a **quote** for your token pair. A quote is the current exchange rate on offer right now, based on the state of the pools along the route. Pools come in two common shapes: constant-product pools (the classic "x times y" curve) and concentrated-liquidity pools, where market makers focus their liquidity in a price band. The quote already accounts for which shape each pool uses.

Routing goes through the **Jupiter aggregator**. Jupiter scans Solana DEXes (Raydium, PumpSwap, Orca, Meteora, and others) for the best price, and it may split your order across venues or run it through more than one hop. The route and its splits are shown with the quote, so you see where the trade fills before you sign.

Two numbers describe price movement, and they are not the same thing:

* **Slippage tolerance** is a limit you set. It is the worst price you are willing to accept. If the real fill would be worse than that limit by the time your transaction lands, the trade reverts instead of filling at a bad rate. Set it too tight on a fast-moving token and the swap can fail; set it too loose and you accept more downside.
* **Price impact** is what your own order does to the pool. A large order relative to pool depth moves the price as it fills, so you receive less per token than the headline quote. Slippage is the guard rail you place around it.

The **platform fee** attaches to the same transaction you sign. It is 0.8% of the amount you enter, carved out of that amount rather than added on top, and it goes to the platform wallet as part of the swap, so there is no separate approval and no second signature. You see the exact figure in the fee summary before you click execute.

<figure><img src="/files/rl4TIq0JBc2sb9dhiQfj" alt="How a swap works."><figcaption></figcaption></figure>

## When to use it

* You are trading a pair without knowing which DEX it lives on and want Jupiter to find the best fill for it.
* Your order is small relative to the pool, or you are willing to split it. Swap quotes one route at a time and has no averaging or scheduling.
* You want the trade and the platform fee to settle in a single signature, with no second approval.

If you need to run the same swap across many wallets, use [Multi Swap](/tools/trade/multi-swap.md). To land the same trade from many wallets in one block, look at [Bundled Trade](/tools/trade/bundled-trade.md). New to mints and SPL tokens? The [Glossary](/getting-started/glossary.md) covers the terms used here.

## Before you start

* A connected wallet ([how to connect](/getting-started/quick-start.md)). Nothing executes without a connected signer.
* Enough of the token you are spending to cover the amount you enter. The platform fee comes out of that amount, not on top of it.
* A small SOL balance for the network fee, even when the token you spend is not SOL.

## Step by step

{% stepper %}
{% step %}

### Connect and pick your tokens

Connect your wallet. Choose the token you pay (defaults to SOL) and the token you receive (defaults to USDC). The picker lists SOL, USDC, USDT, and your wallet-held tokens sorted by balance. Paste any custom mint to resolve it.
{% endstep %}

{% step %}

### Enter an amount

Type how much you want to spend, or click **Max** to fill the spendable balance (on a SOL input, your balance minus about 0.0046 SOL plus your priority fee, held back for the network fee and token-account rent; on a token input, the whole balance, because the reserve is only taken out of SOL). After a short pause the page fetches a quote and shows the route, the expected output, the price impact, and the minimum you will receive.
{% endstep %}

{% step %}

### Set slippage and speed

Choose **Auto** or **Manual** slippage, then a transaction speed preset. The page shows the exact priority fee and the platform fee live, so you review both before you commit.
{% endstep %}

{% step %}

### Execute and confirm

Click **Execute Swap**, then read the wallet prompt before you approve: check the input token, the amount, and that the output mint is the one you meant. A swap is final once it lands on chain. The success dialog gives you a Solscan link tied to your transaction signature.
{% endstep %}
{% endstepper %}

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

{% hint style="info" %}
**About wallet warnings.** Some tools bundle several instructions into one transaction, for example creating a token and its metadata together. Phantom can show a caution banner for these transactions. The banner is expected here and does not mean something is wrong. Read what you are signing, then approve.
{% endhint %}

## The options, explained

* **You Pay.** The token you spend and the amount. Defaults to SOL and accepts decimals. **Max** fills the spendable balance (on a SOL input, your balance minus about 0.0046 SOL plus your priority fee, held back for the network fee and token-account rent; on a token input, the whole balance, because the reserve is only taken out of SOL). The quote refreshes on its own shortly after you change the input.
* **You Receive.** The token you get back. Defaults to USDC. This field is read-only and filled from the live quote. A switch-direction button swaps the pay and receive tokens in place.
* **Token picker.** The shared token selector. Defaults to SOL, USDC, and USDT, plus your wallet-held tokens sorted by balance. Paste any mint to add a custom token.
* **Slippage mode.** **Auto** derives the tolerance from the quote's price impact, clamped to a safe band (roughly 0.3% to 5%). **Manual** gives you 0.5 / 1 / 2 / 5% presets plus a custom field, clamped between 0.1% and 20%. The default is Auto at 1%.
* **Transaction speed.** The priority fee in SOL. Normal adds none, High and Turbo add progressively more, and Custom lets you set your own. The exact fee shows live before you execute.

{% hint style="info" %}
Quotes go stale after about 30 seconds. If you wait too long and then execute, the page raises a stale-quote error and pulls a fresh quote. Review the new numbers and execute again.
{% endhint %}

## 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.8% of the swap amount.** The fee is taken out of the amount you enter, not added on top, and the app shows the exact figure before you sign.

| Cost                 | Amount                                                     |
| -------------------- | ---------------------------------------------------------- |
| J Tools platform fee | 0.8% of the swap amount, taken out of the amount you enter |
| Solana network fee   | a small amount per transaction, paid to validators         |

Example: a 1 SOL swap includes a 0.008 SOL platform fee, so roughly 0.992 SOL goes into the trade itself.

On top of the platform fee you pay the standard Solana network fee plus whatever priority fee your chosen speed preset adds. Network fees on Solana are usually a fraction of a cent, but they rise when the network is busy and when you pick a faster speed preset. For the current schedule, see the [Fee schedule](/reference/fee-schedule.md).

## Common mistakes and troubleshooting

* **Quote went stale.** More than about 30 seconds passed since the quote loaded. The page refreshes automatically. Check the updated minimum received and execute again.
* **Same token on both sides.** The input and output mints match. Pick a different output token.
* **Slippage too tight on a volatile token.** A fast-moving price moved past your tolerance before the trade landed, so it reverted. Widen the slippage a little or use Auto, then retry.
* **No SOL for fees.** Even when you spend a non-SOL token, you still need a little SOL for the network fee.
* **No route found.** No tradeable pool exists for that pair or size. Try a different amount or a different token.

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

## Advanced tips

* **Match slippage to volatility.** Stablecoin pairs sit fine at tight settings. A thin or newly launched token usually needs a wider tolerance to land. Auto reads the live price impact and sets a sensible band for you.
* **Watch price impact on big orders.** If the price impact looks high, your order is large relative to pool depth. Splitting it into smaller swaps can lower the average impact, since each smaller fill moves the pool less.
* **Max holds back SOL, not tokens.** On a SOL input it leaves about 0.0046 SOL plus your priority fee for the network fee and token-account rent (the wSOL wrap and the output token account). On a token input it takes the whole balance, so check the wallet still holds SOL for the network fee before you execute.

## Related tools

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

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

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

{% content-ref url="/pages/QT0nYfDbGpJo4Cm5Tbs6" %}
[Create a Solana Liquidity Pool](/tools/liquidity/create-lp.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/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.
