Skip to content
yieldo.

Uniswap liquidity: price range, token balances and collecting fees

Written by Yieldo ·
A creature adjusts channel gates, with crystals collecting in the basin between them.

A Uniswap liquidity position earns swap fees while the pool price is inside its selected range. As trades move that price, the position exchanges one asset for the other. Outside the range, its liquidity sits in a single asset and stops earning new swap fees; earlier fees remain available to collect.

Collecting fees sends the accrued tokens to your wallet while leaving liquidity in the pool. Removing liquidity returns some or all of the position’s current assets. This guide follows a USDC/WETH position on Ethereum, from choosing a range to receiving the tokens back.

One pool, one version, one price direction

The example is Uniswap v3’s USDC/WETH pool on Ethereum with a 0.05% swap fee. Its address is 0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640. WETH is the token form of ETH used by this pool; Ethereum network costs are paid in ETH.

Throughout the example, price means USDC for one WETH. A rise from 2,500 to 3,000 therefore means WETH becomes more expensive. Reversing the pair in an interface also reverses the displayed price and range. The 0.05% is a charge on swaps through this pool, not a return paid on your deposit.

The numerical position below is a teaching example, with chosen prices and amounts. It is separate from the pool’s current market price. The Uniswap ecosystem guide covers its swap interface, wallet and other products.

What the range does to your tokens

A A shared reserve of assets in a smart contract used for swaps. Participants contribute assets and receive a share of fees under the pool’s rules. holds assets that traders exchange against. A liquidity provider, or LP, supplies part of those assets. In v3, you choose a lower and upper price for your position. This is concentrated liquidity: your capital supports swaps within that interval.

Suppose the chosen range is 2,000–3,000 USDC per WETH. While the price is between those bounds, the position uses both tokens. As WETH rises, traders take WETH from the position and supply USDC. As WETH falls, the position accumulates WETH and gives up USDC.

Above the upper bound, the principal is entirely USDC. Below the lower bound, it is entirely WETH. The position stays open, and if the price returns inside its range, it participates again. Uniswap’s concentrated-liquidity documentation describes this mechanism.

The interface aligns the range to permitted price steps, called ticks. It may therefore round your inputs. A narrower range concentrates capital more heavily around the current price, but a smaller move can take it out of use. A full-range position covers a much wider interval and spreads the same capital more thinly.

Swaps and liquidity

What happens to assets in a pool

Choose an action or an LP state. The range determines whether a v3/v4 position participates in current swaps.

Swap tokens

  1. 01Input asset
  2. 02Route through liquidity
  3. 03Output asset into the wallet

Execution changes the asset in your wallet. A minimum output limits adverse execution; a large price move can cause the transaction to revert.

Mechanism rules ↗

LP: price within the range

  1. 01Assets into a selected range
  2. 02Swaps use the position
  3. 03Trading fees accrue

A v3/v4 position earns its share of active-liquidity fees. Its asset mix changes with price. Available fees are collected separately from reducing liquidity.

Mechanism rules ↗

LP: price outside the range

  1. 01Price crosses a boundary
  2. 02Position holds one asset
  3. 03Trading fee accrual pauses

Accrued fees remain attached to the position. New trading fees resume when price re-enters the range; choosing another range requires changing the allocation. Withdrawal returns the current asset mix.

Mechanism rules ↗

A $10,000 position as the price moves

Choose an initial price of 2,500 USDC/WETH and a range of 2,000–3,000. Value 1 USDC at $1. In the continuous-price model, a $10,000 deposit requires approximately 1.808577 WETH and 5,478.56 USDC. The dollar split is not necessarily 50/50: it depends on the price’s location within the range.

Price, USDC/WETHWETH principalUSDC principalPrincipal value
1,500: below the range4.2586620$6,387.99
2,500: starting point1.8085775,478.56$10,000.00
2,750: inside the range0.8425798,011.42$10,328.52
3,500: above the range010,431.55$10,431.55

These principal amounts exclude accrued fees and transaction costs. They use exact example bounds without tick rounding. Amounts shown for a real transaction also reflect the pool price when that transaction executes.

Reproduce the calculation

Let a=2,000, b=3,000 and P be the price in USDC per WETH. Set Q=min(max(P,a),b). In these human-readable units:

WETH=L×(1/√Q−1/√b)
USDC=L×(√Q−√a)

Choose L so that the initial tokens are worth $10,000 at P=2,500. This gives L≈1,037.87259461. At each later price, principal value is WETH×P+USDC. This is the reserve relationship described in the v3 whitepaper; L here uses normalized token units rather than the contract’s raw decimal-scaled units.

Fee income and your overall result

Your fee share depends on your liquidity relative to other active liquidity at the prices each swap crosses. Dividing your deposit by the pool’s total dollar balance does not capture that share. A trader’s swap fee can also include a protocol portion under the pool’s settings; LPs receive the part allocated to liquidity providers. The fee documentation separates those flows.

The guide to fee recipients compares liquidity providers, stakers and voters. Their rewards come from different positions and rules.

At 3,500, the example position holds 10,431.55 USDC. Keeping the original 1.808577 WETH and 5,478.56 USDC in a wallet would instead be worth $11,808.58. The LP principal is $1,377.03 behind that holding benchmark because it sold WETH as the price rose.

Now assign $120 of accumulated fees and $20 of total transaction costs to the example. The LP result becomes $10,531.55: a $531.55 gain over the original $10,000, while still trailing the unchanged-token benchmark by $1,277.03. This shows how positive fee income can coexist with a weaker result than holding the assets.

The gap between the LP’s assets and holding the original tokens is commonly called impermanent loss. It can change if the relative price changes again. For your result at withdrawal, compare both strategies at the same price and include fees and all costs. The example assigns fee income; it does not estimate an annual rate.

Open a v3 position

Open this pool in the official web app and use a wallet connected to Ethereum. The v3 creation guide covers token approval and creating the position:

  1. Select Add liquidity on the pool page. The creation screen identifies USDC/ETH, Ethereum, v3 and the 0.05% fee. These settings direct the deposit to this existing pool.
  2. Choose Custom range and read the unit beside the price inputs. Our example uses 2,000–3,000 USDC per WETH. If the editor instead shows WETH per USDC, the same interval is 1/3,000–1/2,000, or approximately 0.00033333–0.0005; the lower and upper bounds reverse when taking reciprocals. The app rounds the bounds to ticks and calculates the matching token amount.
  3. Review the two deposit amounts, range and network cost. Keep ETH available for A measure of the work a network performs to process a transaction. The network fee depends on the amount of work and its price, and is paid in the asset specified by the network rules.. Authorize token spending if requested, then confirm position creation in the wallet.
  4. After confirmation, open the position details. The position A token with its own identifier representing a collectible, an in-game item or another digital asset. The blockchain records which address owns the token. records ownership; its details show the range, current assets and available fees. Save the transaction and position identifier for later management.

Approval authorizes the contract to spend the specified token; creating the position actually deposits assets. An approval alone does not create active liquidity.

Collect fees, withdraw or change the range

Collect fees: open your position, select Collect fees → Collect and confirm. The accrued tokens arrive in the wallet; principal liquidity and range stay in place. With Collect as WETH, ETH-side fees are received as WETH. Fee collection has its own network cost. See the v3 collection instructions.

Withdraw: choose Remove liquidity and the percentage to remove. Review the token amounts and confirm. Removing 100% returns all current principal and available fees; a partial removal leaves the remaining liquidity in the same range. Completion means a confirmed transaction and receipt of the tokens in your wallet. The removal guide shows the sequence.

Change the range: remove the existing liquidity and create a new position with the desired bounds. If the old position is entirely USDC and the new range includes the current price, the new deposit needs WETH too. Swapping part of the withdrawal changes the balances and adds execution costs.

Leaving the original range in place keeps its current token composition until trading resumes inside it. Repositioning restores participation at different prices, with a new composition and fresh costs. The official range-change guide uses removal followed by creation.

How this carries over to v4

Uniswap v4 keeps concentrated liquidity, but a pool can attach a hook: a smart contract that changes behavior around swaps or liquidity actions. Pool identity includes its tokens, fee settings, tick spacing and hook address. A v4 pool for the same pair can therefore have different rules from the v3 example. Uniswap’s hook overview explains those extension points.

For an existing position, start with its version, network and range, then choose the action you need: collect income, recover assets or move the range. The Uniswap hub connects the interface and pool mechanics.

Sources and check date

Y
Yieldo

Data aggregated from 7+ exchanges via Yieldo's methodology.

How we publish, date and correct material — editorial policy.

Keep exploring

Related Articles