Arweave Troubleshooting
Common issues with permanent archival on Arweave.
Upload failed: Transaction rejected
Arweave nodes can reject transactions for several reasons:
- Insufficient balance — your wallet doesn't have enough AR to cover data + miner reward
- Data too large for single transaction — transactions above ~12 MB may be rejected by some nodes
- Wallet key format error — the JWK file is malformed or from a different chain
# Check your wallet balance
arweave-js:
const arweave = Arweave.init({ host: 'arweave.net', port: 443, protocol: 'https' });
const balance = await arweave.wallets.getBalance(address);
console.log(arweave.ar.winstonToAr(balance), 'AR');
# With arkb, check balance before upload
arkb balance --wallet ./wallet.json
# For large files, use Irys (formerly Bundlr) which handles chunking:
irys upload large-file.mp3 -h https://node1.irys.xyz -t arweave -w ./wallet.jsonInsufficient funds / need AR tokens
Arweave storage costs are very low but not zero. Current pricing is roughly ~$1–5 per GB stored permanently.
Ways to get AR tokens:
- Buy on exchanges: AR is on Binance, Crypto.com, Gate.io, KuCoin. Transfer to your ArConnect wallet.
- Use Irys to pay with ETH/SOL: Irys lets you pay for Arweave storage with other tokens, no AR needed.
- ArDrive Turbo Credits: Pay with a credit card via ArDrive for storage credits.
# Fund your Irys balance with ETH irys fund 10000000000000000 -h https://node1.irys.xyz -t ethereum -w your_eth_private_key # (that's 0.01 ETH in wei — enough for ~200 MB) # Check your funded balance irys balance YOUR_ETH_ADDRESS -h https://node1.irys.xyz -t ethereum
Transaction pending / stuck for hours
Arweave confirmations take time. A transaction is not final until it is mined into a block and receives sufficient confirmations.
- Normal wait time: 5–30 minutes for the first confirmation
- Full confirmation: ~50 blocks (~100 minutes) for finality
- Network congestion: Can increase wait times significantly
# Check status via gateway curl https://arweave.net/tx/YOUR_TRANSACTION_ID/status # Response statuses: # "pending" — in the mempool, waiting to be mined # 200 with JSON — confirmed, includes block height # 404 — not found (may have been dropped) # Check on ViewBlock explorer: # https://viewblock.io/arweave/tx/YOUR_TRANSACTION_ID
If stuck "pending" for over 2 hours, the transaction may have been dropped. Try re-uploading — you won't be charged for a dropped transaction.
ArConnect wallet not connecting
ArConnect is the main browser wallet for Arweave:
# 1. Make sure the extension is installed and unlocked
# Check: chrome://extensions (or about:addons in Firefox)
# 2. Check if the site has permission
# Click ArConnect icon → Settings → Apps → check permissions
# 3. Try disconnecting and reconnecting
# ArConnect icon → Connected Apps → Remove → Reconnect
# 4. If ArConnect API isn't detected in your dApp:
if (!window.arweaveWallet) {
console.log('ArConnect not detected');
// Wait for the extension to inject (it can be slow)
window.addEventListener('arweaveWalletLoaded', () => {
console.log('ArConnect is now available');
});
}Common fix: Disable other wallet extensions that might conflict (MetaMask, Phantom). Some extensions override the same browser APIs.
arkb deploy fails or shows errors
# Error: "Not enough funds" # Fix: Check your balance and fund the wallet arkb balance --wallet ./wallet.json # Error: "ENOENT: no such file or directory" # Fix: Make sure you're in the correct directory # arkb deploy expects a folder path arkb deploy ./out --wallet ./wallet.json # Error: "Invalid key file" # Fix: The wallet file must be a valid Arweave JWK JSON # Generate a new one if needed: arweave-js: const key = await arweave.wallets.generate(); # Error: timeout / network errors # Fix: Try a different gateway arkb deploy ./out --wallet ./wallet.json --gateway https://arweave.net # Error: "Transaction already exists" # This is harmless — arkb skips files that are already uploaded # It uses content-addressing, so identical files are deduplicated
Uploaded content not visible on gateways
After uploading, content may not be immediately available on all gateways:
- Wait for confirmation. Gateways won't serve unconfirmed data. Allow 10–30 minutes.
- Try alternate gateways. Different gateways may sync at different speeds.
- Cache issues. Browsers and CDNs can cache 404 responses.
TX_ID="your_transaction_id_here" # Try these gateways: curl -I "https://arweave.net/$TX_ID" curl -I "https://ar-io.dev/$TX_ID" curl -I "https://g8way.io/$TX_ID" # For manifest-based deploys, access via: # https://arweave.net/MANIFEST_TX_ID/index.html # https://arweave.net/MANIFEST_TX_ID/path/to/file.css
Manifest deploy: pages return 404
When deploying a full site with arkb, it creates a manifest that maps paths to transaction IDs. If individual pages 404:
- The manifest index might not point to
index.html— check your deploy command - Client-side routing won't work — Arweave serves static files, not an SPA
- Relative paths may break if assets reference
/as root
# Make sure to set the index file arkb deploy ./out --wallet ./wallet.json --index index.html # For Next.js static export, the output structure should be: # out/ # index.html # about/index.html # episodes/index.html # ... # Each route needs its own index.html (Next.js does this with output: 'export') # Verify the manifest after deploy: curl https://arweave.net/MANIFEST_TX_ID | jq .
High storage costs for audio files
Audio files are large and Arweave charges per byte. Strategies to reduce cost:
- Compress audio: Use Opus or AAC instead of MP3. Opus at 64kbps is excellent quality and ~50% smaller.
- Archive selectively: Archive the most important episodes first. Site HTML/CSS is tiny by comparison.
- Use Irys bundling: Bundled transactions are cheaper than base-layer Arweave transactions.
- Community funding: Split the cost among multiple supporters — each archives different episodes.
# Rough cost estimation for Arweave: # Current rate: ~5 AR per GB (check https://ar-fees.arweave.dev) # 1 AR ≈ $5-30 USD (varies with market) # # Typical podcast episode (MP3, 45 min): ~40-60 MB # Typical podcast episode (Opus, 45 min): ~20-30 MB # Full website HTML/CSS/JS: ~5-10 MB # # Cost for one episode: ~0.3-0.5 AR # Cost for full site: ~0.05 AR