Fix: USDC Showing 6 Decimals on Arbiscan (2026 Guide)
Published on 2026-07-02
## Anti-Loss Protocol: Your USDC Is Not Broken
If you looked up the USDC contract on Arbiscan and saw "Decimals: 6" instead of the 18 you expected, **your tokens are fine.** USDC natively uses 6 decimals on every chain -- Ethereum, Arbitrum, Base, Polygon, Solana, and all others. The 18-decimal tokens you may have seen elsewhere are wrapped or bridged versions. Do not attempt to "fix" the decimals by sending tokens anywhere.
---
## Why USDC Shows 6 Decimals on Arbiscan
USDC (USD Coin) is issued by Circle. Circle designed USDC to use **6 decimals** from day one. This is not an Arbitrum-specific thing -- it is the same on every chain:
| Chain | USDC Contract Decimals |
|-------|----------------------|
| Ethereum Mainnet | 6 |
| Arbitrum | 6 |
| Base | 6 |
| Optimism | 6 |
| Polygon | 6 |
| Solana (SPL) | 6 |
| Avalanche | 6 |
If you see USDC with 18 decimals somewhere, it is likely a **bridged or wrapped version** (e.g., USDC.e on Avalanche, or bridged USDC from a third-party bridge). Native Circle USDC is always 6 decimals.
---
## The Specific Contract: 0xaf88d065e77c8cC2239327C5EDb3A432268e5831
This is the **official native USDC contract on Arbitrum**, deployed by Circle. Here is what you need to know:
| Property | Value |
|----------|-------|
| Contract Address | 0xaf88d065e77c8cC2239327C5EDb3A432268e5831 |
| Token Name | USD Coin (USDC) |
| Decimals | 6 |
| Issuer | Circle Internet Financial |
| Network | Arbitrum One |
| Block Explorer | [arbiscan.io](https://arbiscan.io/token/0xaf88d065e77c8cc2239327c5edb3a432268e5831) |
This is the **canonical** USDC on Arbitrum. If you are using a DeFi protocol on Arbitrum, this is the USDC you want.
---
## How to Read Your USDC Balance Correctly
With 6 decimals, the math is simple:
- **1 USDC = 1,000,000 raw units** (10^6)
- If Arbiscan shows your balance as `500000000`, that is **500 USDC** (500,000,000 / 1,000,000)
- If your wallet shows `0.000001`, that is **1 raw unit** (essentially dust)
**Quick conversion:** Divide the raw balance by 1,000,000 to get the human-readable USDC amount.
Most wallets (MetaMask, Rabby, Coinbase Wallet) handle this automatically. Arbiscan also displays the formatted balance on the token holder page. The "Decimals: 6" field is metadata -- it tells applications how to format the number.
---
## USDC vs USDC.e: Why There Are Two Versions on Arbitrum
If you search "USDC" on Arbiscan, you may find two contracts:
| Version | Contract | Decimals | Origin |
|---------|----------|----------|--------|
| Native USDC | 0xaf88d065e77c8cC2239327C5EDb3A432268e5831 | 6 | Circle (official) |
| Bridged USDC.e | 0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8 | 6 | Bridged from Ethereum |
**USDC.e** is the old bridged version that existed before Circle deployed native USDC on Arbitrum. Most protocols have migrated to native USDC. If you still hold USDC.e, you can swap it 1:1 for native USDC on most DEXs or through the [Circle Cross-Chain Transfer Protocol](https://www.circle.com/en/cross-chain-transfer-protocol) (CCTP).
---
## Common Confusion: Why 6 and Not 18?
Most ERC-20 tokens use 18 decimals (like ETH itself). This is a convention, not a rule. Here is why USDC uses 6:
1. **Fiat precision:** The US dollar has 2 decimal places (cents). 6 decimals gives micro-cent precision -- more than enough for any financial application.
2. **Gas efficiency:** Smaller numbers use less storage and cost less gas to transfer. 6 decimals means smaller uint256 values.
3. **Banking standard:** Traditional finance systems use 2-6 decimal places. Circle matched this.
Tokens that use 18 decimals (like DAI, WBTC, most DeFi tokens) follow the ETH convention. Tokens that use 6 decimals (USDC, USDT, PAXG) follow the fiat convention. Both are correct.
---
## What If Your Wallet Shows the Wrong Balance?
If your wallet shows 0 USDC but Arbiscan shows a balance:
1. **Make sure you added the correct contract.** In MetaMask, use "Import Tokens" and paste `0xaf88d065e77c8cC2239327C5EDb3A432268e5831`. The symbol and decimals should auto-fill.
2. **Check you are on Arbitrum network.** Your wallet must be connected to Arbitrum One (Chain ID: 42161).
3. **Do not add USDC.e by mistake.** If you hold native USDC but add the USDC.e contract, your balance will show 0.
If your wallet shows a wildly wrong balance (e.g., billions of USDC):
- You may have added a scam token with the same name. Remove it and re-add using the official contract address above.
- Some wallets display raw units before formatting. Divide by 1,000,000.
---
## How to Verify the Official USDC Contract
Always verify token contracts before interacting with them:
1. Go to [Circle's official USDC page](https://www.circle.com/en/usdc)
2. Scroll to "USDC on Arbitrum" or "Deployments"
3. Confirm the contract address matches: `0xaf88d065e77c8cC2239327C5EDb3A432268e5831`
4. Alternatively, check [CoinGecko USDC page](https://www.coingecko.com/en/coins/usdc) under "Info" for verified contract addresses
Never trust a contract address from a random Google result, Telegram message, or Discord DM. Scammers deploy fake USDC tokens with the same name and symbol.
---
## Quick Reference Card
```
Official Arbitrum USDC:
Address: 0xaf88d065e77c8cC2239327C5EDb3A432268e5831
Decimals: 6
Symbol: USDC
Issuer: Circle
Arbiscan: arbiscan.io/token/0xaf88d065e77c8cc2239327c5edb3a432268e5831
Balance math:
Raw / 1,000,000 = Human-readable USDC
Example: 1,500,000,000 raw = 1,500 USDC
```
---
## Bottom Line
USDC uses 6 decimals on Arbitrum (and every other chain) by design. The contract at `0xaf88d065e77c8cC2239327C5EDb3A432268e5831` is the official native USDC deployed by Circle. Your tokens are not broken, your balance is not wrong, and you do not need to do anything. Just divide the raw number by 1,000,000 to get your actual USDC balance.
For comparing fees when moving USDC between networks, use our [Compare Network Fees](https://cryptonetworkguide.com/) tool.
*Last updated: July 2, 2026.*