> 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/wallets/relay-transfer.md).

# SOL Relay Transfer Through Fresh Wallet Hops

Relay Transfer moves SOL or an SPL token from one source to a destination by hopping it through a chain of freshly generated intermediate wallets. You set how many hops, how long to wait between each, and whether to add a priority fee. Every hop drains forward to the next, and every hop after the first is signed by a key the tool generates, so your wallet is prompted at most once.

## What it is

Relay Transfer is a non-custodial routing tool. Instead of one direct send from A to B, it builds a path of new relay wallets and walks your funds through them one transaction at a time. The destination receives the final hop, and the chain of fresh wallets between source and destination breaks the direct on-chain link a single transfer would leave behind.

It supports two assets. A SOL relay drains each hop down to zero as it moves forward. An SPL relay forwards a fixed token amount through each hop and seeds every relay wallet with the SOL it needs for fees and token-account rent.

Nothing is converted along the way. SOL hops are plain system transfers and SPL hops are token transfers of the same mint, with no DEX or liquidity routing involved. To change one token into another, use [Swap](/tools/trade/swap.md) instead.

## How it works (under the hood)

When you start a run, the tool generates a chain of fresh relay keypairs in your browser. The private keys for those wallets are created locally and written straight into a recovery file you download; they are never sent to any server for safekeeping.

Each hop is its own Solana transaction. The transfer instruction moves the asset from one wallet to the next. Signing is non-custodial throughout. In connected-wallet mode your wallet adapter signs hop 0 and nothing else; every later hop is signed by the relay keypair that currently holds the funds, so a run of any depth costs exactly one approval. In private-key mode the imported key signs hop 0 locally and the extension is never prompted.

For a SOL relay, each intermediate is drained to the next, so the balance walks forward to zero behind it. For an SPL relay, the tool first seeds each relay wallet with enough SOL for its fee and the rent of the token account it opens, then forwards the token amount unchanged. The per-hop reserve is tuned to the live network fee, which is why hops stay above the rent-exempt minimum and the chain keeps moving.

<figure><img src="/files/OmGWxwhk7dnBb7bG2DQU" alt="How Relay Transfer works"><figcaption></figcaption></figure>

## When to use it

* You want to route funds through a configurable number of hops, with delays between them, instead of one direct send.
* You want the run signed with no wallet popup at all, which is what private-key mode is for.
* You need per-hop progress, signatures, and error tracking, plus a recovery file of the generated wallets.

If you instead need to fan a token out to many recipients, use [Multi Sender](/tools/wallets/multi-sender.md). To pull balances in from many wallets, use [Batch Collector](/tools/wallets/batch-collector.md). To route between two sets of wallets, see [Multi to Multi Relay](/tools/wallets/multi-to-multi-relay.md). New to keypairs and rent? The [Glossary](/getting-started/glossary.md) covers the terms used here.

## Before you start

* A source. Either a connected wallet, or a private key in the tool's private-key mode. Connected-wallet mode handles SOL only. SPL relays require private-key mode.
* A valid destination wallet address. The field validates it live as you type.
* An amount above zero, and for an SPL relay, the token's mint address (pick it with the built-in token selector).
* Enough SOL to cover the principal plus every hop's network fee and platform fee. SPL relays need meaningfully more, because each relay wallet is pre-seeded with SOL for its fees and token-account rent. The [SPL vs Token-2022](/concepts/spl-vs-token2022.md) note explains why token transfers carry that account overhead.

{% hint style="danger" %}
**Keep the recovery file.** When a run starts, the private keys for every generated relay wallet are auto-downloaded as an `.xlsx`. If a hop fails, funds sit in the last successful intermediate wallet, and that file is the only way to recover them. Treat it like cash. Store it offline and never paste a key back into chat or any web form.
{% endhint %}

## Step by step

{% stepper %}
{% step %}

### Pick the source

Connect a wallet for a SOL relay, or switch the wallet source to private key. Adapter (connected-wallet) mode is SOL-only; an SPL relay needs private-key mode.
{% endstep %}

{% step %}

### Choose the asset and amount

Select SOL, or pick an SPL token with the token selector and enter its mint. Set the amount. In connected-wallet mode the MAX button fills the available balance minus the estimated per-hop overhead.
{% endstep %}

{% step %}

### Enter the destination

Paste the final wallet address. It is checked as a Solana public key in real time, so a bad address is caught before you run.
{% endstep %}

{% step %}

### Set the relay depth

Choose how many intermediate wallets to route through. Use a preset, the slider up to 2500, or type a custom value up to 5000. The total number of hops is the depth plus one, since the last hop delivers to the destination.
{% endstep %}

{% step %}

### Configure timing and priority

Pick a fixed delay or a random delay between hops, each from 0 to 120 seconds. There is no wait after the final hop. Optionally add a priority fee preset to nudge your transactions through during congestion.
{% endstep %}

{% step %}

### Review and execute

Check the summary: relay count, hop count, send amount, estimated destination amount, network fee, platform fee, and total cost. When it looks right, click **Execute Relay Transfer**.
{% endstep %}

{% step %}

### Let it run

On start, the recovery `.xlsx` of all generated relay keys downloads automatically. The run then sends hop by hop, draining each intermediate to the next. The table shows From, To, Status, Signature, and any Error per hop, with Solscan links.
{% endstep %}
{% endstepper %}

[**Open Relay Transfer in the app →**](https://j.tools/en/tools/relay-transfer)

{% hint style="info" %}
The tool's Phantom risk is rated low because in private-key mode the extension is never in the signing loop at all.
{% endhint %}

## The options, explained

* **Token type:** SOL or SPL. SOL drains each hop down to zero on the way forward. SPL seeds each relay wallet with SOL for fees, then forwards the token amount unchanged.
* **Token mint:** Required for SPL. The mint of the token to relay, chosen from your wallet's token list or pasted into the token picker. Ignored for SOL.
* **Amount:** What passes through the path. For SOL it is the amount before fees; for SPL it is the per-hop token amount. MAX (adapter mode only) fills balance minus estimated per-hop overhead.
* **Destination wallet:** The final wallet that receives the last hop. Validated as a Solana public key as you type.
* **Relay count:** How many intermediate wallets to route through. Presets up to 2500, slider up to 2500, custom entry up to 5000. Total hops equal relay count plus one.
* **Delay mode:** Fixed waits a set number of seconds between hops; random samples a wait between a minimum and maximum. Each value is capped at 0 to 120 seconds. No delay runs after the final hop.
* **Priority fee:** A validator tip applied per transaction. Presets run from none up to express, with a custom option. Default is none.
* **Source mode:** Connected wallet signs the first hop through your wallet adapter, then signs later hops with the generated relay keys in the browser. Private key signs locally with imported keys. Connected-wallet mode is SOL-only.

## 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.00023 SOL per hop.** The amount is pinned to the tool's own constant, so it is the same on every run: 230,000 lamports are folded into each hop's cost alongside the 5,000-lamport network fee and any priority fee you add.

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

Example: a relay depth of 10 is 11 hops, so the platform fee is 11 x 0.00023 = 0.00253 SOL. A depth of 100 is 101 hops, or 0.02323 SOL. Always count the delivery hop; a depth of N costs N+1 hop fees.

On top of the platform fee, each hop pays the Solana network fee (a fraction of a cent in SOL), plus any priority fee you add and, for SPL relays, the rent each relay wallet holds for its token account. The in-app summary shows the full estimate before you run anything. See the [Fee schedule](/reference/fee-schedule.md) for the current rate.

## Security and custody

A relay run creates keys, and in private-key mode it reads one you paste. Both stay in your session: the generated relay keys go into the recovery `.xlsx` and nowhere else, and an imported key signs locally. Use a wallet you can afford to rotate for private-key mode, and keep that file offline, because a failed hop leaves funds in an intermediate wallet that only those keys can open.

## Common mistakes and troubleshooting

* **Not enough source SOL.** A SOL relay checks that the source covers the principal plus every hop's fees. Top up and retry. SPL relays need more, since each relay wallet is seeded for fees and account rent; an underfunded source throws an insufficient-balance error.
* **A hop failed mid-run.** The chain stops at the first failure. Remaining hops are marked failed, and the funds rest in the last successful intermediate wallet. Recover them using the downloaded `.xlsx`. The tool does not auto-retry or auto-recover.
* **Rent error on the next hop.** This happens when an intermediate is left below the rent-exempt minimum. The per-hop reserve is tuned to the network fee for this reason; do not try to inflate it.
* **SPL relay blocked in connected-wallet mode.** Adapter mode is SOL-only. Switch to private-key mode for SPL.
* **Lost the recovery file.** If a run is mid-flight or a hop failed, the keys in that file are the only way to reach stranded funds. There is no server-side copy to restore from.

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

## Advanced tips

* **Start shallow, then scale.** A small depth costs little and tells you whether the timing and cost behave the way you expect. Raise the relay count once you trust the path.
* **Mind the runtime.** Every hop is a separate transaction with its own fee and any delay you set, so a deep run with long random delays can take a while. The summary's hop count is the quickest way to gauge total time and cost.

## Related tools

{% content-ref url="/pages/uVoEslmUoeflpLu9kq7x" %}
[Multi-to-Multi Relay](/tools/wallets/multi-to-multi-relay.md)
{% endcontent-ref %}

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

{% content-ref url="/pages/7CPBHR61Y6akMdkeSBGW" %}
[Batch SOL and Token Collector](/tools/wallets/batch-collector.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/wallets/relay-transfer.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.
