Batch Collector
Batch Collector sweeps SOL or an SPL token out of many source wallets and into one destination address in a single run. You import the source wallets by private key, pick how much to pull from each one, set the destination, and the tool signs every wallet locally and broadcasts the transfers in parallel with row-by-row live status.
Batch Collector j.tools/en/tools/batch-collector
Open toolPlatform fee
0.001 SOL per source wallet
Network fee, rent and transaction value are separate.
When this tool fits
#when-this-tool-fits- You are consolidating funds from many wallets into one for treasury cleanup, a campaign wrap-up, or general account consolidation.
- You have leftover SOL or token dust scattered across wallets after an airdrop, distributed buys, or multi-wallet testing.
- You would otherwise drain wallets one by one and would rather run a parallel, validated batch with row-by-row status.
Before you start
#before-you-start- A list of source-wallet private keys. Paste them one per line, or upload a file (.csv, .txt, .json or .tsv) through the Import Wallet terminal. Only the key on each line is read: anything after a comma or tab is ignored, so amounts are set on the page. The page sets no cap on the number of wallets; the upload itself is limited to 4 MB.
- A destination. Paste a Solana address (“Enter address” mode) or switch to “Connected wallet” to send everything to your connected wallet’s address. A connected wallet is not required when you paste a destination.
- For SPL, the token you want to collect, picked by mint through the token selector. SOL is the default. Classic SPL and Token-2022 are both handled, see SPL vs Token-2022 if you are unsure which one you hold.
- A little SOL in each source wallet to cover the per-transaction platform fee plus the network base fee. Wallets that cannot cover it are skipped and never charged. For an SPL run where the destination has no account for that token yet, the first collection also pays about 0.002 SOL to create it.
Use only short-lived operational wallets; never enter a seed phrase or a long-term wallet key.
How to use it
#how-to-use-it-
Pick token and import wallets
Choose SOL (the default) or select an SPL token by mint with the token selector. Click Import Wallet and paste private keys, one per line, or upload a file. Each row’s SOL and selected-token balance loads in bulk, so you see live amounts before you commit to anything.
-
Set destination and amounts
Paste a destination address, or switch to “Connected wallet” to use your connected wallet’s address. Pick a collection mode to auto-fill every row’s Collect Amount: Max, Fixed, Keep, or Percent, and edit any row that needs its own figure.
-
Run and review row status
Check the totals: Total Wallets, Total SOL in wallets, Arrives at destination, the platform fee, and the network fee. Click Collect from N wallet(s) and watch each row’s status and signature. Use “Keep Only Failed” afterwards to keep just the rows that need another try.
Key settings
#key-settings- Token type: Collect native SOL or an SPL token. SPL needs a valid mint.
- Collect mode: The per-wallet amount rule. Max collects everything: on a SOL run the wallet ends at exactly zero after the platform fee and the network fee. Fixed pulls the same amount from every wallet. Keep leaves a set amount behind and collects the rest. Percent collects a share of each wallet’s balance.
- Collect Amount (per row): Auto-filled from the chosen mode. Editing a row overrides the mode for that wallet only, and the row keeps your figure when you change the mode.
- Destination mode: Paste an address (“Enter address”), or send everything to the connected wallet’s address.
- Platform fee: A flat platform fee charged per source wallet, taken inside that wallet’s own collect transaction and shown before you run. See the in-app summary or the Fee schedule for the current amount.
- SOL on token runs: When you collect an SPL token, the SOL left in each wallet after the platform fee, the network fee and any account rent goes to the destination too. The emptied token account stays open.
Fees and costs
#fees-and-costs| Cost | Amount |
|---|---|
| J Tools platform fee | 0.001 SOL per source wallet |
| Solana network fee | Paid to validators during the transaction; shown in the live summary. |
| Rent and transaction value | Shown separately when required; not part of the platform fee. |
How to use it
- Pick token and import wallets
- Set destination and amounts
- Run and review row status
How it works
One collect transaction per wallet keys stay in your browser tab
- Every wallet's balance loads in bulk SOL + token
- Mode fills each row's collect amount Max · Fixed · Keep · Percent
- Wallets short on fee SOL skipped, not charged Needs SOL
- Leftover below rent minimum swept to zero rent-exempt
- Fee taken inside the wallet's own transaction 0.001 SOL
- Each wallet signed locally with its key local
- Transfers broadcast in parallel parallel
Funds land in one destination, status per row SOL · SPL · Token-2022
Before you sign
#before-you-signCheck the live summary before signing. The app is the current source of truth for amount, fee and route.
Common issues
#common-issues- Needs SOL. The wallet cannot cover the per-wallet fee plus the network fee. It is skipped, not failed, and never charged. Fund it with a little SOL to include it next run.
- Insufficient SOL for fee. Same root cause on the per-row level (
BC_INSUFFICIENT_SOL_FOR_FEE). Top up the source wallet. - Can’t collect. The amount resolved to zero for that wallet, often because it holds none of the selected token, so the row is skipped. Check the balance and the mode.
- Destination needs rent (
BC_DESTINATION_NEEDS_RENT). An empty destination wallet has to receive at least the rent-exempt minimum in the first transfer that lands. The tool sends the largest row that can do that first, on its own. If no row is big enough, the small rows are skipped; send the destination a little SOL and run again. - Source is not a wallet (
BC_SOURCE_NOT_A_WALLET). The address behind that key is not a regular wallet (it looks like a token or nonce account), so it cannot send and the row is skipped. - Transfer or confirm timeout. The network was busy. Use “Keep Only Failed” and run again.
- Rent guard kicked in. If a partial collection would leave a wallet stranded between zero and the rent-exempt minimum, the tool sweeps it fully to zero instead, to avoid a rent error.
Practical tips
#practical-tips- Type exact amounts into the table when you already know how much to pull from a wallet. The import reads keys only, but an edited Collect Amount beats the global mode, so you can mix precise targets with mode-driven rows.
- Reclaim rent after the sweep. Emptying a token account leaves its rent deposit in place. When you are done with an SPL token in a wallet, run Close Account on the emptied account to get the deposit back.
- See what is in the wallets before you sweep. Your import here is private keys, so derive the public address of each source wallet first, then paste that address list into Wallet Scope. You get SOL, token balances, and wallet age in one table, which tells you which wallets are worth the per-wallet fee and which hold nothing but dust. Wallet Scope takes up to 500 addresses per run, so a source list longer than that needs more than one pass.
- Watch Arrives at destination, not Total SOL in wallets. The totals show both. Arrives at destination is what lands after the per-wallet fee, and on a long list of small balances the gap between the two tells you whether the sweep is worth running at all. On a token run it counts the token only, not the SOL swept with it.
Related tools
#related-toolsHelp
#helpThe tool on this page
Batch Collector
j.tools/en/tools/batch-collector
- Platform fee
- 0.001 SOL per source wallet
- Network fee, rent and transaction value are separate.
© 2026 J Tools