Key takeaways
- Solana token vesting holds tokens in an on-chain escrow that releases nothing before a cliff date and then a fixed amount every period until the schedule ends.
- Jupiter Lock, program LocpQgucEQHbqNABEYvBvwoxCPsSbG91A1QaQhQQqjn, is open source, audited by OtterSec and Sec3, and charges no protocol fee, per Jupiter's documentation as of November 2026.
- In Jupiter Lock, cancel and change-recipient rights are each set to none, creator, recipient or either at creation, and a lock with both set to none is fully irreversible.
- A vesting schedule of 120,000 tokens with a 3-month cliff releasing 25% and then 9 monthly releases unlocks 30,000 tokens at month 3 and 10,000 tokens each month after.
- Buyers can verify a Solana token's vesting by searching the mint on lock.jup.ag or SOLTidy's free lock viewer and checking amounts, dates and cancel rights.
The short answer
Token vesting on Solana means tokens sit in an on-chain escrow that releases them on a schedule: nothing until the cliff, an optional lump at the cliff, then an equal amount every period until the total is out. The most common program for it is Jupiter Lock, which Jupiter describes as "open-sourced, audited, and free". Recipients claim what has unlocked whenever they like, and anyone can read the schedule on chain.
Why vest tokens at all?
Because tokens sent straight to a team can be sold the day they arrive, and buyers know it. A vesting schedule shows that the people closest to a project cannot dump their allocation at once, and it shows it in a way that does not depend on trusting them. Screeners and careful buyers look at how much supply sits in team wallets; how to spot a Solana rug pull covers that check.
On-chain vesting also removes the admin work. Once the escrows exist, releases happen by the clock. Nobody has to send monthly transfers, and nobody depends on the founder staying online.
How does a cliff and linear schedule work?
Jupiter's how it works page says every lock "follows a cliff + linear vesting model" that "cannot be changed afterward". Each escrow stores four numbers:
- Cliff time. Nothing can be claimed before it.
- Cliff amount. An absolute number of tokens released at the cliff, which can be zero.
- Period length. Minute, day, week, month or year.
- Amount per period. Released at the end of each period after the cliff.
The unlocked amount at any moment is: cliff amount + (whole periods since the cliff, capped at the number of periods) × amount per period.
A worked example: 120,000 tokens, a 3-month cliff releasing 25%, then 9 monthly releases.
| When | Unlocks | Total unlocked |
|---|---|---|
| Before month 3 | 0 | 0 |
| Month 3 (cliff) | 30,000 | 30,000 |
| Month 4 | 10,000 | 40,000 |
| Month 8 | 10,000 | 80,000 |
| Month 12 (last) | 10,000 | 120,000 |
Common shapes:
- Cliff then linear: the classic team schedule, for example 12-month cliff, then 24 monthly releases.
- Linear from day one: no cliff, steady releases. Common for contributors.
- Cliff only: everything at one date. That is a time lock, not vesting; SOLTidy's Token Lock does exactly this.
Note that the program counts in seconds, so a "month" is a fixed length. SOLTidy uses 30 days (2,592,000 seconds).
Who can cancel a vesting schedule?
Whoever the creator allowed, and this is the setting buyers should read first. Jupiter Lock's FAQ lists four options for both cancelling and changing the recipient: "None, Only Creator, Only Recipient, or Creator or Recipient." It adds: "If both are set to None, the lock is fully irreversible."
What each means for a buyer:
| Setting | What it allows | How much to trust it |
|---|---|---|
| Cancel: none | Nobody can stop the schedule | Strongest |
| Cancel: creator | The team can end it and take back unvested tokens | Weak for team allocations |
| Change recipient: creator | The team can redirect future unlocks | Check who the recipient is |
| Change recipient: recipient | The recipient can move their claim to another wallet | Usually fine |
If a creator does cancel, the unlocked part goes to the recipient and the rest returns to the creator. A team that vests its own tokens with "creator can cancel" has made a promise it can take back.
What does Jupiter Lock cost?
Jupiter Lock itself has no protocol fee, per its FAQ. You pay network fees and rent for each escrow: in SOLTidy's vesting tool, about 0.0036 SOL per recipient escrow at today's rent, plus about 0.001 SOL with a label.
SOLTidy charges a flat 0.27 SOL per creation run as of November 2026, whether the run covers one wallet or two hundred, and claims are free. On Jupiter's own interface you create one lock per recipient; the SOLTidy tool takes a pasted list of address, amount lines and creates one escrow per wallet on the same schedule, two per transaction. For 20 recipients that is 10 approvals and about 0.27 + 20 × 0.0036 ≈ 0.34 SOL in total.
Jupiter Lock is audited by OtterSec and Sec3, and its program, LocpQgucEQHbqNABEYvBvwoxCPsSbG91A1QaQhQQqjn, is listed in Jupiter's developer docs. Jupiter notes the program is upgradeable, with updates "only made when critical".
How do you set up vesting, step by step?
With SOLTidy's Token Vesting:
- Pick the token. Any SPL or Token-2022 token in your connected wallet. For Token-2022 tokens with a transfer fee, the review shows the extra you send so each escrow holds the full amount.
- Paste the recipients. One
address, amountline per wallet, straight from a spreadsheet. Duplicates are merged and bad lines are flagged before you sign. - Set the schedule. Start date, cliff length and the share released at the cliff, then the release frequency and number of releases.
- Set the rights. Decide whether anyone can cancel and whether recipients can transfer. For team tokens, I would set cancel to none.
- Review and sign. Check the unlock table and costs. You can stop and continue later without creating any escrow twice.
Share the result: send buyers a link to the lock viewer filtered to your mint.
How do buyers verify a token's vesting?
It takes a minute:
- Search the mint. On lock.jup.ag, "a token's page lists the locks for that token", per Jupiter's locking guide. SOLTidy's free Token Lock Viewer reads the same escrows and keeps the address in a shareable link.
- Add up the totals. Does the locked amount match what the team says it vested? Compare with the supply and the top holders in a holder snapshot.
- Read the dates. When is the cliff? When does it end? A 1-month cliff on a "long-term" team allocation is a short promise.
- Check cancel and recipient rights. "None" is what you want to see.
- Look at what has been claimed. Claimed tokens are back in a wallet and can be sold.
What are the alternatives to Jupiter Lock?
- Streamflow is a vesting platform audited by FYEO and OPCODES, per its vesting page, with its own interface and a creation fee.
- Bonfida token-vesting is an older open-source vesting contract; its program ID and code are on GitHub.
Both are legitimate. Jupiter Lock's advantages are that it charges no protocol fee and many tools and explorers already read it.
Bottom line
Vesting is the on-chain version of "the team can't sell yet". On Solana, a Jupiter Lock schedule with a real cliff, linear releases and cancel set to none is a promise buyers can check without trusting anyone. Set one up for team and investor tokens, publish the link, and check the same four things on any token you buy: totals, dates, cancel rights and what has already been claimed. How to launch a Solana token shows where vesting fits in a launch.
Questions & answers
How does token vesting work on Solana?
The creator deposits tokens into an escrow account owned by a vesting program such as Jupiter Lock. The escrow stores a cliff time, an amount released at the cliff, a period length and an amount per period. Before the cliff the recipient can claim nothing; after it, the program lets them claim whatever has unlocked so far. Nobody has to send monthly transfers.
What is the difference between a cliff and linear vesting?
A cliff is a waiting period with no unlocks, often ending with a lump release. Linear vesting is the steady part after it: equal amounts every minute, day, week or month until the total is released. Most team schedules combine the two, for example a 12-month cliff followed by 24 monthly releases.
Is Jupiter Lock free?
Jupiter's docs state that Jupiter Lock has no protocol fees; you pay Solana network fees and the rent for each escrow's accounts. Tools that create escrows for you, such as SOLTidy's vesting tool, can add their own fee; SOLTidy's is 0.27 SOL per run, for any number of recipients, as of November 2026.
Can a token vesting schedule be cancelled?
Only if the creator allowed it. Jupiter Lock lets the creator set who may cancel: none, the creator, the recipient, or either. If cancel is allowed and used, what has unlocked goes to the recipient and the rest returns to the creator. A schedule anyone can cancel is a much weaker promise to buyers than one with cancel set to none.
How do I check a token's vesting schedule?
Search the token's mint on lock.jup.ag or paste it into SOLTidy's free Token Lock Viewer. Each escrow shows the total, the cliff, the release schedule, how much has unlocked and been claimed, and who can cancel or change the recipient. Compare the locked total with what the team claims to have vested.
Should team tokens be vested or locked?
Vesting suits team and investor allocations that should release gradually over a long period. A plain lock, which releases everything on one date, suits treasury or reserve tokens. Both are on-chain promises buyers can verify; a long cliff and linear release is the stronger signal for team supply.