All articles
solanadevnetfaucetusdcbeginner

Devnet, testnet, mainnet — Solana's clusters, and how to fund a devnet wallet

What Solana's three public clusters are for, which one you should build on, and the two faucets that fund your devnet wallet: devnetfaucet.org for SOL and faucet.circle.com for USDC.

Share
devrels.xyz/a/128short link

Solana isn't one network. It's three public clusters running the same software with different purposes, different tokens, and different rules. Deploy to the wrong one and you'll either burn real money or wonder why your "live" app has no users.

Here's the map, then the practical part: getting free devnet SOL and devnet USDC so you can actually build.

The three clusters

  • Mainnet — the real network. Real SOL with real market value, real users, real consequences. Deploying a program here costs actual SOL (a few SOL for rent depending on program size). You go here last. Naming note: it launched as mainnet-beta and the official docs have since dropped the beta — but the old identifier lives on all over the tooling (the CLI moniker, the classic RPC URL, status.solana.com), so treat mainnet-beta and "mainnet" as the same thing.
  • Devnet — the developer playground. Same runtime, same programs (SPL Token, Metaplex, etc. are all deployed), but the SOL is free and worthless by design. This is where you deploy, test, and break things. If you're building an app, devnet is your home for the entire dev cycle.
  • Testnet — for validators and core contributors, not app developers. Solana Labs / Anza stress-test new validator releases here, which means it runs ahead of mainnet and gets reset or broken more often. Common beginner mistake: assuming "testnet" is where you test your app. On Solana it isn't — that's devnet.

Each cluster has its own public RPC endpoint:

text
mainnet   https://api.mainnet.solana.com
          (legacy https://api.mainnet-beta.solana.com still works)
devnet    https://api.devnet.solana.com
testnet   https://api.testnet.solana.com

Accounts, balances, and programs do not carry across clusters. A wallet address is valid everywhere (it's just a keypair), but its devnet balance is invisible on mainnet and vice versa. Same for token mints — devnet USDC and mainnet USDC are completely different tokens (more on that below).

Switching clusters

With the Solana CLI:

bash
solana config set --url devnet    # or: mainnet-beta, testnet, localhost
solana config get                  # check where you're pointed
solana balance                     # balance on the current cluster

(Yes, the CLI moniker is still mainnet-beta — plain --url mainnet errors as of Agave 2.2. The legacy name in action.)

In wallets it's a setting: Phantom has Settings → Developer Settings → Testnet Mode (pick Solana Devnet), Solflare has a network switcher, and Backpack lets you set the RPC per wallet. Explorers too — every Solana explorer has a cluster dropdown, and ?cluster=devnet in the URL does the same. If your transaction "doesn't exist," you're almost always looking at the wrong cluster.

There's also a fourth, unofficial option: localnet via solana-test-validator, or a mainnet fork via Surfpool when you need real mainnet state without real mainnet money. But for anything involving other people — hackathon demos, testers, shared backends — devnet is the answer.

Getting devnet SOL: devnetfaucet.org

You can't buy devnet SOL (it's worthless), so you get it airdropped. The CLI has a built-in airdrop against the public RPC:

bash
solana airdrop 2 --url devnet

…but the public RPC faucet is heavily rate-limited and fails with 429 Too Many Requests exactly when you need it (i.e. during hackathons). That's the gap devnetfaucet.org fills:

  • 20 devnet SOL per airdrop — an order of magnitude more than the CLI faucet gives you, enough to deploy a mid-size program.
  • Two modes: sign in with GitHub, or request anonymously. The GitHub path exists to keep drainers out without making you do captcha gymnastics.
  • Public ledger — recent airdrops are listed with GitHub username and truncated wallet address, so the faucet's usage is transparent.

Flow: open the site → connect GitHub (or go anonymous) → paste your wallet address → receive 20 SOL on devnet. Verify with solana balance --url devnet or your wallet in devnet mode.

Solana Foundation's own faucet.solana.com also works (it gates higher amounts behind GitHub login), and solana airdrop is fine for topping up 1–2 SOL. Keep all three in your toolbox; faucets have bad days.

Getting devnet USDC: Circle's faucet

If you're building anything payments-shaped — checkout flows, x402, Solana Pay — you need devnet USDC, and SOL faucets can't help you. Circle (the USDC issuer) runs the canonical faucet at faucet.circle.com:

  • 20 USDC every 2 hours, per address, per chain. No account, no login — pick token, pick network, paste address.
  • Select USDC as the token and Solana Devnet as the network. (Circle also dispenses EURC, and supports a long list of other testnets — Ethereum Sepolia, Base Sepolia, and friends.)
  • Need more than the rate limit allows? Circle handles bulk requests through their Discord.

The devnet USDC you receive is Circle's official devnet mint:

text
devnet USDC mint    4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU
mainnet USDC mint   EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v

Hardcode the right one per environment. A depressing number of "my USDC transfer fails on mainnet" bugs are apps shipping with the devnet mint address still in the config. And don't create your own fake "USDC" mint for testing when the real issuer runs a faucet — integrations against the real mint catch real bugs (associated token accounts, 6 decimals, token program ownership).

The 60-second setup

bash
# 1. Point everything at devnet
solana config set --url devnet

# 2. Create a throwaway dev wallet (never reuse mainnet keys for dev)
solana-keygen new -o ~/.config/solana/devnet.json
solana config set --keypair ~/.config/solana/devnet.json

# 3. Fund it
#    SOL:  https://devnetfaucet.org        (20 SOL, GitHub or anonymous)
#    USDC: https://faucet.circle.com       (20 USDC / 2h, pick Solana Devnet)

# 4. Confirm
solana balance
spl-token accounts   # your USDC shows up under 4zMMC9s...ncDU

One habit worth forming from day one: separate keypairs per cluster. The wallet you paste into faucets and commit to test scripts should never be the wallet that later holds mainnet funds.

TL;DR

  • Build on devnet, ignore testnet (it's for validators), graduate to mainnet when you're ready to spend real SOL.
  • Devnet SOL: devnetfaucet.org — 20 SOL, GitHub or anonymous.
  • Devnet USDC: faucet.circle.com — 20 USDC every 2 hours, straight from the issuer.
  • Wrong-cluster confusion causes most "it doesn't work" moments — check your RPC URL, your wallet's network mode, and the explorer's cluster dropdown before debugging anything else.

Keep reading

Get new articles in your inbox

Technical deep-dives on Solana tooling, infrastructure, and ecosystem. No noise.

Devnet, testnet, mainnet — Solana's clusters, and how to fund a devnet wallet | devrels.xyz