Satoshis, Lamports, and Token Decimals: Understanding Crypto's Smallest Units
Bitcoin has satoshis, Ethereum has wei, and Solana has lamports. Every cryptocurrency defines its smallest indivisible unit differently. Here's how token decimals work and why they matter for developers and users.
When someone says they own "0.001 Bitcoin," what they actually hold on the blockchain is 100,000 satoshis. When a smart contract transfers "1.5 ETH," it actually moves 1,500,000,000,000,000,000 wei. When a Solana program credits "2.5 SOL," it records 2,500,000,000 lamports. Every cryptocurrency and token operates internally on integers — whole numbers with no decimal points. The decimal representations that users see in wallets and on exchanges are a display convention, not a blockchain reality.
Understanding the relationship between a token's smallest unit and its human-readable display value is fundamental to working with cryptocurrency at any level — from basic transactions to smart contract development to building trading bots. This article explains how the major blockchain denominations work, what token decimals mean, and where the math goes wrong if you don't pay attention.
Why Blockchains Use Integers
Computers have a well-documented problem with decimal arithmetic. The number 0.1 cannot be represented exactly in binary floating-point format — it becomes a repeating fraction, like 1/3 in decimal. This means that floating-point arithmetic produces rounding errors: 0.1 plus 0.2 does not equal exactly 0.3 in most programming languages. It equals something like 0.30000000000000004.
For financial systems, rounding errors are unacceptable. A bank that loses a fraction of a cent on every transaction would accumulate significant discrepancies over millions of operations. Blockchain systems, which process irreversible financial transactions, have even less tolerance for imprecision.
The solution is integer arithmetic. Instead of representing 1.5 ETH as the floating-point number 1.5, Ethereum represents it as the integer 1,500,000,000,000,000,000 (1.5 times 10 to the 18th power). All arithmetic — addition, subtraction, multiplication, comparison — is performed on these integers. The decimal point is a purely cosmetic convention applied by wallets and interfaces when displaying values to humans.
Bitcoin: Satoshis
Bitcoin is divisible to 8 decimal places. Its smallest unit is the satoshi (sat), named after Bitcoin's pseudonymous creator Satoshi Nakamoto. One bitcoin equals 100,000,000 satoshis — one hundred million.
The conversion is straightforward: 1 BTC equals 100,000,000 sats. 0.001 BTC equals 100,000 sats. 0.00000001 BTC equals 1 sat. You cannot send less than 1 satoshi on the Bitcoin blockchain (though the Lightning Network can handle sub-satoshi amounts called millisatoshis).
As Bitcoin's price has risen, satoshis have become an increasingly practical unit for everyday transactions. When Bitcoin is worth 60,000 dollars, one satoshi is worth 0.0006 dollars — still tiny, but a cup of coffee at 5 dollars costs about 833,333 sats, a number that's large enough to work with comfortably.
The Bitcoin community has increasingly adopted "sats" as the default denomination for small amounts. Exchanges and wallets that display prices in sats normalize the idea that you can own useful amounts of Bitcoin without owning "a whole bitcoin."
Ethereum: Wei, Gwei, and Ether
Ethereum takes divisibility much further. Its smallest unit is wei, named after Wei Dai, the cryptographer who created b-money (a precursor to Bitcoin). One ether equals 10 to the 18th power wei — one quintillion. Ethereum uses 18 decimal places, compared to Bitcoin's 8.
The 18-decimal-place system creates numbers too large for comfortable daily use, so the Ethereum ecosystem uses intermediate denominations. The most important is gwei (gigawei, or one billion wei), which is the standard unit for gas prices. One ether equals one billion gwei.
Other named denominations exist in the specification — kwei (babbage), mwei (lovelace), microether (szabo), milliether (finney) — but gwei is the only intermediate unit widely used in practice. Our Ethereum unit converter and wei-to-gwei converter handle all these conversions. For a comprehensive breakdown of the gas fee system that depends on these denominations, see our article on Ethereum gas fees explained.
The choice of 18 decimal places was deliberate. Ethereum was designed to support tokens with varying decimal precision. The base currency (ether) was given the maximum practical precision so that tokens built on Ethereum could choose any number of decimals up to 18 without exceeding the system's native precision.
Solana: Lamports
Solana's native currency SOL is divisible to 9 decimal places. Its smallest unit is the lamport, named after Leslie Lamport, the computer scientist known for his contributions to distributed systems (including the Lamport timestamp and LaTeX). One SOL equals 1,000,000,000 lamports — one billion.
The 9-decimal-place system puts Solana between Bitcoin (8 decimals) and Ethereum (18 decimals) in terms of precision. For most practical purposes, 9 decimals is more than sufficient — it allows representing amounts as small as one-billionth of a SOL, which at typical SOL prices is a fraction of a millionth of a cent.
Solana's choice of 9 decimals also simplifies the math compared to Ethereum. Working with numbers up to 10 to the 9th power is manageable in most programming contexts, while Ethereum's 10 to the 18th power numbers frequently exceed the safe integer range of JavaScript (2 to the 53rd power, approximately 9 times 10 to the 15th) and require BigInt or specialized libraries.
Token Decimals: The ERC-20 Standard
Beyond native currencies, every token on Ethereum (and compatible chains) defines its own decimal precision through the ERC-20 standard. When you create an ERC-20 token, you specify a decimals value that tells wallets and interfaces how to translate between the on-chain integer and the human-readable display value.
Most ERC-20 tokens use 18 decimals to match ether, but there are notable exceptions. USDC and USDT (two of the largest stablecoins) use 6 decimals, mimicking the precision of US dollars and cents with four extra decimal places. WBTC (Wrapped Bitcoin) uses 8 decimals to match Bitcoin's satoshi precision. Some tokens use 0 decimals — these are truly indivisible units, often used for NFT-like tokens or governance tokens where fractional ownership doesn't make sense.
The decimals value doesn't change how the token works on-chain. The smart contract only knows about integers. If a token has 6 decimals and the contract holds 1,500,000 units, wallets display that as 1.5 tokens. If it has 18 decimals and the contract holds 1,500,000,000,000,000,000 units, wallets also display that as 1.5 tokens. The display is the same; the underlying integer is vastly different.
Where Decimals Cause Problems
Decimal handling is one of the most common sources of bugs in cryptocurrency applications.
JavaScript integer limits. JavaScript's Number type uses 64-bit floating-point representation, which can only represent integers exactly up to 2 to the 53rd power (about 9 times 10 to the 15th). An Ethereum token balance of 10,000 tokens with 18 decimals is 10,000 times 10 to the 18th — 10 to the 22nd — far beyond this limit. Any JavaScript code that processes Ethereum amounts as regular numbers will silently lose precision. The solution is BigInt (native to modern JavaScript) or libraries like ethers.js and web3.js that handle large integers correctly.
Mismatched decimals in DeFi. When a smart contract swaps between two tokens with different decimal values (say, ETH with 18 decimals and USDC with 6 decimals), the conversion math must account for the 12-order-of-magnitude difference. A bug that forgets to scale between decimals can result in transactions that are off by a factor of a trillion. Multiple DeFi exploits have involved decimal mismatch errors.
Display truncation. Wallets typically truncate displayed values to a reasonable number of decimal places — showing "0.001234 ETH" rather than "0.001234567890123456 ETH." This is fine for display, but if the truncated value is used in calculations or form inputs, precision is lost.
Cross-chain transfers. Moving tokens between chains with different native decimal systems (e.g., bridging an 18-decimal Ethereum token to Solana's 9-decimal environment) requires careful decimal adjustment. The bridge must decide whether to truncate precision or reject amounts that can't be represented exactly in the destination system.
Denomination Tables
For quick reference, here are the main denominations for the three largest blockchains by usage.
Bitcoin uses 8 decimal places: 1 BTC equals 100,000,000 satoshis. The only commonly used denomination beyond these two is the millibitcoin (mBTC), equal to 100,000 satoshis.
Ethereum uses 18 decimal places: 1 ETH equals 1,000,000,000 gwei equals 1,000,000,000,000,000,000 wei. Named intermediate units (szabo, finney) exist but are rarely used outside of technical documentation.
Solana uses 9 decimal places: 1 SOL equals 1,000,000,000 lamports. No intermediate denominations are in common use.
Working with Denominations
Our Ethereum unit converter converts between wei, gwei, ether, and all other named Ethereum denominations. Our wei-to-gwei converter handles the most common gas-related conversion. For evaluating investment returns across different denominations, our crypto profit calculator works with standard display values.
When working with raw hex values from blockchain RPCs and explorers, our hex-decimal converter translates between the hexadecimal representation (common in Ethereum RPC responses) and the decimal values needed for human-readable display. And for formatting large numbers with proper comma separation, our number formatter makes wei-scale values readable.
The Bottom Line
Every cryptocurrency amount you see in a wallet or on an exchange is a cosmetic translation of an underlying integer. Bitcoin counts in satoshis (8 decimals), Ethereum counts in wei (18 decimals), Solana counts in lamports (9 decimals), and every ERC-20 token defines its own decimal precision. The decimal point exists only in the user interface — on the blockchain, everything is whole numbers. Understanding this distinction is essential for developers building on any chain, and it's the reason why tools that convert between denominations aren't just convenient — they're necessary for working with cryptocurrency correctly.
References
Bitcoin Wiki — Units — Official documentation of Bitcoin denominations.
Ethereum.org — Gas and Fees — Ethereum denomination system in the context of gas pricing.
Alchemy — Wei, Gwei, and ETH — Ethereum unit conversion reference.
Solana Documentation — Terminology — Solana's definition of lamports and SOL.
ERC-20 Token Standard — The specification that defines the decimals function for Ethereum tokens.