Research/Education/Uniswap/Uniswap v3 Concentrated Liquidity: Fees Earn Only In Range
# Uniswap

Uniswap v3 Concentrated Liquidity: Fees Earn Only In Range

BloFin Academy09/12/2026
What concentrated liquidity is on Uniswap v3: in-range positions earn swap fees, out-of-range NFTs still hold tokens, and fee tiers split the same pair.

Posting both assets for other people to trade against usually means sitting at every possible price, including prices nobody will use this month, which spreads your capital thin at the prices that actually trade.

You wanted to earn fees near the current market, but a full-curve deposit parks a large slice of your capital at prices that never trade. When the market then leaves the zone you cared about, fee income can stop while the tokens you posted are still sitting in the position.

Concentrated liquidity answers that by letting you choose a price interval, so fees accrue to that position while the market sits inside the interval, and when the market leaves, fees pause and the position often holds almost all of one asset.

Uniswap v3 is that design: you pick a band and a fee tier, and you receive an NFT for that one range. At the 0.05 percent tier around 2,000 USDC per ETH, the position can earn at 1,980 and sit idle at 2,250. How the pool still fills a swap from inventory, rather than from a rest order, sits in how Uniswap works.


When price leaves the band, the NFT still holds tokens

Out of range means fees have paused, while the NFT still represents the tokens that remain in that band. A swap is no longer pulling from that position, and the token id is still a live claim.

Suppose ETH later trades at 2,250 USDC, above the top of a band you set around 2,000. Traders who wanted ETH already took it from in-range inventory on the way up, and your position was used until the market left your interval. The remainder is often almost all of one token and almost none of the other, which is the result of the range being crossed.

When the price exits a position's interval, the position's liquidity is no longer active and no longer earns fees. As price moves in one direction, LPs gain more of one asset as swappers demand the other, until their entire position consists of a single asset. If price reenters the interval, liquidity becomes active again and in-range LPs begin earning fees once more (source: Uniswap Docs, Concentrated Liquidity).

State Swap fees on this NFT What you can still withdraw
Price inside the band Accruing, if this pool sees volume A mix of both tokens
Price above the band Stopped until price re-enters Often almost all of one token
Price below the band Stopped until price re-enters Often almost all of the other token

The generic picture of how AMMs work is the category lesson, and Uniswap v3 still prices from pool state, so the new holder fact is which slice of that state is yours. A v2 pair spreads capital across every price, while a v3 position picks a slice, and inside that slice a swap still moves both balances, while outside it that NFT is idle inventory.

Treat a one-sided NFT as the leftover mix after swaps used your liquidity while the price was still in range. When the market is back inside the band, both tokens can show up again as traders swap the other way, and fees missed while you were idle stay missed because they never accrued.

What Uniswap is names the protocol as a competing DEX, and a BloFin book is a different venue, so your NFT still lives in a contract on one chain, and the same two tickers on another chain are another pool with their own ranges.

The claim for that range is a unique token, which is the next mechanical fact.

The position is an NFT for one range

On v2, a deposit mints a fungible pool token, and any unit of that token is the same claim on one pair. On v3, a deposit mints a position as a non-fungible token. Two NFTs in the same pool can have different bands, different sizes, and different fee histories, so you skip adding them like two equal shares.

LP positions are represented by non-fungible tokens (NFTs) (source: Uniswap Blog, Introducing Uniswap v3). Common shared positions can be wrapped later by other contracts, while the default v3 claim you hold is still the NFT, so sending that NFT sends the position and leaves UNI in a separate wallet balance unmoved.

EIP-721 is the interface those NFTs speak. This standard provides basic functionality to track and transfer NFTs, and each asset is distinct, which is why a fungible token standard is the wrong tool for a v3 range (source: EIP-721). A random picture NFT in your wallet is a collectible, and a Uniswap position NFT is a range claim, even though both can use the same transfer calls, so read the contract and the token id.

The periphery contract that mints and adjusts those positions is the NonfungiblePositionManager, while core pools still hold the tokens, and the manager is the wrapper that turns a range into an ERC-721 you can see in a wallet. How to call mint is an operator step, and the holder fact is enough: the range lives on that NFT, and the NFT is unique.

Uniswap v2 keeps the fungible claim and the full-curve deposit. If you wanted one token that meant a share of this pair at every price, you wanted that older claim. A v3 NFT that happens to use a very wide band is still an NFT.

People talk about "my Uniswap NFT" as if it were a collectible, while for you it is a claim for two tokens inside a band, plus any uncollected fees tied to that id. Transfer the NFT and the claim moves, and if you leave UNI in another wallet the vote token stays put, so those are two assets that can sit in the same app without becoming one claim.

Fee tiers split the picture again, because the same two tickers are one pair family and more than one NFT collection.

The same pair can exist at more than one fee

ETH and USDC can have more than one v3 pool, each with a different fee. Your 0.05 percent NFT is a claim on that 0.05 percent pool, and it leaves the 0.30 percent pool of the same pair untouched. A swap hits one pool and a position lives in one pool, so reading the two symbols leaves the fee unread.

The initially supported fee tiers are 0.05 percent, 0.30 percent, and 1 percent (source: Uniswap v3 Core whitepaper). UNI governance can add more tiers, including 0.01 percent on some factories, so treat the live menu as a current setting. A pair with only a 0.30 percent pool is still v3, and a missing 0.05 percent tier is a factory setting.

A pool is defined by two tokens and a fee, and there can be multiple pools of the same asset pair, distinguished only by their swap fee (source: Uniswap Docs, v3 Architecture). That is why a router can show you two ETH/USDC quotes that are different venues: the cheaper fee is a different pool with its own in-range inventory, and thin 0.05 percent liquidity can still give a worse fill than a deeper 0.30 percent pool.

Read the fee on the quote and on the NFT, because a screenshot of "ETH/USDC" leaves the tier unpinned. If you minted at 0.05 percent and later swaps through 0.30 percent, you used a different pool than the one your NFT sits in, so fees from that swap skip your NFT.

How Ethereum works is the chain picture for the create and mint calls, and ETH still pays gas even when the pair is USDC and UNI, so a failed mint still spends gas. A confirmed mint at the wrong fee is a real position in the wrong pool.

Picking which tier to mint is an LP choice, while seeing that tiers are separate pools is the holder idea. The next cut is the range itself: it is a choice, including the choice to stay wide, and it stays a range even when you leave tick indexes alone.

The range is the interval you chose, and ticks store the borders

A range is the price interval your NFT covers, so in range means the current pool price sits inside that interval and your liquidity is active, while out of range means it sits outside, and ticks are how the contract stores those borders.

You can skip picking tick indexes to understand the consequence, because you need to know whether the market is still inside the band your NFT named.

Anyone can add liquidity across the full price range of a token pair on Uniswap v2, v3, and v4, while Uniswap v2 only allows that full-curve deposit. Uniswap v3 and v4 both support concentrating liquidity in a specific price range or providing liquidity over the full price range (source: Uniswap Labs, Can I provide liquidity over the full price range?). Full range on v3 is still a v3 NFT, which is a wide band.

Setting a tight band, rebalancing when price leaves, and choosing tick spacing for a 1 percent pool are operator steps, and they belong with people who intend to run a position as work. You can leave the NFT idle, watch whether it is in range, and still know why fees paused, even if a UI that asks you to drag two handles is offering that work, which you can decline and still read the position.

A hookless v4 pool can still sit in a price band the way your v3 NFT does. Extra code on some v4 pools is a hook, which sits in Uniswap v4 and hooks. Some hooks add extra code around that band, and some hooks can replace native concentrated-liquidity math with a custom curve.

If the other token rips away from the one you deposited, the mix you can withdraw later is a different problem from a fee that paused. That inventory risk is impermanent loss on Uniswap, and the generic lesson is impermanent loss, so naming it here keeps range next to mix risk without teaching the Trading page.

How Uniswap moved from v2's full curve to v3's ranges sits in Uniswap history and versions, where dated launch lists belong, and the band is why fees start and stop.

Fees that did accrue stay as claimable balances on the NFT, so they wait on the NFT until someone collects them.

Fees sit on the NFT until someone collects them

On v2, the pool swap fee is added into the reserves, so the fungible share grows in place. On v3, swap fees accrue to the position as claimable balances that skip restaking themselves, so you collect them or they sit until you do.

In v3 and v4, fees are collected separately and must be manually redeemed by the position owner. Only in-range liquidity, positions whose range spans both sides of the current spot price, earns fees, and if the price moves outside a position's range, that position stops accruing fees until the price re-enters (source: Uniswap Docs, Fees). In range is about new fees, while collect is about fees already earned, so those are two different clicks, and either click leaves UNI dividends uncreated.

This function collects all fees, sending them to the original owner of the NFT, while maintaining custody of the position NFT (source: Uniswap Docs, Collecting Fees on Uniswap v3). Closing the position is a further step, while collect can leave the NFT in place, and a UI that bundles collect and decrease into one flow is a product choice even though the contract still treats them as separate calls.

Protocol fees, when they are on, are a different slice pointed at the protocol rather than at your NFT. How that slice is turned into UNI burns sits in the fee switch and UNI burns. Holding UNI skips a pro-rata share of protocol revenue, and collecting v3 LP fees requires the NFT.

Ethereum smart contracts is the generic contract lesson, so your collect call still settles on a chain, and a revert still spends gas. Uncollected fees skip a savings rate, and they move with volume, with the fee tier, and with how long the position stayed in range.

DeFi yield for crypto investors is the generic yield vocabulary. A Uniswap v3 NFT is two tokens in a band plus a fee stream that can go quiet.

The last split is three claims people collapse: the governance token, the range claim, and a venue UNI listing.

UNI, the NFT, and a BloFin UNI listing

UNI in a wallet is the protocol's governance token, a v3 position NFT is a range claim on one pool, and a BloFin UNI listing is a venue book. You can hold any one of those without holding the other two, and an app that shows all three on one screen has left them unmerged.

BloFin has listed UNI/USDT on spot since January 15, 2024, 11:00 UTC. BloFin lists two UNI perpetuals: UNIUSDT at up to 75x, listed January 12, 2023, 10:00 UTC, and UNIUSD, an inverse contract settled in UNI, at up to 20x, listed June 27, 2025, 10:00 UTC. Those listings are venue books, so a fill there will show on BloFin, and it will leave your v3 band's in-range state untouched on an explorer.

UNIUSDT is linear and USDT-settled, and UNIUSD is inverse and UNI-settled, so UNIUSD profit and loss that settles in UNI is venue contract profit and loss. UNI/USDT spot is a venue ledger claim until you withdraw, and a withdraw credits an ERC-20 balance while still leaving a mint uncreated.

Onchain markets on Ethereum is the wider onchain-market picture, and Uniswap v3 is one permissionless AMM inside that picture, so a BloFin fill leaves NonfungiblePositionManager uncalled.

Concentrated liquidity matches in-range fees, an NFT that still holds tokens after fees stop, separate fee-tier pools, and a clean split between UNI and a v3 position. Provide-liquidity clicks, a constant-product walkthrough, and a hook developer lesson are different pages, so you can close the explorer, because you never had to set a tick to know what you were looking at.


Frequently asked questions

If I transfer the v3 NFT, do uncollected fees stay in my other wallet?

Uncollected swap fees are balances on that token id. A transfer of the NFT moves the right to collect those fees with the id, and UNI in another wallet skips keeping a copy. If you wanted the fee tokens in your own address, you needed to collect before you sent the NFT, or have the new owner collect and send them. The manager tracks fees per id, and it skips a shadow copy for the old owner.

If UNI governance adds a 0.01 percent ETH/USDC pool, does my 0.05 percent NFT move there?

A new fee tier is a new pool contract for that pair, and your NFT is minted against one pool, at one fee, so adding 0.01 percent leaves existing liquidity unmoved. You would have to exit and mint again if you wanted that pool, and the 0.05 percent id still earns only from swaps against its own pool. A UI that shows "ETH/USDC" after a new tier launched still leaves your old NFT where it was minted.

Does listing the NFT on a marketplace put my band back in range?

A marketplace listing is an offer to sell the ERC-721, so it leaves the pool price unchanged and leaves the NFT's ticks unmoved. A bid on the NFT is a bid on the claim, and if the listing is a transfer escrow, read that contract. Range is still whatever the onchain ticks already are, and a listing leaves Uniswap's in-range math untouched.

If a mint transaction reverts, do I still receive an NFT with empty liquidity?

A revert means the mint did not succeed, so skip expecting a token id from that call, though gas can still be spent. If the transaction actually landed at a fee you did not mean to pick, that id is real and sits in that other pool. Empty liquidity after a successful mint is a decrease or a never-funded id.

Can I split one v3 NFT with a friend the way people send part of a v2 LP token?

The position is one ERC-721 id, so a transfer moves the whole id, and a native split of one range across two wallets on that token is missing. Wrappers and vaults exist in the wider ecosystem, and they are different contracts with different risk. If you need a split, you are either exiting and reminting two positions, or you are using some other wrapper, and the NFT in your wallet is all-or-nothing until then.

Does a UNIUSDT close appear as a collect on the Uniswap position explorer?

Closing UNIUSDT is a BloFin book fill, so the explorer for NonfungiblePositionManager will skip showing that close as a collect, decrease, or burn. Collect is an onchain call on the v3 id, while a venue fill has a BloFin order id. If you wanted fee tokens from the band, you needed collect on that NFT, and if you wanted to flatten UNIUSDT, you already used a different venue.

If a wallet app shows a USD value on my v3 NFT, is that a UNI/USDT fill?

A USD tag on the NFT is a display of the two tokens plus any claimable fees, priced by the app, so it leaves a UNI/USDT spot fill uncreated and leaves UNIUSDT profit and loss uncreated. UNI only appears there if UNI is one of the two pool tokens or a fee token you can collect, and a UNI/USDT listing on BloFin is a separate claim, so treat the NFT's display price as an app estimate.


Researched and written by the BloFin Academy editorial team with AI-assisted drafting. Updated September 2026. Primary sources include the Uniswap v3 Core whitepaper, Uniswap Developers concentrated-liquidity and fees docs, and Uniswap Labs' Introducing Uniswap v3 post. All facts independently verified against cited documentation current as of September 2026.

This article is educational and general in nature, not financial or investment advice. Cryptocurrencies like UNI carry real risks, including price volatility, venue risk, smart-contract exploits in ecosystem apps, and the chance of losing funds in a pool or on a fake token. Nothing here is a recommendation to buy, sell, hold, or participate in any project. Do your own research, and consider speaking with a licensed professional before making financial decisions. BloFin does not provide investment advice.