Skip to main content
Meteora’s DLMM, or Dynamic Liquidity Market Maker, is a dynamic liquidity protocol designed to boost fee earnings for liquidity providers on Solana. Unlike AMM DEXes, where token liquidity is allocated inefficiently across an infinite price range, on DLMM, you have the freedom to adjust your price range, concentrating liquidity where it matters most. On the Pool List page, once you’ve selected the token pair and DLMM pool you’d like to add liquidity into, click on it and you would enter the specific pool’s detail page.
For this example, we will be using a SOL-USDC pool.

Total Value Locked (TVL)

At the top left of the pool detail page, you can view the pool’s TVL (Total Value Locked). This is the total amount of token assets in the pool in terms of $USD value (how much all the tokens currently in the pool are worth).

Liquidity allocation

The TVL is further broken down into the amount of each token in the pool. In this screenshot example, $1,632,497 in TVL is actually made up of 5,702.33 SOL and 649,914.70 USDC. In the Liquidity Allocation section, you can view a snippet of the token’s contract address. Click the icon next to it to access important quicklinks; to copy the token’s contract address, view the contract address on solscan, check for token risks on Rugcheck.xyz, or analyze the token behaviour on Bubblemaps.
You can also view the Jupiter Organic Score for the token and if the token has any risks.

Liquidity Distribution

Here you can quickly take a quick look at the pool’s liquidity distribution chart to have a better understanding on where and how liquidity is currently distributed in the pool so that you can make more informed decisions when LPing. You’re able to click the magnifying glass icon to zoom in or zoom out if required.

Pool Details

Bin Steps

Each bin represents a single price point, and the difference between 2 consecutive bins is the bin step. Similar to tick size, a higher bin step means a larger jump from one price to the next.
  • Smaller bin step: Allows you to capture more volume, but your max range per position is smaller, with more limited base fee options. Generally, use smaller steps for more stable pairs and larger steps for more volatile pairs.
  • Larger bin step: Allows you to set a higher base fee and a wider price range per position, but at the cost of less volume, since there’s a less continuous price range (harder for liquidity to be picked up for swaps). But useful for highly volatile pairs where price swings can be huge.

Base Fee

Minimum trading fees earned when swaps occur through the liquidity position

Max Fee

Maximum trading fees earned when swaps occur through the liquidity position

Protocol Fee

Amount of fees charged on each trade which goes to the protocol or integrations. For standard DLMM pools, Protocol Fee is typically 5% of the Dynamic Fee.

Dynamic Fee

LPs can earn more with Dynamic Fees, which surge in response to real-time price volatility. For DLMM, Dynamic Fee includes the Base Fee.

24h Fee

Total Fees collected by the pool in 24h

Community-Built Tools

Meteora’s LP Army comprises many talented developers, who have over time built useful tools to improve LPing for everyone. The full list of tools can be found here.

Pool Chart

Popular data analytics and charting tools with more granular data have integrated Meteora’s liquidity pools, including Birdeye, GeckoTerminal, DEXScreener, DEXTools, GMGN. We’ve provided buttons that link to the specific pool page for each of these tools.

Supported Trading Platforms

Popular trading platforms and bots have also integrated Meteora’s liquidity pools, including Axiom, Banana Gun, BONKbot, Fluxbot, Jupiter, MetaSolanaBot, Photon, and Trojan. We’ve provided buttons that link specifically to each of the trading platforms. Note: For pools without SOL as the quote token, BONKbot, Photon, and Axiom won’t be in the list.

Pool Trading Volume

At the bottom left of the pool detail page, you can view the trading volume of the pool from the last 7 days.

24h Fee / TVL %

At the top-right corner of the pool detail page, you’ll find the 24h fee-to-TVL ratio — calculated by dividing the fees collected over the past 24 hours by the current TVL, and expressed as a percentage.

Current Pool Price

You can view the Current Pool Price in this section. The Current Pool Price may not always be close to the general market price. Sometimes, the initial price in the DLMM pool may not be in sync with the general market price, especially when it was just created with a wrong initial price and has low liquidity.
As a liquidity provider, it is important that you check that the pool price is in sync with the general market price or your deposit will be impacted by arbitrage trades, causing you to incur a loss.
As a reference for market price for the token, Meteora uses Jupiter’s price API. However, this is just an estimate. Before adding liquidity, LPs should always check and compare the Meteora pool price with all other markets (e.g. other DEX pools) that have liquidity for the token to have a better sense of the general market price.

What can Liquidity Providers do if the pool price is not in sync with the market price?

LPs can first use the “Sync with Jupiter’s price” button to sync the pool price with Jupiter price before adding liquidity, to avoid the risk of loss due to arbitrage trades.
However, the “Sync with Jupiter’s price” feature is only available for out of sync DLMM pools:
  • With 0 liquidity between the active bin and the Jupiter price bin, or
  • With liquidity in a bin that’s close enough to the Jupiter price bin.
If there’s already liquidity in bins between the active price bin and market price bin, but those bins aren’t close enough to the Jupiter price, “Sync with Jupiter’s price” won’t be available. In that scenario, the only way to sync the price is to either wait for arbitrage trades to occur through the pool, or manually make a few tiny swaps through the pool on your own in the appropriate swap order. For example, if the USDC/SOL pool price is currently lower (cheaper) than Jupiter’s price, you’d need to make a few tiny swaps from USDC to SOL (buy SOL with USDC) until USDC/SOL pool price increases to a point it’s similar to Jupiter’s price.

Your Liquidity

In the “Your Liquidity” section, you would be able to view the important details related to the tokens you have already deposited in the pool, and the fees you’ve earned as a liquidity provider.

Total Liquidity

This shows your total liquidity currently deposited in the pool. You are able to click on the number to toggle (switch) between USD or SOL value.

Fees Earned (Claimed)

On DLMM, fees do not auto-compound back to the pool. Fees you earn accumulate and you’d have to claim them manually. “Fees Earned (Claimed)” shows your total fees claimed from being a liquidity provider in the pool. The amount gets updated each time you claim fees from your position. You are able to click on the number to toggle (switch) between USD or SOL value. The tooltip also shows the exact amount of each token in the pair that you have claimed as fees.

Your Current balances

This shows the current tokens you have deposited as liquidity in the pool. The amount stated in your current balance may change over time when your liquidity position is active and trades occur through your position.

Your Unclaimed Swap Fee

This shows the current swap fees that you have accumulated but have not claimed. The amount stated in “Your Unclaimed Swap Fee” increases whenever you earn swap fees, and becomes 0 when you claim all your fees. The amount stated excludes the swap fees that you have already claimed previously.

How to Add Liquidity

Under the “Your Positions” tab, if you have no existing positions, you can click the “+ Add Liquidity” button, which will bring you to the “Add Position” tab. You can then begin adding liquidity.
Alternatively, you can just directly select the “Add Position” tab. Once selected, you will see a few different subsections.

Enter Deposit Amount

First of all, under “Enter deposit amount”, you can enter the amount of Base Token or Quote Token you’d like to deposit into the pool. The corresponding $USD value will be shown at the bottom of your input. Since the “Auto-Fill” toggle is enabled by default, when you enter an amount for either the Base or Quote Token, Meteora automatically fills in the approximate equivalent amount of the other token based on the current exchange rate. For example, if 1 SOL = 250 USDC, when you enter 2 SOL, the USDC input field will automatically state approximately ~500 USDC. The amount used may differ slightly from the expected exchange rate because the token ratio within the active price bin is constantly changing as swaps occur.
We’ve also provided a “Max” and a custom “%” button near the Base and Quote token fields. Clicking “Max” automatically enters your entire balance of the respective token, while clicking the custom % button automatically enters an amount based on the % indicated (e.g. 50%)

Setting Liquidity Slippage

Here you can adjust how much change to the pool price you’re willing to accept and still add liquidity. If the pool price changes a lot while adding liquidity, your transaction may fail. Increase this slippage to improve your success rate.

Which Volatility Strategy to use?

The Volatility Strategy represents how your liquidity gets allocated in the pool. If you change your Volatility Strategy, the shape of your liquidity distribution in the chart would also change.
Spot: Spot provides a uniform distribution that is versatile and risk adjusted, suitable for any type of market and conditions. This is similar to setting a CLMM price range. Your liquidity is divided more or less equally across the price range you’ve selected, so each price bin has similar liquidity allocation to the other bins. If you’re unsure which Volatility Strategy to use, you can just use Spot. Curve: Curve is ideal for a concentrated approach that aims to maximise capital efficiency. This is great for stables or pairs where the price does not change very often. More of your tokens are allocated around the current active price, less and less tokens are allocated in the price bins that are further away from the current active price. Bid-Ask: Bid-Ask is an inverse Curve distribution, typically deployed single sided for a DCA (dollar cost average) in or out strategy. It can be used to capture volatility especially when prices vastly move out of the typical range. Less of your tokens are allocated around the current active price; increasingly more tokens are allocated in the price bins that are further away from the current active price.

Set the Price Range

When you have entered your preferred deposit amount, you will see a visual representation of where your liquidity will be allocated in the pool. By default, when you are adding liquidity for two tokens, your liquidity spans 69 bins, and gets allocated at a price range where the active price bin is positioned roughly at the center of your price range.

Coloured bins

Purple bins represent the Base token, while the cyan blue bins represent the Quote token. In this example, SOL the Base token is represented by the purple bins, while USDC the Quote token is represented by the cyan blue bins. And the height of each bin (y axis) represents the total value of the tokens in the particular bin, in terms of the quote token in the bin. In other words, the height represents the total quote value for the bin.

Grey bins

The grey bins below the liquidity chart with the purple and cyan blue bins represent the existing liquidity already deposited in the pool. And the height of each grey bin represents the relative amount of liquidity in that bin compared to the other bins. If you hover over them you can see a more granular breakdown of the liquidity stats for each bin (e.g. the bin price, and amount of tokens currently in the bin).

Adjusting your Price Range

You are able to set the price range for your liquidity position before you execute your deposit. The wider the price range, the higher the number of price bins used for your position. You have 3 methods to adjust your price range to allocate your liquidity in the pool:
  1. You can drag and adjust the two end points of the slider to make your price range narrower. However, adjusting the slider does not allow you to go beyond 69 bins for your price range.
  2. By the default, the UI will set a price range for you that consists of 69 bins. For a wider or narrower price range, you can input a new Min price or Max price in the Min and Max price fields. You are able to widen your position up to a maximum of 1,400 bins.
  3. You can also widen or narrow your price range by setting new Min % and Max % values. Each value indicates how far, in percentage terms, your min/max price bin is from the current active bin.

Concentrated Liquidity

  • The narrower the price range you set, the more concentrated your liquidity is. Conversely, the wider your price range, the less concentrated your liquidity is.
  • And the more concentrated your liquidity, the more capital efficient it is, and the more volume (and fees) you are able to generate from traders with your liquidity.
  • However, the trade-off is that with more liquidity concentration, there’s a higher chance the active pool price goes out of your price range. When that happens, your position becomes inactive and you stop earning swap fees.

Depositing Single-sided Liquidity (Depositing only one token)

In certain scenarios, LPs may not want to add liquidity with both tokens (dual-sided). Instead, they may want to add liquidity with only one token (single-sided). In order to add liquidity single-sided, you have to first toggle off the “Auto-Fill” feature. This lets you manually enter an amount for either the Base or Quote token without automatically populating the other field.
When you enter an amount in either the Base or Quote token field (but not both), the chart will naturally display the liquidity distribution for that specific token only.

Example scenario to use single-sided liquidity:

You just bought some SOL at 236.6 USDC per SOL, and you want to gradually swap it for USDC at a profit until it reaches 280 USDC per SOL. You can turn off “Auto-Fill”, enter only the amount of SOL you just bought, and set a price range from 240 to 280 USDC per SOL. You also used the Bid Ask Volatility Strategy. By creating this liquidity position, your SOL gets allocated between 240 to 280 USDC per SOL, and because Bid Ask Volatility Strategy was used, more of your SOL is allocated towards the max price of your range. Whenever SOL price goes into the 240-280 USDC per SOL range, your liquidity position becomes in range and active, and it would start being swapped for USDC. Whenever SOL is swapped for USDC in your position, there will be some cyan blue bins (representing USDC) appearing in the liquidity chart. When the price reaches 280 USDC per SOL, which is the max price of your range, all your SOL would have been swapped for USDC. In the liquidity chart, you will see that all the purple bins (representing SOL) would have turned into cyan blue bins (representing USDC).

Cost Details for your Deposit

After you’ve entered with the amount of liquidity you plan to deposit, selected your Volatility Strategy, and set the price range where your liquidity gets allocated, you can view the cost involved in opening that position and adding liquidity. When you create a DLMM position, you need to pay some rent. At a glance, Meteora shows you the SOL needed to create your liquidity position, and what portion of the SOL is refundable or non-refundable, when you close your position at a later stage. SOL required for the position creation rent and position extension rent has the “Refundable” label, while the SOL required for creating new bin arrays has the “Non-Refundable” label. In this example, when you close your own position, you are refunded ~0.2374752 SOL, which is the sum of the position rent needed to open your position and the position extension rent.
For more granular details, click “Show cost details”

Confirm Add Liquidity

If the deposit details, Volatility Strategy, price range, and cost details are acceptable, you can proceed to click “Add Liquidity” to open your position!

Your Positions

Once you have added liquidity and opened a liquidity position in a pool, you can track that new position under the “Your Positions” tab. You are provided with a graphical representation of your price range, to quickly see if your position is active or out of range.

Out of range position

In range position

Next to your position’s price range details, you can click the linked button (the arrow in a box) to open up the solscan explorer page for your specific position. The solscan page shows you all the historical transactions related to your position. This would be the transactions related to the position creation, adding liquidity, withdrawals etc.
You do not get an LP token or NFT that represents your position. You just have a unique DLMM position program account, and you cannot transfer this liquidity position to another wallet address.

Earning fees in your position

LPs earn fees as long as successful swaps happen within their active price range in the pool. This could be swaps within the same active bin or swaps that resulted in closed bin(s) and a new active bin and price. But there can only be one active bin at any point in time. On DLMM, fees do not auto-compound back to the pool. Fees you earn accumulate under “Your Unclaimed Swap Fee” and you’d have to claim them manually.

What happens when your position goes “Out of Range”?

The tokens you deposit into the DLMM pool are used as liquidity for traders to swap and in return you earn fees. As swaps take place, the active price changes and the token amounts in your position would fluctuate. If the current active price moves outside of the price range you initially set, your position becomes inactive and you stop earning fees. In such a scenario, your position would be left with only one type of token in the pair, because 100% of the other token would have been sold in exchange for your remaining token. In this example, SOL (purple bins) in the position were all sold to USDC (blue bins). You cannot change your price range for your position once created. You can either:
  • Wait for the price to return within your range, especially if it is not too far out
  • Or if you want to continue earning fees immediately, rebalance by withdrawing your liquidity and opening a new position with a new price range / use additional funds to open a new position with a new price range

How to Withdraw Liquidity

Under “Your Positions”, choose the liquidity position you wish to withdraw from. Once selected, navigate to the Withdraw tab.
You can adjust the slider to select which bins you wish to withdraw your liquidity from, as well as the percentage of liquidity to be withdrawn in those bins (25%, 50%, 75%, 100%). If your position has =< 250 bins, you are able to “Zap Out” your liquidity into your preferred token in the pair. For example, if you are withdrawing SOL liquidity only, or a combination of SOL + USDC liquidity, you can Zap Out to receive only USDC tokens. Any SOL you are withdrawing will be swapped to USDC first before you receive the tokens in your wallet. If you are withdrawing 100% of your liquidity in your position, you can also choose to Withdraw and Close Position at the same time. However, you cannot close your position if you are withdrawing less than 100% of your liquidity in your position. Note: You cannot withdraw liquidity single-sided (only for one token in the pair) in the active bin. If you wish to withdraw liquidity from the active bin, you have to withdraw liquidity for both tokens.

Learn more DLMM tips with our LP Army

To learn more strategies for providing liquidity on DLMM, please read this Beginner’s Bootcamp Course created by our LP Army!
I