How to Use Base Sepolia Testnet: Deploy Contracts & Get Test ETH (2026)
Base Sepolia is the canonical testnet for Base — Coinbase's Ethereum L2. It mirrors Base mainnet exactly, costs nothing to use, and resets periodically. If you're building on Base, you should be testing here before spending real ETH.
Network Details
Add Base Sepolia to MetaMask or any EVM wallet:
| Field | Value | |-------|-------| | Network Name | Base Sepolia | | RPC URL | https://sepolia.base.org | | Chain ID | 84532 | | Currency Symbol | ETH | | Block Explorer | https://sepolia.basescan.org |
Or use Chainlist.org and search "Base Sepolia" to add in one click.
Getting Testnet ETH
You need Sepolia ETH to pay gas. Base Sepolia uses bridged Sepolia ETH — get it from:
- Coinbase Developer Platform faucet (faucet.coinbase.com) — requires sign-in, gives 0.1 ETH/day
- QuickNode faucet (faucet.quicknode.com/base/sepolia) — no account required
- Alchemy Base Sepolia faucet — requires Alchemy account
- Bridge from Ethereum Sepolia — get Sepolia ETH first, then bridge via bridge.base.org (slow but reliable)
If faucets are dry: join the Base Discord and ask in #testnet-faucet. The community usually helps.
Deploying a Contract with Hardhat
1. Install dependencies:
npm install --save-dev hardhat @nomicfoundation/hardhat-toolbox
2. Configure hardhat.config.ts:
import { HardhatUserConfig } from "hardhat/config";
const config: HardhatUserConfig = {
solidity: "0.8.24",
networks: {
baseSepolia: {
url: "https://sepolia.base.org",
accounts: [process.env.PRIVATE_KEY!],
chainId: 84532,
},
},
etherscan: {
apiKey: {
baseSepolia: process.env.BASESCAN_API_KEY!,
},
customChains: [{
network: "baseSepolia",
chainId: 84532,
urls: {
apiURL: "https://api-sepolia.basescan.org/api",
browserURL: "https://sepolia.basescan.org",
},
}],
},
};
export default config;
3. Deploy:
npx hardhat run scripts/deploy.ts --network baseSepolia
Deploying with Foundry
forge script script/Deploy.s.sol \
--rpc-url https://sepolia.base.org \
--broadcast \
--verify \
--etherscan-api-key $BASESCAN_API_KEY
Get a free Basescan API key at basescan.org/register. Verification makes your contract ABI public and readable on the explorer — essential for debugging and user trust.
Verifying Contracts on Basescan
Verification links your deployed bytecode to your source code. Once verified:
- Users can read/write contract functions directly on Basescan
- Tenderly and other tools can decode your transactions
- Auditors can review your code
If auto-verify fails during deployment, verify manually:
forge verify-contract \
<DEPLOYED_ADDRESS> \
src/MyContract.sol:MyContract \
--chain-id 84532 \
--etherscan-api-key $BASESCAN_API_KEY
Testing Your Dapp UI on Testnet
- Switch MetaMask to Base Sepolia
- Connect your frontend (wagmi, ethers.js, viem all support it)
- Use testnet contract addresses — keep a separate
.env.testnetfile - Test the full user flow: connect → approve → transact → confirm
Always test with real user flows, not just unit tests. Gas estimation, wallet UX, and RPC edge cases only surface with end-to-end testing.
Common Issues
- "Insufficient funds" — faucets sometimes give ETH that takes 5-10 min to arrive; be patient
- "Nonce too high" — reset your MetaMask account (Settings → Advanced → Reset Account) after using multiple RPCs
- Slow transactions — Base Sepolia is sometimes slower than mainnet; don't assume your code is broken