Guide
How to Create an ERC-20 Token (Without Writing Solidity)
An ERC-20 token is a smart contract you deploy on an EVM chain. You can write that contract in Solidity (Remix or Hardhat) or deploy a standard OpenZeppelin-based contract from a form. This guide covers all three paths, then walks the ERC-20 token generator so you can test on Sepolia and verify on the explorer.
By the MoonSol team · About the authors · Published 13 September 2026 ·
What an ERC-20 token actually is
ERC-20 is the fungible-token interface on Ethereum and compatible chains. Any wallet, DEX, or explorer that speaks ERC-20 can list a compliant contract the same way it lists USDC or WETH. The contract holds balances and exposes a small set of functions; the rest of the ecosystem does not care whether you wrote it by hand or deployed a generator template, as long as the interface matches.
| Function | What it does |
|---|---|
| transfer | Send tokens from the caller to another address |
| approve | Let a spender (a router, a vault) pull tokens later |
| transferFrom | The spender actually moves the approved amount |
| balanceOf | Read an address's balance |
| totalSupply | Read circulating supply stored in the contract |
| decimals | How wallets display amounts (18 is the Ethereum convention) |
Three ways to create an ERC-20 token
Hardhat is cheaper in money if you already have the toolchain. A custom contract is required if you need logic MoonSol does not compile. The form does not replace an audit of novel Solidity.
| Path | Time | Cost beyond gas | When it is the right choice |
|---|---|---|---|
| Remix | Hours the first time | None | You want to read and compile the contract in a browser IDE |
| Hardhat | A day if you are new | None | You already write Solidity, need tests, or need custom logic |
| MoonSol form | Minutes | 0.001 ETH-equivalent + gas | You want a standard OpenZeppelin-based ERC-20 and will test first |
Create ERC-20 on Base — or pick the network first
The contract cannot move later. How to create an ERC-20 token starts with the chain your buyers already use, not the name. As of September 2026, MoonSol deploys on the EVM networks listed on the generator. Gas is variable — treat the notes as character, not a quoted gwei.
| Network | Typical reason to pick it |
|---|---|
| Base, BNB Smart Chain, Polygon | Default for most launches — cheap gas, large retail wallets |
| Arbitrum, Optimism | Ethereum-adjacent users who already live on that L2 |
| Ethereum mainnet | Credibility and listings that insist on L1; gas is dollars, not cents |
| The rest of the list | Pick only if your buyers are already there |
If you do not have an EVM reason, read how to create a Solana token instead. Sui is a third model — see the Sui token creator.
Mintable vs fixed supply ERC-20
Features are compiled in. None of mintable, pausable, or blacklist can be added after deploy. Token scanners will show whatever you left on, the next day.
Mintable
The owner can create new supply. Necessary for emissions; fatal to a “fixed supply” story if the key sits on a hot wallet. If you enable it, plan to transfer ownership to a multisig or renounce ownership when minting is done.
Pausable
The owner can halt transfers, including DEX swaps. A real emergency brake and a real centralisation flag.
Blacklist
The owner can block addresses from transferring. Used against bots; read by holders as discretionary control.
Do not enable mint, pause, or blacklist unless you have a written reason. Fixed supply plus no pause plus no blacklist is the default that scanners treat as ordinary.
Path A — OpenZeppelin ERC-20 in Remix or Hardhat
Official path, abbreviated. Cite OpenZeppelin Contracts. Do not paste a full contract from a blog onto mainnet without a test.
Import the library
Use OpenZeppelin’s ERC-20 implementation rather than writing balances by hand. That is the contract family reviewers already know.
Mint in the constructor
Pass name, symbol, and initial supply. Eighteen decimals is the convention unless you are mimicking a 6-decimal stable.
Compile
Remix or Hardhat will tell you if the interface does not match. Fix warnings before you think about a network.
Deploy on Sepolia (or Base Sepolia)
Use a faucet. Confirm the owner and the supply on the test explorer before you touch mainnet.
Verify source
Submit the compiler settings and source so the explorer shows readable code. Unverified contracts look like rugs.
Path B — ERC-20 token generator (no code)
This matches the live ERC-20 token generator, not a fantasy wizard. The connected wallet is owner and receives the supply; MoonSol holds no role. Platform fee is 0.001 ETH-equivalent plus gas; testnets have no platform fee. See MoonSol pricing. As of September 2026.
Connect the wallet
MetaMask, Rabby, or Coinbase Wallet. Switch to the chain you intend to use.
Pick the network — testnet first
Sepolia or Base Sepolia cost nothing in platform fees. Rehearse decimals and supply there.
Name, symbol, 18 decimals, initial supply
Supply is minted to the connected wallet. Decimals cannot be changed after deploy.
Optional features — last chance
Mintable, pausable, blacklist. If you do not need them, leave them off.
Sign, wait, then verify
Confirm the transaction. Then confirm source verification on the explorer where the API supports it (Etherscan, BscScan, Basescan, and peers).
Verify ERC-20 on Etherscan — then prove you own it
Unverified contracts look like rugs. Verification publishes the source so anyone can read mint and pause. The generator submits verification where the explorer API exists. After that, add the token in the wallet and confirm the supply on the explorer. Manage it later from the ERC-20 dashboard.
After you deploy
- ERC-20 dashboard — ownership, minting, pause, blacklist if you enabled them.
- ERC-20 multisender — allocations without a transfer per wallet.
- Add liquidity / remove liquidity on the DEX the chain actually uses.
- Transfer or renounce ownership when the launch is finished.
- Do not treat this page as a bridge or CEX listing guide. Those are separate products.
Common mistakes
- Deploying on the wrong chain because the wallet was still on Ethereum.
- Using 6 decimals “because USDC” when every wallet around you expects 18.
- Leaving mintable on a hot wallet and advertising a fixed supply.
- Skipping testnet, then discovering the name typo on a live explorer.
- Treating MoonSol — or any generator — as an endorsement. It is not. See About.
Questions readers actually ask
How much does it cost to create an ERC-20 token?
On MoonSol the platform fee is 0.001 ETH-equivalent plus the chain’s gas. Testnets have no platform fee. Mainnet gas on Ethereum is often dollars; on Base or BSC it is usually cents. Exact gwei changes by the hour — as of September 2026, budget gas separately from the platform fee.
Do I need to know Solidity?
Not for a standard OpenZeppelin-based deploy from the form. You do need Solidity (or a developer) if you want custom tax logic, a novel mint curve, or anything the generator does not compile.
Which EVM chain should I use in 2026?
Base, BNB Smart Chain, or Polygon unless your buyers are already on another network. Ethereum mainnet if a listing or partner requires L1 and you can pay the gas.
Can I add minting later?
No. Mintable is compiled in. If you deployed fixed supply, you cannot add a mint function later without a new contract and a migration.
Does creating a token on MoonSol mean the token is audited?
No. Deployment is not endorsement. MoonSol does not audit or vet projects. Source verification is a reader check, not an audit.
Create the token
Ready to deploy an ERC-20? Use the ERC-20 token generator. Fees are on pricing. To compare all three chains — or if Ethereum mainnet gas is the wrong trade — start with the Solana guide instead.