Pump.fun's website always picks the contract address for you. To launch at a vanity address you ground yourself, you create the coin through pump.fun's API instead. It's about ten minutes the first time, and you never hand your keys to anyone.
mint.json.This uses PumpPortal's local transaction API. PumpPortal builds the "create coin" transaction, and the script signs it on your machine with your wallet and your vanity mint. Neither key leaves your computer.
Put three things in one folder: your mint.json, your coin image (say logo.png), and the launch script.
Open a terminal in that folder and run:
npm install @solana/web3.js bs58
Your image and coin info need to live on IPFS. Make a free account at pinata.cloud, go to API Keys → New Key, give it admin access and copy the JWT.
Open launch-pump.mjs in any text editor and change the block at the top:
const COIN = {
name: 'My Coin',
symbol: 'MYCOIN',
description: 'Launched with a vanity CA.',
image: './logo.png',
twitter: '', telegram: '', website: '',
};
const DEV_BUY_SOL = 0.1; // SOL you buy at launch, 0 for noneExport the launch wallet's private key (in Phantom: Settings → Manage Accounts → your account → Show Private Key). Set it and the Pinata key in the terminal so they're never saved in a file.
Mac or Linux:
export PRIVATE_KEY="your-wallet-private-key" export PINATA_JWT="your-pinata-jwt"
Windows PowerShell:
$env:PRIVATE_KEY="your-wallet-private-key" $env:PINATA_JWT="your-pinata-jwt"
node launch-pump.mjs
This sends nothing. It shows your vanity CA, checks the wallet has enough SOL, and checks nobody has already used that address.
node launch-pump.mjs --go
It uploads your image, builds the transaction, signs it and sends it. When it finishes it prints your pump.fun link. Your coin is live at the address you ground.
If the public RPC is slow or rate-limits you, get a free RPC URL from Helius or QuickNode and set it with export RPC_URL="…" before launching.
For a token outside pump.fun, the Solana CLI takes your vanity keypair directly. This makes a Token-2022 token with built-in name, symbol and image.
spl-token --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb \ create-token --enable-metadata --decimals 6 mint.json
The link points to a JSON file with name, symbol, description and image, hosted on IPFS (Pinata works).
spl-token initialize-metadata YOUR_CA "My Coin" "MYCOIN" https://ipfs.io/ipfs/YOUR_METADATA_CID
spl-token create-account YOUR_CA spl-token mint YOUR_CA 1000000000 spl-token authorize YOUR_CA mint --disable
Disabling the mint authority means nobody can ever print more. Buyers check for this.
Create a pool on Raydium or Meteora with your tokens and SOL. Until you do, nobody can buy it.
mint.json like a private key, because it is one. Anyone who has it can create a token at your address before you do. Don't post it, don't send it to "helpers", and launch soon after grinding.No. Through the API you can use any address you ground. Ending in pump makes it look like a normal pump.fun coin. A custom word like your ticker makes the CA itself part of the meme.
The website creates the mint for you from its own pre-ground pool, and there's no upload slot for your own keypair. The API is the only way to bring your own.
Yes. The wallet that signs the launch is the creator, same as launching on the site. As of October 2026 that's 0.30% of volume on the bonding curve, and more after graduation at lower market caps. Rates change, so check pump.fun's fee page.
That keypair has been used or leaked. Grind a new one. The grinder never reuses keys.
Sharing the address is safe, since only the keypair file can create the token. But it lets snipers set up in advance, so most people reveal it at launch.