> 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/utilities/close-account.md).

# Close Account

Every [SPL or Token-2022](/concepts/spl-vs-token2022.md) account you ever opened holds a small rent deposit in SOL. [Close Token Account](https://j.tools/en/tools/close-account) scans a wallet, lists every account you can safely close, and closes them in batches so that rent comes back to you. It runs on a single connected wallet, or on up to 1000 wallets at once when you paste private keys. Accounts that still hold a tiny balance can be burned and closed in the same step.

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

* You trade tokens or memecoins and have piled up empty accounts that each lock a bit of SOL.
* You want to clean the dust accounts out of one connected wallet.
* You run many wallets and want to scan and close across all of them in one pass.
* An account still has a small leftover balance and you want to burn it, then close the account, in a single transaction.

## Before you start

* For **Wallet Scan** mode, a connected wallet ([how to connect](/getting-started/quick-start.md)). The reclaimed rent returns to it.
* For **Multi Wallet** mode, valid private keys, one per line, no duplicates, up to 1000.
* A connected wallet is also required when it pays gas or is set as the rent destination. A dedicated gas option needs a funded fee-payer key, and a custom rent destination needs a valid public address.
* Whoever pays the network fee needs some SOL. The "Each Wallet" gas option fails for a wallet that holds zero SOL.

{% hint style="warning" %}
**On pasting private keys.** Multi Wallet mode signs client-side with the keys you paste, and J Tools never stores or transmits them. Even so, treat this as sensitive. Use throwaway or operational wallets, not a wallet that holds funds you care about.
{% endhint %}

## Step by step

{% stepper %}
{% step %}

### Choose a mode

Pick **Wallet Scan** to work on the connected wallet only, or **Multi Wallet** to paste one private key per line. In Multi Wallet mode the terminal shows each line as valid, invalid, or duplicate, along with that wallet's SOL balance.
{% endstep %}

{% step %}

### Scan accounts

Click **Scan Accounts**. The tool reads every SPL Token and Token-2022 account the wallet owns and lists each one as a row with its mint, balance, and the rent you can reclaim. Token name, symbol, and logo are pulled in per mint. Large wallet sets are scanned in batches.
{% endstep %}

{% step %}

### Pick a close mode

**Only Empty** closes accounts with a zero balance. **Burn & Close** also burns any remaining balance first, then closes the account. Burn & Close asks you to confirm in a dialog before it burns anything.
{% endstep %}

{% step %}

### Set gas and rent routing (Multi Wallet only)

Choose **Gas Paid By** (Connected Wallet, Each Wallet, or Dedicated Wallet) and **Reclaimed Rent To** (Connected Wallet, Each Owner, or Custom Address). Add a fee-payer key or a custom address if the options you picked need one.
{% endstep %}

{% step %}

### Review the summary, filter, and select

The summary shows selected wallets, row counts, empty versus non-empty, closable accounts, selected rent, the platform fee, the estimated network fee, and success or failed counts. Empty accounts come pre-selected. Anything still holding a balance you must select on purpose. Use the filter box and the Closable Only / Selected Only toggles to narrow the list.
{% endstep %}

{% step %}

### Close selected accounts

Click **Close Selected Accounts**. The tool packs rows into transactions under the size limit, signs them (the connected wallet signs first, imported owners sign as extra [signers](/getting-started/glossary.md)), broadcasts, confirms with retry, and updates each row's status to SUCCESS or FAILED.
{% endstep %}

{% step %}

### Retry anything that failed

Use **Retry Failed** to re-run only the rows that did not go through. Rows that already succeeded are left alone.
{% endstep %}
{% endstepper %}

[**Open Close Token Account in the app →**](https://j.tools/en/tools/close-account)

{% 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                                                                                                                                                                                                 |
| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Mode                             | **Wallet Scan** works on the connected wallet only. **Multi Wallet** scans and closes across the wallets whose private keys you paste, one per line, up to 1000.                                             |
| Close Mode                       | **Only Empty** closes zero-balance accounts. **Burn & Close** burns any leftover balance first, then closes, and requires a confirmation dialog before burning.                                              |
| Gas Paid By (Multi Wallet)       | **Connected Wallet** sponsors all fees, so imported wallets need no SOL. **Each Wallet** makes every imported wallet pay its own fee. **Dedicated Wallet** uses a separate pasted fee-payer key for all gas. |
| Reclaimed Rent To (Multi Wallet) | **Connected Wallet** consolidates all reclaimed rent to the connected wallet. **Each Owner** returns rent to each owning wallet. **Custom Address** sends it to a public address you paste.                  |
| Fee-Payer Wallet Key             | The private key of a funded wallet that pays all gas. Shown only when Gas Paid By is set to Dedicated Wallet.                                                                                                |
| Filters                          | A free-text filter across account, token, mint, and wallet, plus Closable Only and Selected Only toggles, and Select Visible / Clear Visible bulk actions. Rows sort by rent, highest first.                 |
| Per-row selection and status     | Every scanned account is a row with a checkbox, balance, plan, and an IDLE / SUCCESS / FAILED status. Empty accounts are pre-selected. Non-empty ones must be selected deliberately.                         |

## Fees

The platform fee is a share of the rent you reclaim, and it is charged on-chain inside the same close transaction. Only successful closes are charged. A transaction that fails costs nothing in platform fees. The fee comes out of whoever receives the rent, so the net rent you recover is the reclaimed amount minus the platform fee and the Solana network fee.

The exact rate is shown in the live fee summary on the page (labeled **Platform Fee** and **Estimated Fee**) and on the [Fee schedule](/reference/fee-schedule.md). For how platform fees work across the suite, see [Fees explained](/getting-started/fees-explained.md). Each transaction also pays the standard Solana network fee.

## Burning before closing

{% hint style="danger" %}
**This cannot be undone.** Once this transaction confirms on-chain, there is no way to reverse it. Check every field before you sign.
{% endhint %}

Burn & Close is for accounts that still hold a small balance you do not want. The burn destroys those tokens for good, so the account can then be closed and its rent returned. This is permanent. Once the burn confirms on-chain, the tokens are gone. That is why the tool asks you to confirm in a dialog before it burns anything. If you would rather keep the balance, move it out first with [Multi Sender](/tools/wallets/multi-sender.md), or leave those rows unselected and close only the empty accounts. To burn tokens without closing the account, use [Burn Tokens](/tools/token/burn-tokens.md) instead.

## If something goes wrong

* **A wallet has no SOL for gas.** In "Each Wallet" gas mode, a wallet with zero SOL cannot pay its own fee and that row fails. Switch Gas Paid By to **Connected Wallet** or **Dedicated Wallet** so a funded wallet sponsors the fees.
* **Not enough SOL on the fee payer.** Whoever pays the network fee needs a SOL balance. Top up the connected, dedicated, or owning wallet and retry.
* **Invalid or duplicate key.** Multi Wallet mode flags each pasted line. Remove invalid or repeated entries before scanning.
* **Some rows failed.** Use **Retry Failed** to re-run only those rows. Network congestion is a common cause and a retry often clears it.
* **Wallet rejected the signature.** You declined or the wallet timed out. Reconnect and try again.

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

## FAQ

<details>

<summary>Why do empty token accounts hold SOL at all?</summary>

Solana charges rent to keep an account alive on-chain. When a token account is opened, a fixed rent deposit is locked in it. Closing the account releases that deposit back to you, which is the whole reason this tool exists.

</details>

<details>

<summary>Is it safe to close an empty account?</summary>

Yes. Closing a zero-balance account just returns its rent. If you ever receive that token again, a new account is created automatically. "Only Empty" mode never touches accounts that still hold a balance.

</details>

<details>

<summary>What does Burn &#x26; Close actually destroy?</summary>

Only the leftover token balance inside the accounts you select for it. The burn is permanent and confirmed by a dialog before it runs. Empty accounts are closed without burning anything.

</details>

<details>

<summary>How can I close accounts for wallets that have no SOL?</summary>

Use Multi Wallet mode and set **Gas Paid By** to **Connected Wallet** (or a Dedicated Wallet). A funded wallet then sponsors the network fees, so token-only wallets with no SOL can still be cleaned up.

</details>

<details>

<summary>Where does the reclaimed rent end up?</summary>

In Wallet Scan mode it returns to the connected wallet. In Multi Wallet mode you choose: consolidate it to the connected wallet, return it to each owning wallet, or send it all to a custom address you paste.

</details>

<details>

<summary>Does J Tools keep the private keys I paste?</summary>

No. Keys are used in your browser to sign and are never stored or transmitted. Still, use operational or throwaway wallets here rather than a primary wallet.

</details>

## Related tools

{% content-ref url="/pages/7CPBHR61Y6akMdkeSBGW" %}
[Batch Collector](/tools/wallets/batch-collector.md)
{% endcontent-ref %}

{% content-ref url="/pages/El6oae0bfwSTjeoxgA0u" %}
[Burn Tokens](/tools/token/burn-tokens.md)
{% endcontent-ref %}

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

{% content-ref url="/pages/a7TACAPAW24OFOSbtgNw" %}
[Wallet Generator](/tools/wallets/wallet-generator.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/utilities/close-account.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.
