What is a lamports to SOL converter?
A lamports to SOL converter divides an integer lamport count by 109 to express it in SOL and multiplies by 109 to go back. The lamport is the smallest unit of Solana's native token; every balance, transfer and rent figure the runtime and the JSON-RPC API handle is an integer number of lamports, and SOL with 9 decimals is only how wallets display it.
Solana units table
| Unit | Lamports | SOL | Where you meet it |
|---|---|---|---|
| micro-lamport | 0.000001 | 10-15 | priority fee price per compute unit |
| lamport | 1 | 0.000000001 | RPC balances, instruction data, rent |
| SOL | 1,000,000,000 | 1 | wallets, exchanges |
Lamports in practice
- Balances:
getBalancereturns{ "value": 1500000000 }for 1.5 SOL. - Transfers:
SystemProgram.transfer({ lamports: 100_000_000 })sends 0.1 SOL. In web3.js the constantLAMPORTS_PER_SOLequals 1e9. - Rent:
getMinimumBalanceForRentExemption(size)returns lamports; every account must hold at least that much to persist. - Priority fees: set in micro-lamports per compute unit; a 200,000 CU transaction at 10,000 micro-lamports/CU adds 2,000,000,000 micro-lamports = 2,000 lamports = 0.000002 SOL.
Why not use floating point?
1e9 fits comfortably in a double, but balances such as 123,456,789,123,456,789 lamports do not: JavaScript's Number is only exact up to 253. This converter uses BigInt so very large treasury balances convert exactly.
Worked example
A wallet shows 3.25 SOL. The RPC balance is 3.25 × 109 = 3,250,000,000 lamports. Sending 0.1 SOL to another address and paying one signature fee leaves 3,250,000,000 − 100,000,000 − 5,000 = 3,149,995,000 lamports, which the wallet displays as 3.149995 SOL. Keeping the figure as an integer avoids rounding when it is later multiplied by a price or summed across many accounts.
Validate a Solana address with the Solana address validator or create a payment code with the Solana Pay QR generator.