UtilityToolsLab

© 2026 UtilityToolsLab. Built and maintained by the UtilityToolsLab Team.

Free eBooks·About·Changelog·Privacy Policy·Terms of Service·Report a bug
HomeDeFi & TokenomicsVesting Planner

Related Tools

Token SupplyImpermanent LossAPY/APR ConverterStaking Rewards

Token Vesting Schedule Planner

Turn an allocation, cliff and vesting period into a dated unlock schedule with a cumulative curve and CSV export. Handles both cliff conventions.

You Might Also Like

All DeFi & Tokenomics

Token Supply

Convert ERC-20 token amounts to the base-unit integer a contract call takes and back, and measure any holding against total supply. BigInt-exact.

Impermanent Loss

Model the impermanent loss from a 50/50 liquidity pool as one token's price moves, entirely in your browser, with dollar amounts, not just percent.

APY/APR Converter

Convert APY to APR or APR to APY across 8 compounding frequencies. Shows the formula, result, and a full comparison table. Includes continuous compounding.

Staking Rewards

Project staked crypto growth over any period at a given APR, with simple or compounding payout. See total rewards, effective APY and a balance timeline.

“36-month vesting with a 12-month cliff” describes two different schedules, and which one the author meant moves the final unlock date by a full year. The Token Vesting Schedule Planner computes whichever convention you pick, says on screen which one is running, and gives back a dated release table instead of a single summary figure.

In one reading the cliff is served first and the vesting period begins at its end, so the grant runs cliff plus duration months in total. In the other the cliff sits inside the vesting period: reaching it releases everything accrued up to that point in one catch-up tranche, and the schedule still ends at the original duration. Equity and RSU grants almost always mean the second, which is why a four-year vest with a one-year cliff pays 25% at month 12. Token distributions usually mean the first.

Each schedule comes with a stepped unlock curve, a per-release table carrying real calendar dates, and a CSV button for the whole thing. The maths runs in your browser, so an unannounced allocation stays on your machine.

Walkthrough: A 150 Million Token Team Grant

The form arrives holding the lead sample: 150,000,000 tokens, nothing unlocked at TGE, a 12-month cliff, a 36-month vesting period, monthly releases from 1 September 2026, on the Cliff, then vesting starts convention. That produces 36 releases. The first lands at month 13 on 1 October 2027 rather than at the cliff itself, because a monthly tranche pays for a month already served, and each one is 4,166,666.67 tokens. The grant finishes on 1 September 2030. Now press the other convention button without touching a single number: the schedule collapses to 25 releases, a catch-up tranche of 50,000,000 tokens appears at month 12, and the grant finishes on 1 September 2029. Same three inputs, one year of difference.

Method: The Two Cliff Conventions

  • TGE first. The unlock percentage is taken off the top at month 0 and appears as its own row tagged TGE. Everything below vests only the remainder, which is why a 25% day-one unlock on a 12-month schedule leaves 18,750,000 per month rather than 25,000,000.
  • Cliff, then vesting starts. Nothing moves until the cliff. The vesting period begins there, so releases run from cliff plus one interval through cliff plus the full duration, and the last row is the only place the schedule can end.
  • Cliff inside the vesting period. The clock starts at month 0. Reaching the cliff releases the fraction accrued so far in one tranche, tagged Cliff in the table, and ordinary releases continue to the end of the original period.
  • Frequency changes the steps, never the total. Quarterly and annual releases redistribute the same allocation into fewer, larger tranches; the curve becomes visibly blockier and the end date does not move.
  • Set the cliff at or past the vesting period and the planner refuses to invent a schedule for it. The whole remainder becomes one tranche at the cliff, and a warning says so rather than leaving you to notice a one-row table.

Precision, and Where the Last Token Lands

  • Per-release amounts are derived by differencing the rounded cumulative column, not by rounding each tranche on its own. Split 100 tokens across 7 monthly releases and you get 14.29, 14.28, 14.29 and so on, which sums to exactly 100. Rounding each tranche independently would give 7 × 14.29 and quietly overshoot by 3 hundredths.
  • Because of that, two neighbouring rows can differ by one unit in the last decimal place. That is the schedule staying exact, not a bug.
  • Dates clamp to the end of the target month. Start a quarterly schedule on 31 January and the first release falls on 30 April, since no amount of arithmetic produces a 31st there.
  • A TGE percentage outside its range is refused with the number you typed: “The unlock at TGE is 120% — it has to sit between 0 and 100.” An allocation that vests nothing, such as 0% at TGE with a 0-month vesting period, is caught before it can render an empty table.
  • Ceilings are 600 months of total schedule and 400 rows, and allocations stop at 1e15 because a larger figure stops being exact in JavaScript’s number type. Hitting the row limit suggests a coarser frequency rather than truncating your schedule silently.
How the cliff relates to the vesting period
Unlocked at TGE0
Per release4,166,666.67
Fully vested1 Sep 2030

36 releases over 48 months, using the cliff-then-vesting convention.

Cumulative unlock
0%25%50%75%100%month 0month 48
Release schedule
DateMonthUnlockedCumulativeLocked
1 Oct 2027134,166,666.674,166,666.6797.22%
1 Nov 2027144,166,666.668,333,333.3394.44%
1 Dec 2027154,166,666.6712,500,00091.67%
1 Jan 2028164,166,666.6716,666,666.6788.89%
1 Feb 2028174,166,666.6620,833,333.3386.11%
1 Mar 2028184,166,666.6725,000,00083.33%
1 Apr 2028194,166,666.6729,166,666.6780.56%
1 May 2028204,166,666.6633,333,333.3377.78%
1 Jun 2028214,166,666.6737,500,00075%
1 Jul 2028224,166,666.6741,666,666.6772.22%
1 Aug 2028234,166,666.6645,833,333.3369.44%
1 Sep 2028244,166,666.6750,000,00066.67%
1 Oct 2028254,166,666.6754,166,666.6763.89%
1 Nov 2028264,166,666.6658,333,333.3361.11%
1 Dec 2028274,166,666.6762,500,00058.33%
1 Jan 2029284,166,666.6766,666,666.6755.56%
1 Feb 2029294,166,666.6670,833,333.3352.78%
1 Mar 2029304,166,666.6775,000,00050%
1 Apr 2029314,166,666.6779,166,666.6747.22%
1 May 2029324,166,666.6683,333,333.3344.44%
1 Jun 2029334,166,666.6787,500,00041.67%
1 Jul 2029344,166,666.6791,666,666.6738.89%
1 Aug 2029354,166,666.6695,833,333.3336.11%
1 Sep 2029364,166,666.67100,000,00033.33%
1 Oct 2029374,166,666.67104,166,666.6730.56%
1 Nov 2029384,166,666.66108,333,333.3327.78%
1 Dec 2029394,166,666.67112,500,00025%
1 Jan 2030404,166,666.67116,666,666.6722.22%
1 Feb 2030414,166,666.66120,833,333.3319.44%
1 Mar 2030424,166,666.67125,000,00016.67%
1 Apr 2030434,166,666.67129,166,666.6713.89%
1 May 2030444,166,666.66133,333,333.3311.11%
1 Jun 2030454,166,666.67137,500,0008.33%
1 Jul 2030464,166,666.67141,666,666.675.56%
1 Aug 2030474,166,666.66145,833,333.332.78%
1 Sep 2030484,166,666.67150,000,0000%

The two cliff conventions produce different schedules from the same three numbers, so check which one your contract or term sheet actually means before publishing a chart from it. Per-release amounts come from differencing the cumulative column, which is why they can vary by one unit in the last decimal place while still summing to the allocation exactly. This is a planning tool, not a legal or tax document, and nothing you type is uploaded.