Liquidity Lock NFT: Locking a Uniswap v3 Position

On Uniswap v3 the liquidity provider position is not a fungible LP token. It is an NFT, and locking it is what actually keeps a launch honest.

Updated July 22, 2026

The LP that is not a token: a Uniswap v3 position is an NFT

If you have used older AMMs, you probably picture liquidity as a fungible LP token. You deposit two assets, you get an ERC-20 back, and that token is your receipt. Send it, split it, stake it, burn it. Uniswap v2 and most of its forks work exactly this way.

Uniswap v3 changed the shape of the receipt. Because every position can have its own custom price range, no two positions are necessarily identical, so they cannot be represented by a single fungible token. Instead, when you provide liquidity you receive an NFT: an ERC-721 minted by the Nonfungible Position Manager contract. That NFT is the deed to one specific position. It is the LP receipt, just in NFT form.

This is why the phrase people search for, liquidity lock or nft position, is really the same question asked two ways. On v3 the liquidity IS the NFT position. There is no separate LP token to lock. If you want to lock the liquidity, you lock the NFT, and understanding that distinction is the whole point of a liquidity lock NFT.

  • v2 style pools: liquidity is a fungible ERC-20 LP token you can lock or burn.
  • v3 pools: liquidity is a non-fungible ERC-721 position NFT with a unique tokenId.
  • Locking on v3 therefore means an lp lock nft, not locking a pile of interchangeable tokens.

What the position NFT actually holds

A position NFT is not just a picture or a serial number. It is a pointer into the Position Manager contract, and behind that pointer sits the real data that defines your stake in the pool. You can read it directly by calling positions(tokenId) on the manager.

The core fields describe exactly where your money is and how much of it there is. They matter because they are what a locker freezes in place when it holds your NFT.

  • The pool: which token pair and fee tier the position belongs to (for a Bubblepad launch, the new token paired against WETH).
  • tickLower and tickUpper: the price range the liquidity is active across, expressed as v3 ticks. A single-sided launch position starts just above the initial price and stretches upward.
  • liquidity: the amount of liquidity units held in that range, the number that actually backs the trading depth buyers see.
  • tokensOwed0 and tokensOwed1: fees that have accrued to the position and are waiting to be collected.

Read those fields and you know everything material about a uniswap v3 position lock without trusting anyone's marketing. The tokenId is the key. Once you have it, the pool, the range, and the liquidity amount are all public and permanent.

What locking the NFT actually means

Locking a position NFT is simpler than it sounds. The NFT gets transferred into a locker contract, and the locker is written so that it will not send the NFT back out, and will not call the withdraw function on it, until a hard-coded unlock time has passed. While the locker holds the deed, nobody can move the position or pull its liquidity. Not the creator, not the deployer, not the locker operator.

The distinction that trips people up is between the liquidity and the fees. Locking the NFT freezes the liquidity: the tokens sitting in the pool cannot be removed. It does not have to freeze the fee stream. A well-designed locker can still let a designated fee owner call collect() to sweep trading fees out, while the underlying liquidity stays put. More on that below.

This is the honest version of a liquidity lock nft. The team keeps the right to earn fees, which is a fair reward for launching something people trade, but loses the ability to yank the liquidity out from under buyers. That single property is what separates a credible launch from a rug.

A lock is only as strong as its unlock condition. A ten year timelock hard-coded in the contract is meaningfully different from a lock the operator can shorten, extend, or bypass through an admin key. Always check whether the unlock time is fixed and whether any address can override it.

Why v3 launchpads have to lock an NFT, not LP tokens

A launchpad that builds on Uniswap v3 has no choice in the matter. There is no fungible LP token to burn or lock, so the only way to make liquidity permanent is to take custody of the position NFT itself. Any v3 launchpad that claims liquidity is locked is, under the hood, doing an nft position lock whether it says so or not.

This is also why single-sided launches and NFT locking go hand in hand. When a pool is seeded with only the new token and no ETH, the entire launch supply lives inside one v3 position, concentrated in a range above the starting price. That position is a single NFT holding the whole float. Lock it and you have locked the market. Fail to lock it and the creator can withdraw everything the moment buyers arrive.

For a buyer doing diligence, the mental model is clean. Find the launch, find the position NFT, confirm a locker holds it, confirm the unlock date is far away and cannot be moved forward. If any of those checks fail, the liquidity is not really locked no matter what the site says.

  • Red flag: the site says liquidity is locked but names no locker contract and no tokenId.
  • Red flag: the position NFT is still held by a normal wallet, not a locker.
  • Red flag: the unlock time is days or weeks away, or an admin can change it.
  • Green flag: a published locker holds the tokenId with a long, fixed unlock and no override path.

Fees still flow to a locked position

A common misconception is that locking liquidity means the creator earns nothing. That is not how v3 works. Every swap in the pool accrues fees to the active positions in range, and those fees pile up as tokensOwed on the position regardless of who holds the NFT. Locking the deed does not stop the meter from running.

The locker decides who can claim. A thoughtful design keeps a fee owner role that can call collect() and pull accrued fees out, while the liquidity itself remains untouchable. So the creator gets a real, ongoing revenue stream from trading activity, and buyers get liquidity that cannot walk away. Both things are true at once.

This is the part worth understanding before you judge a launch as greedy or generous. A creator earning fees on a locked position is normal and healthy. A creator who can also withdraw the liquidity is the actual danger. When you evaluate an lp lock nft, separate the two questions: can they take fees (fine) versus can they take the liquidity (not fine).

How to verify a locked position NFT, and how Bubblepad does it

Verification is fully on-chain and you do not need permission from anyone to do it. The goal is to trace a single NFT from the pool to the locker and confirm it cannot leave.

  • Find the tokenId of the launch position, usually surfaced by the launchpad UI or visible in the pool creation transaction on a block explorer.
  • On the Nonfungible Position Manager, call ownerOf(tokenId) and confirm the owner is the locker contract, not a personal wallet.
  • Call positions(tokenId) and read the pool, tickLower, tickUpper, and liquidity to confirm the position actually holds the launch liquidity.
  • Open the locker contract and read the unlock timestamp for that tokenId, and check there is no admin function that can move it earlier or transfer the NFT out.

Bubblepad is built around exactly this flow. In a single transaction it clones a locked ERC-20 template, creates the Uniswap v3 pool against WETH, seeds it single-sided so the price starts low and rises as ETH buys in, and sends the resulting position NFT into a locker for ten years. One hundred percent of supply goes to the pool, with no presale and no team allocation. The creator stays the fee receiver and pool owner, so the fee stream keeps flowing, but the withdraw path is gone: the position NFT sits in the locker and cannot be moved until the decade is up.

The takeaway is not to trust the word locked. It is to know that on Uniswap v3 the thing being locked is an NFT, to know which fields that NFT holds, and to read those fields yourself. Once the pattern clicks, a uniswap v3 position lock stops being a marketing claim and becomes something you can check in a few minutes with a block explorer.

Frequently asked questions

Is a Uniswap v3 LP a token or an NFT?

On Uniswap v3 it is an NFT. Because every position can have a unique price range, positions are not interchangeable, so the protocol mints an ERC-721 position NFT with its own tokenId instead of a fungible LP token. That NFT is the deed to your specific position.

What does it mean to lock a position NFT?

It means transferring the position NFT into a locker contract that will not release it or withdraw its liquidity until a set unlock time. While the locker holds the NFT, nobody can move the position or pull the liquidity out of the pool.

Does locking the liquidity stop the creator from earning fees?

No. Trading fees accrue to the position no matter who holds the NFT. A well-built locker lets a designated fee owner call collect() to claim those fees while the underlying liquidity stays locked. Earning fees is fine; being able to withdraw the liquidity is the real risk.

How do I check that a position NFT is actually locked?

Find the tokenId, call ownerOf(tokenId) on the Position Manager and confirm the owner is a locker contract, call positions(tokenId) to confirm it holds the launch liquidity, then read the locker's unlock timestamp and check no admin can move it forward.

Why must a Uniswap v3 launchpad lock an NFT instead of LP tokens?

There are no fungible LP tokens on v3. The liquidity is the position NFT, so the only way to make liquidity permanent is to take custody of that NFT. Any v3 launchpad claiming locked liquidity is doing an NFT position lock under the hood.

How long does Bubblepad lock the position NFT for?

Ten years. Bubblepad seeds the pool single-sided, then sends the resulting Uniswap v3 position NFT into a locker for a decade. The creator keeps the fee stream and stays pool owner but can never withdraw the locked liquidity.

Ready to launch your own token?
Mint, pool, seed and lock the LP in one transaction on Bubblepad.
🫧 Launch a token

Keep reading

Bubblepad · permissionless token launcher
Experimental, immutable contracts. No admin, no insurance, no refunds. You can lose everything. Not financial advice.