Uniswap

Uniswap concentrated liquidity ranges and in-range fees

Uniswap concentrated liquidity lets liquidity providers choose the price interval where their capital supports swaps and earns trading fees. In the standard v3 and v4 model, a position earns swap fees only while its liquidity is active within that interval. A narrower range concentrates capital around selected prices, while a wider range accommodates more price movement. Neither choice guarantees higher earnings because trading activity and competing active liquidity also matter. As swaps move the pool price, the position’s token mix changes. Outside its range, the supplied liquidity consists of one token and stops earning new swap fees. Earned fees remain separate from that liquidity.

Key takeaway: An out-of-range position can resume earning swap fees automatically if the pool price returns and its liquidity remains deposited.

Narrow, wide and single-sided ranges

Range width determines where deposited capital supports trading, while range placement determines whether the position participates at the current pool price. A narrow interval concentrates the same capital more heavily within its boundaries than a wider interval around that price. It also leaves less room for movement before liquidity becomes inactive. A wider interval spreads capital across more prices. Full-range liquidity extends that choice to the pool’s usable tick extremes. Width and placement are independent, so a narrow or wide range can begin entirely above or below the current price.

At a glance: Narrow, wide and single-sided ranges
Range choice Capital placement Participation boundary
Narrow range spanning the pool price Capital concentrated across a smaller interval Inactive after the current tick leaves its bounds
Wide range spanning the pool price Capital spread across a larger interval Inactive after the current tick leaves its bounds
Full range Capital across the pool’s usable tick interval Active only between its usable tick extremes
Range entirely above the pool price Single-sided liquidity before entry Inactive while the current tick is below its lower tick
Range entirely below the pool price Single-sided liquidity before entry Inactive while the current tick reaches or exceeds its upper tick

Range selection balances capital concentration against the amount of price movement the position can accommodate. Trading through the selected pool and competing liquidity determine how much that participation earns. A larger fee share during activity can coexist with less time earning fees. The pool’s permitted boundaries limit the choices available.

Ticks, spacing and the displayed price

Ticks define the price grid for liquidity boundaries, and tick spacing limits which grid points a pool accepts for those boundaries. The pool price can move between permitted boundary points. A position’s lower and upper ticks define its range; the pool’s current tick identifies its active interval.

The price grid

In v3 and v4, adjacent tick boundaries differ by a price factor of 1.0001. Tick spacing permits position boundaries only at multiples of that pool’s spacing. A coarser spacing therefore limits how narrowly a position can concentrate liquidity. Full-range positions use the outermost usable ticks, even when an interface describes their endpoints as zero and infinity.

The active interval

Core accounting includes a position’s liquidity when the current tick is at least its lower tick and below its upper tick. Rounded price labels can hide proximity to a boundary. The display can also quote either token in terms of the other. Reversing that quotation reverses the direction of price movement, so the quote direction matters when interpreting the range.

Fee shares follow active liquidity

A position’s swap-fee share follows its liquidity relative to all active liquidity during the relevant part of a swap. Here, liquidity is the quantity that the pricing formula uses. Wallet deposit value and total pool value don’t supply that denominator because other positions can cover different prices.

Uniswap v3 distributes the LP portion of swap fees proportionally among positions whose liquidity is active during each swap segment. As a swap crosses initialized ticks, active liquidity changes along its path and the position earns from segments within its range. Any enabled protocol fee reduces the swap-fee amount available to LPs. The fee that the pool charges therefore isn’t automatically the portion that providers receive. Trading direction also determines which input token supplies the swap fee.

Staying in range establishes eligibility for swap fees. A v4 pool with no LP fee produces no swap-fee income even during activity.

Token composition across the range

The position’s supplied token amounts change as swaps move the pool price through its interval. In v3, token0 and token1 identify the pool’s ordered assets. The directions below use the price of token0 expressed in token1, with token decimals accounted for. An interface displaying the inverse price reverses those directions.

Below the lower boundary

Below the range, the supplied principal consists of token0. It doesn’t participate in swaps while the pool remains below that boundary. Separately accrued fees can still contain token1, so a position’s total claimable assets needn’t match its single-sided principal.

Inside the boundaries

Within the interval, the liquidity generally contains both assets. Rising prices progressively exchange token0 for token1; falling prices move the composition the other way. The current price and range boundaries determine the required ratio, so trading doesn’t preserve the original token quantities.

Above the upper boundary

Above the range, the supplied principal consists of token1. The upper price bound limits the interval over which the position exchanges its assets. It doesn’t cap the market value of the remaining token or protect against that token losing value.

What happens when the pool price leaves my range?

An out-of-range position becomes inactive and holds one token as principal; leaving the range doesn’t liquidate a standard unleveraged position. Other in-range positions can continue supporting swaps while this position remains inactive. Deposited liquidity automatically becomes active again if the pool returns to its interval. Returning in range doesn’t establish recovery of the original deposit’s value. A shortfall relative to holding the original tokens is impermanent loss, before counting fees. Fees can offset that shortfall, although active status alone doesn’t establish a net gain.

Rebalancing creates exposure at new boundaries. It doesn’t reverse the trades that have already changed the token mix.

Collected fees and reinvested liquidity

Collecting fees can transfer accrued tokens without removing the position’s supplied liquidity or changing its range. Uniswap v3 stores accrued fees separately from the liquidity that earns future fees. Its standard positions don’t compound those earnings automatically.

Reinvesting fees requires another liquidity operation. The required token mix reflects the current pool price and boundaries, so single-token fee claims may not match an in-range addition. Collection and reinvestment also incur network costs when their transactions execute. Those costs affect the outcome of frequent management, even when the position earns fees. An automated manager can arrange reinvestment, but its behavior belongs to that manager’s implementation.

In the v3 position manager, decreasing liquidity updates amounts owed; collecting transfers those amounts to the chosen recipient. Collection after a decrease can contain both withdrawn capital and fees, so the transferred amount doesn’t identify fee profit by itself. An interface can combine operations within a transaction, so collection and liquidity changes don’t always require separate transactions.

Fixed boundaries and moving liquidity

Changing a standard position’s range requires moving liquidity into a position with different boundaries; adding capital preserves the existing ticks. Removing only part of the liquidity leaves the remainder in its original range. Relocation may require a swap because the available token mix can differ from the new range’s requirements. If prices change before execution, a liquidity decrease through the standard v3 or v4 position manager reverts whenever either principal token amount falls below its specified minimum. Token approvals authorize a contract to spend deposit assets, but they don’t set a position’s price boundaries or protect its withdrawal amount.

v3 pools and v4 pool settings

Pool selection changes fee and integration details even when the familiar range mechanics remain the starting point. The same asset pair can support positions with different participation rules.

v3 fixed-fee pools

A v3 token pair can have separate pools at different fixed fee tiers. Each pool has its own price, active liquidity and tick spacing, and a position participates only in its selected pool. The standard NonfungiblePositionManager represents individual positions as ERC-721 NFTs, with records that track the pair, fee tier, tick bounds, liquidity and fee accounting. A matching token pair elsewhere doesn’t make those positions interchangeable.

v4 configurable pools

In v4, the currency pair, fee setting, tick spacing and hook address together identify a pool. Fee and tick spacing are separate settings, so the v3 fee-to-spacing relationship doesn’t apply universally. A pool can use a fixed LP fee or enable dynamic fees. Hooks can change fees in dynamic-fee pools and add behavior around liquidity changes. Core liquidity modification calculates accrued fees as balance changes, with any applicable hook affecting their handling.

Hooks are optional. A pool without a hook avoids hook-specific behavior; a hooked pool can add conditions around deposits and withdrawals. Pool choice therefore includes those liquidity rules alongside the selected price range.

Graphic: Uniswap concentrated liquidity: v4 configurable pools

Open full-size image

Details worth knowing about Uniswap concentrated liquidity

Can I hold overlapping fee-earning positions in the same pool?

Yes, multiple positions in the same pool can earn swap fees simultaneously when each range includes the current tick and each has deposited liquidity. Each receives its proportional share of the active liquidity’s fee allocation. Overlapping ranges don’t multiply the same capital; splitting a deposit creates separate positions with their own liquidity amounts.

Is a single-sided liquidity range the same as a limit order?

A single-sided range can behave like a range order, but it doesn’t permanently finalize a trade after crossing. Conversion happens progressively while the price travels through the interval. If liquidity stays deposited and the price later crosses back, swaps can reverse that conversion. Withdrawing the converted liquidity stops that position’s continued participation.

Why can the v3 tokensOwed0 and tokensOwed1 fields understate claimable fees?

The v3 position manager records tokensOwed0 and tokensOwed1 during position accounting updates, so they can omit later fee growth. Calculating the available fee claim also requires the position’s liquidity and the change in fee growth inside its range since the last accounting update. After a liquidity decrease, those stored balances can also include withdrawn principal.

What transfers when I send a v3 liquidity NFT to another wallet?

Transferring a standard v3 liquidity NFT transfers control of its underlying position and uncollected fees to the recipient. The position keeps its pool, boundaries and remaining liquidity. The transfer doesn’t withdraw pool assets into either wallet or copy them. Fees already collected to a wallet stay there; they aren’t part of the transferred position.

When can I burn a v3 liquidity NFT?

The v3 NonfungiblePositionManager allows an NFT burn only when its liquidity and both tokens-owed balances are zero. Burning deletes the empty position record. Removing liquidity alone can leave collectible token amounts, so removal and NFT deletion are different operations. An empty NFT can remain after collection if its owner doesn’t burn it.

Updated ·