Skip to the article
Blockheight

Crypto markets, protocols, policy

Why Cross-Chain Token Amounts Change With Decimals

Cross-chain token amounts can change because chains store integer units with different decimal scales; swaps, fees and rounding can also change what arrives.

The Blockheight Editors··2 min read

Why Cross-Chain Token Amounts Change With Decimals

A cross-chain transfer can display different token amounts on each chain because tokens may use different decimal scales, and a routed swap can change the quantity too. ERC-20 defines decimals as the number used to convert an integer balance into a human-readable amount; it does not change the contract’s integer arithmetic.

What do token decimals mean?

Decimals tell a wallet how many places to shift the decimal point when displaying a token balance. The ERC-20 specification gives the example that a token with 8 decimals divides its raw amount by 100,000,000 for display; Ethereum’s documentation uses 18 decimal places for ether and shows USDC with 6.

So a raw amount of 123,456,789 represents 1.23456789 tokens at 8 decimals, but 123.456789 tokens at 6. The raw number alone is not enough to identify the user-facing quantity: the token and its decimal setting matter.

Why can the amount change between chains?

When a bridge moves value between tokens with different decimals, its contracts or software may need to rescale the source’s raw integer into the destination’s units. That conversion can require rounding if the destination token supports fewer decimal places.

For example, converting 1.23456789 tokens from an 8-decimal representation to a 6-decimal one gives 1.234567 if the system rounds down to a whole destination unit. The remaining 0.00000089 source tokens cannot be represented at the destination’s precision; how a bridge handles that remainder depends on its design.

Bridge routes can also involve a swap, in which the output is a different token and the quantity depends on the quoted exchange rate and fees. The rango bridge explainer covers how routing fits into that picture; decimal conversion is only one possible reason the displayed amount differs.

How can you tell what amount will arrive?

Compare the token amount and unit on both sides of the transfer, then check the quoted destination amount before signing. A practical check is to confirm:

  • The token contract or asset identifier on each chain, not only its ticker.
  • The decimal setting used to display each balance.
  • Whether the route converts the same asset or swaps into another token.
  • The quoted output after fees and any displayed minimum amount.

The ERC-20 standard makes decimals optional, so applications cannot assume every token reports it. Check the token’s details for the selected chain, and treat an unexpected order-of-magnitude change as a reason to review the route and asset before approving it.

Does a different displayed amount mean value was lost?

No: the displayed token count can change while the underlying value is being represented in smaller or larger units. But a swap, fee or rounding step can also alter what is delivered, so decimals alone do not explain every difference.

Use the destination token, quoted output and minimum received amount to judge the transfer; do not compare raw integers across tokens with different decimal settings. The final amount remains subject to the route’s conversion and execution, and the treatment of any rounding remainder depends on the bridge.

Related stories