Figma Lockup Expiration: FIG on the Tape
Figma's lockup expiration came in five stages from September 2025 to August 2026. Here is every release date and what the FIG tape did around each one.
Figma's lockup expiration came in five stages between September 2025 and August 2026, rather than on one expiry date. The IPO lockup covering substantially all of Figma's Class A shares ended at the open on November 7, 2025, the second trading day after the company's first post-IPO quarterly report. A narrower, price-conditioned release had already opened on September 5, 2025, and three further tranches held by long-term holders came free across 2026. The panels below read the daily tape around each of those dates.
A lockup is a contract rather than a rule. Pre-IPO shareholders and employees sign an agreement with the underwriters promising not to sell for a defined window after the listing, and the end of that window is written into the prospectus. Our general IPO lockup expiration guide covers the mechanics. This page is the Figma case, date by date.
What date did Figma's lockup expire?
Figma listed on the NYSE on July 31, 2025 at an IPO price of $33 a share. Three separate sets of terms decide when its restricted shares became sellable.
The standard IPO lockup ended on the earlier of two dates: the open of the second trading day after Figma announced results for the quarter ending September 30, 2025, or 180 days after the July 30, 2025 prospectus. Q3 results landed after the close on November 5, 2025. Two sessions later, at the open on Friday November 7, 2025, the lockup terminated for holders of substantially all of the Class A stock. The 180-day branch would have fallen in late January 2026, which is where the January 27, 2026 date still printed on some calendars comes from. That branch never governed.
The early release came first. Figma's agreements terminated for 25% of eligible shares held by current employees and service providers, Section 16 officers excluded, once the Class A closing price held at least 25% above the $33 IPO price on five trading days inside any ten consecutive sessions, with at least one of those five falling after the Q2 2025 announcement. In its Q2 2025 earnings release Figma stated it expected that condition satisfied at the close on September 4, 2025, with the shares eligible for sale at the open on September 5, 2025. Conditional carve-outs of this kind are now common, and the general shape is in early lockup release and waivers.
Then came the extension. On August 30, 2025, holders of roughly 54.1% of outstanding Class A stock signed an extended lockup running to August 31, 2026, with each release stapled to an earnings date:
- 17.5% (about 38.9 million shares) after the Q3 2025 announcement, the same November 7, 2025 open.
- A further 20% (about 44.4 million shares) after full-year 2025 results, announced February 18, 2026. Second trading day after: February 20, 2026.
- A further 27.5% (about 61.1 million shares) after Q1 2026 results, announced May 14, 2026. Second trading day after: May 18, 2026.
- The remainder (about 77.7 million shares) after Q2 2026 results, announced August 5, 2026, or August 31, 2026 at the latest. Second trading day after: August 7, 2026.
Those five dates are the whole ladder. Every measurement below is anchored to them.
How did volume behave around each Figma lockup release?
Turnover is the cleanest tape signature of a release. The panel divides each session's share volume by the average volume of the prior 20 sessions, then lines up the five sessions before and after three of the releases. A reading of 1.0 is an ordinary session for the period. A reading of 3.0 is three times the recent norm.
| session_offset | sep_2025_ratio | nov_2025_ratio | aug_2026_ratio |
|---|---|---|---|
| -5 | 0.2 | 0.74 | 1.13 |
| -4 | 0.27 | 0.79 | 1.57 |
| -3 | 0.78 | 0.77 | 1.17 |
| -2 | 1.42 | 1.57 | 1.99 |
| -1 | 3.66 | 2.48 | 2.26 |
| 0 | 2.59 | 3.6 | 1.29 |
| 1 | 1.16 | 1.33 | 1.02 |
| 2 | 0.93 | 0.97 | 0.7 |
| 3 | 1.14 | 0.53 | 0.58 |
| 4 | 1.57 | 1.07 | 1 |
| 5 | 1 | 0.91 | 0.51 |
The exact SQL behind every number
WITH bars AS
(
SELECT
date,
volume,
close,
avg(volume) OVER (ORDER BY date ROWS BETWEEN 20 PRECEDING AND 1 PRECEDING) AS avg_volume_20,
row_number() OVER (ORDER BY date) AS seq
FROM
(
SELECT
date,
argMax(toFloat64(volume), _ingest_time) AS volume,
argMax(toFloat64(close), _ingest_time) AS close
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'FIG'
AND date >= '2025-07-31'
GROUP BY date
)
),
anchors AS
(
SELECT
anyIf(seq, date = '2025-09-05') AS employee_release,
anyIf(seq, date = '2025-11-07') AS ipo_lockup_end,
anyIf(seq, date = '2026-08-07') AS final_tranche
FROM bars
),
offsets AS
(
SELECT arrayJoin(range(11)) - 5 AS session_offset
)
SELECT
o.session_offset AS session_offset,
round(anyIf(b.volume / b.avg_volume_20, toInt32(b.seq) = toInt32(a.employee_release) + o.session_offset), 2) AS sep_2025_ratio,
round(anyIf(b.volume / b.avg_volume_20, toInt32(b.seq) = toInt32(a.ipo_lockup_end) + o.session_offset), 2) AS nov_2025_ratio,
round(anyIf(b.volume / b.avg_volume_20, toInt32(b.seq) = toInt32(a.final_tranche) + o.session_offset), 2) AS aug_2026_ratio
FROM offsets AS o
CROSS JOIN bars AS b
CROSS JOIN anchors AS a
GROUP BY session_offset
ORDER BY session_offsetOffset 0 is the release session itself, the first one on which the freed shares could trade. Turnover ran 3.6x its trailing-20 average at the November 7, 2025 end of the standard lockup, 2.59x on the September 5, 2025 employee release, and 1.29x on the August 7, 2026 final tranche. The session after the November release printed 1.33x. One caveat on the September series: its trailing 20 sessions still contain Figma's first weeks of trading, which ran extremely heavy. That lifts the denominator and holds the September readings low next to the other two.
What did the price do from the pre-expiry close?
Same three dates, priced instead of counted. Each series divides the session's close by the last close before the shares became sellable, so every line reads zero at offset -1 by construction.
| session_offset | sep_2025_pct | nov_2025_pct | aug_2026_pct |
|---|---|---|---|
| -5 | 30.61 | 8.39 | 1.46 |
| -4 | 28.81 | 4.76 | 3.96 |
| -3 | 20.18 | -0.37 | 13.14 |
| -2 | 24.87 | -4.28 | 17.44 |
| -1 | 0 | 0 | 0 |
| 0 | 0.55 | -3.76 | -2.84 |
| 1 | -3.83 | -3.39 | 5.92 |
| 2 | -2.27 | -3.26 | 3.75 |
| 3 | -6.41 | -4.31 | -0.92 |
| 4 | 2.57 | -11.79 | 9.93 |
| 5 | -2.73 | -16.2 | 6.05 |
The exact SQL behind every number
WITH bars AS
(
SELECT
date,
close,
row_number() OVER (ORDER BY date) AS seq
FROM
(
SELECT
date,
argMax(toFloat64(close), _ingest_time) AS close
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'FIG'
AND date >= '2025-07-31'
GROUP BY date
)
),
anchors AS
(
SELECT
anyIf(seq, date = '2025-09-05') AS employee_release,
anyIf(seq, date = '2025-11-07') AS ipo_lockup_end,
anyIf(seq, date = '2026-08-07') AS final_tranche,
anyIf(close, date = '2025-09-04') AS employee_base,
anyIf(close, date = '2025-11-06') AS ipo_base,
anyIf(close, date = '2026-08-06') AS final_base
FROM bars
),
offsets AS
(
SELECT arrayJoin(range(11)) - 5 AS session_offset
)
SELECT
o.session_offset AS session_offset,
round(100 * (anyIf(b.close, toInt32(b.seq) = toInt32(a.employee_release) + o.session_offset) / any(a.employee_base) - 1), 2) AS sep_2025_pct,
round(100 * (anyIf(b.close, toInt32(b.seq) = toInt32(a.ipo_lockup_end) + o.session_offset) / any(a.ipo_base) - 1), 2) AS nov_2025_pct,
round(100 * (anyIf(b.close, toInt32(b.seq) = toInt32(a.final_tranche) + o.session_offset) / any(a.final_base) - 1), 2) AS aug_2026_pct
FROM offsets AS o
CROSS JOIN bars AS b
CROSS JOIN anchors AS a
GROUP BY session_offset
ORDER BY session_offsetFive sessions past the November 7, 2025 release the close stood -16.2% from that pre-release mark. The same measure reads -2.73% for September 2025 and 6.05% for the final August 2026 tranche. Note the structural quirk of an earnings-linked lockup: each of these windows also carried a quarterly report two sessions before the release, so the supply date and the news date sit in the same week. Read them together rather than apart. The cross-sectional version of this question, measured across many listings, is in do stocks fall after lockup expiration.
All five Figma releases side by side
The next panel widens the frame to every date on the ladder, including the two mid-2026 tranches the first two panels leave out. For each release it shows release-day turnover against the trailing 20-session average, plus where the close sat 5 and 20 sessions later relative to the last pre-release close.
| label | volume_ratio | five_session_pct | twenty_session_pct |
|---|---|---|---|
| Sep 5 2025 employee release | 2.59 | -2.73 | -2.79 |
| Nov 7 2025 IPO lockup ends | 3.6 | -16.2 | -18.12 |
| Feb 20 2026 tranche 2 | 2.56 | 13.65 | -8.24 |
| May 18 2026 tranche 3 | 1.96 | -4.19 | -21.55 |
| Aug 7 2026 final tranche | 1.29 | 6.05 | 0.63 |
The exact SQL behind every number
WITH bars AS
(
SELECT
date,
volume,
close,
avg(volume) OVER (ORDER BY date ROWS BETWEEN 20 PRECEDING AND 1 PRECEDING) AS avg_volume_20,
row_number() OVER (ORDER BY date) AS seq
FROM
(
SELECT
date,
argMax(toFloat64(volume), _ingest_time) AS volume,
argMax(toFloat64(close), _ingest_time) AS close
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'FIG'
AND date >= '2025-07-31'
GROUP BY date
)
),
releases AS
(
SELECT
tupleElement(r, 1) AS label,
toDate(tupleElement(r, 2)) AS release_date,
toDate(tupleElement(r, 3)) AS base_date
FROM
(
SELECT arrayJoin([
('Sep 5 2025 employee release', '2025-09-05', '2025-09-04'),
('Nov 7 2025 IPO lockup ends', '2025-11-07', '2025-11-06'),
('Feb 20 2026 tranche 2', '2026-02-20', '2026-02-19'),
('May 18 2026 tranche 3', '2026-05-18', '2026-05-15'),
('Aug 7 2026 final tranche', '2026-08-07', '2026-08-06')
]) AS r
)
),
keyed AS
(
SELECT
rel.label AS label,
rel.release_date AS release_date,
rel.base_date AS base_date,
b.seq AS release_seq
FROM releases AS rel
INNER JOIN bars AS b ON b.date = rel.release_date
)
SELECT
k.label AS label,
round(anyIf(b.volume / b.avg_volume_20, b.date = k.release_date), 2) AS volume_ratio,
round(100 * (anyIf(b.close, toInt32(b.seq) = toInt32(k.release_seq) + 5) / anyIf(b.close, b.date = k.base_date) - 1), 2) AS five_session_pct,
round(100 * (anyIf(b.close, toInt32(b.seq) = toInt32(k.release_seq) + 20) / anyIf(b.close, b.date = k.base_date) - 1), 2) AS twenty_session_pct
FROM keyed AS k
CROSS JOIN bars AS b
GROUP BY label, k.release_seq
ORDER BY k.release_seqThe November 2025 date carried a release-day volume ratio of 3.6, against 1.29 for the final tranche in August 2026. Twenty sessions past the November release the close sat -18.12% from its pre-release close, and five sessions past the August 2026 release it sat 6.05%. Compare the bars rather than any one figure: the ladder spread a single supply event across four quarters, and each bar is one step of it.
How much of the float actually unlocked?
Float is the share count genuinely available to trade, as distinct from shares outstanding, which counts every share in existence. An IPO floats a slice and restricts the rest. A lockup ladder is the schedule on which the restricted part joins the tradable part.
| label | shares_millions |
|---|---|
| Offered in the IPO | 36.9 |
| Traded, five sessions from Nov 7 2025 | 70.3 |
| Traded, five sessions from Aug 7 2026 | 112.8 |
The exact SQL behind every number
WITH ipo AS
(
SELECT argMax(toFloat64(max_shares_offered), last_updated) AS shares_offered
FROM global_markets.stocks_ipos
WHERE ticker = 'FIG'
AND listing_date >= '2025-07-01'
AND listing_date < '2025-08-31'
),
bars AS
(
SELECT
date,
volume,
row_number() OVER (ORDER BY date) AS seq
FROM
(
SELECT
date,
argMax(toFloat64(volume), _ingest_time) AS volume
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'FIG'
AND date >= '2025-07-31'
GROUP BY date
)
),
anchors AS
(
SELECT
anyIf(seq, date = '2025-11-07') AS ipo_lockup_end,
anyIf(seq, date = '2026-08-07') AS final_tranche
FROM bars
),
traded AS
(
SELECT
sumIf(b.volume, toInt32(b.seq) BETWEEN toInt32(a.ipo_lockup_end) AND toInt32(a.ipo_lockup_end) + 4) AS nov_five_sessions,
sumIf(b.volume, toInt32(b.seq) BETWEEN toInt32(a.final_tranche) AND toInt32(a.final_tranche) + 4) AS aug_five_sessions
FROM bars AS b
CROSS JOIN anchors AS a
)
SELECT
tupleElement(bucket, 1) AS label,
round(tupleElement(bucket, 2) / 1e6, 1) AS shares_millions
FROM
(
SELECT arrayJoin([
('Offered in the IPO', shares_offered),
('Traded, five sessions from Nov 7 2025', nov_five_sessions),
('Traded, five sessions from Aug 7 2026', aug_five_sessions)
]) AS bucket
FROM ipo
CROSS JOIN traded
)The listing record carries 36.9 million shares offered in the IPO. Set that against the tape: 70.3 million shares changed hands across the five sessions from the November 7, 2025 release, and 112.8 million across the five sessions from the August 7, 2026 final tranche. The restricted block those five dates worked through dwarfed the deal that created the float: the extended holders alone held roughly 54.1% of outstanding Class A, and their last tranche of about 77.7 million shares was multiples of the shares sold in the IPO itself. That is why a lockup date on a recent IPO can matter more than the size of the original offering. For the distinction between share counts and market value, see market cap and shares outstanding and what a stock float is.
What the options tape showed into the final release
Implied volatility, or IV, is the annualized size of move the options market prices into a contract. A known supply date ahead shows up there, since it sits inside the life of any contract expiring past it. The panel takes Figma contracts within 5% of the underlying price with 20 to 45 days to expiry, then averages their IV per session from early July 2026 through early September 2026, spanning the August 7, 2026 release.
| date | day_label | atm_iv_pct | contract_volume |
|---|---|---|---|
| 2026-07-06 | Jul 6 | 95.2 | 657 |
| 2026-07-07 | Jul 7 | 97.8 | 3536 |
| 2026-07-08 | Jul 8 | 93 | 1286 |
| 2026-07-09 | Jul 9 | 90.8 | 1587 |
| 2026-07-10 | Jul 10 | 88.6 | 226 |
| 2026-07-13 | Jul 13 | 101.7 | 2227 |
| 2026-07-14 | Jul 14 | 108.7 | 5548 |
| 2026-07-15 | Jul 15 | 102.9 | 1284 |
| 2026-07-16 | Jul 16 | 108.2 | 2238 |
| 2026-07-17 | Jul 17 | 114.8 | 3912 |
| 2026-07-20 | Jul 20 | 113.9 | 2360 |
| 2026-07-21 | Jul 21 | 111.5 | 2068 |
| 2026-07-22 | Jul 22 | 111.7 | 485 |
| 2026-07-23 | Jul 23 | 104.5 | 1966 |
| 2026-07-24 | Jul 24 | 108.9 | 861 |
| 2026-07-27 | Jul 27 | 105.8 | 766 |
| 2026-07-28 | Jul 28 | 112.2 | 3839 |
| 2026-07-29 | Jul 29 | 116.5 | 2582 |
| 2026-07-30 | Jul 30 | 109.7 | 366 |
| 2026-07-31 | Jul 31 | 108.8 | 706 |
The exact SQL behind every number
WITH near_the_money AS
(
SELECT
date AS session_date,
implied_volatility,
volume
FROM global_markets.options_greeks
WHERE underlying_symbol = 'FIG'
AND date >= '2026-07-06'
AND date <= '2026-09-04'
AND iv_converged = 1
AND volume > 0
AND days_to_expiry BETWEEN 20 AND 45
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05
)
SELECT
toString(session_date) AS date,
formatDateTime(session_date, '%b %e') AS day_label,
round(100 * avg(implied_volatility), 1) AS atm_iv_pct,
sum(volume) AS contract_volume
FROM near_the_money
GROUP BY session_date
HAVING count() >= 3
ORDER BY session_dateNear-the-money IV measured 95.2% on Jul 6 at the start of that window and 68.7% on Sep 4 at the end, across 45 sessions. The shape between the two endpoints is the part worth studying. The options market had both the earnings date and the release date on its calendar weeks ahead, and the line shows how the priced move travelled through them.
What this pattern means for the next lockup on your calendar
Figma's ladder is a usable template for reading the next one, and it pays to be precise about what a release date is.
- A release date is often not a fixed calendar date. The second trading day after an earnings announcement moves whenever the earnings date moves, and it can arrive months ahead of the nominal 180-day mark, as Figma's November 2025 date did.
- Announced share counts are ceilings on eligibility, never counts of shares sold. A tranche tells you what could reach the market, not what did.
- Staged ladders spread the supply. Four tranches across a year produce four smaller known dates instead of one cliff.
- Every date is knowable in advance. Lockup terms sit in the prospectus and in 8-K filings, and earnings dates are announced weeks ahead of the print.
To build the same picture for another listing, start with how to find a lockup expiration date and the running calendar in upcoming IPO lockup expirations. The same method applied to a private-market name is in SpaceX lockup expiration, and the resale rules insiders face once a lockup ends are in Rule 144 and restricted stock sales.
FAQ
When did Figma's IPO lockup expire?
The lockup covering substantially all of Figma's Class A common stock ended at the open of trading on November 7, 2025, the second trading day after the company's November 5, 2025 third-quarter results. A price-conditioned early release had already freed 25% of eligible employee and service-provider shares at the open on September 5, 2025.
Why do some sites list January 27, 2026 as the Figma lockup expiration?
The IPO agreements ended the lockup on the earlier of two dates: the second trading day after the Q3 2025 earnings announcement, or 180 days after the July 30, 2025 prospectus. Counting 180 days lands in late January 2026. The earnings branch came first, on November 7, 2025, so the January date never governed.
How many Figma shares came off lockup during 2026?
Under the extended lockup agreement signed on August 30, 2025, about 44.4 million shares became eligible after full-year 2025 results, about 61.1 million after Q1 2026 results, and roughly 77.7 million in the final tranche at the open on August 7, 2026. Those figures are eligibility, not shares sold.
Did Figma stock fall after the lockup expiration?
The price-path panel above measures each release against the last close before the shares became sellable. Over the five sessions after the November 7, 2025 release the close moved -16.2%, and over the five sessions after the August 7, 2026 tranche it moved 6.05%. Each of those windows also contained a quarterly report.
What was Figma's early lockup release condition?
The closing price of the Class A stock had to sit at least 25% above the $33 IPO price on five trading days inside any ten consecutive sessions, with at least one of those days falling after the Q2 2025 earnings announcement. Meeting it freed 25% of eligible shares held by current employees and service providers, with Section 16 officers excluded.
Data notes, method, and symbol verification
Figma listed on the NYSE on July 31, 2025. This ticker also carries an older and entirely unrelated block of trading history in the record, belonging to a different issuer whose listing ended in 2017. The panel below counts sessions per calendar year for the symbol, which makes the gap between the two listings visible. Every panel in this post filters to sessions on or after July 31, 2025, and no figure here mixes the two histories.
| year | sessions | earliest_print | latest_print |
|---|---|---|---|
| 2007 | 225 | 2007-02-09 | 2007-12-31 |
| 2008 | 253 | 2008-01-02 | 2008-12-31 |
| 2009 | 252 | 2009-01-02 | 2009-12-31 |
| 2010 | 252 | 2010-01-04 | 2010-12-31 |
| 2011 | 252 | 2011-01-03 | 2011-12-30 |
| 2012 | 250 | 2012-01-03 | 2012-12-31 |
| 2013 | 252 | 2013-01-02 | 2013-12-31 |
| 2014 | 252 | 2014-01-02 | 2014-12-31 |
| 2015 | 252 | 2015-01-02 | 2015-12-31 |
| 2016 | 252 | 2016-01-04 | 2016-12-30 |
| 2017 | 248 | 2017-01-03 | 2017-12-26 |
| 2022 | 158 | 2022-05-17 | 2022-12-30 |
| 2023 | 250 | 2023-01-03 | 2023-12-29 |
| 2024 | 252 | 2024-01-02 | 2024-12-31 |
| 2025 | 205 | 2025-01-02 | 2025-12-31 |
| 2026 | 184 | 2026-01-02 | 2026-09-25 |
The exact SQL behind every number
SELECT
toString(toYear(date)) AS year,
count() AS sessions,
toString(min(date)) AS earliest_print,
toString(max(date)) AS latest_print
FROM
(
SELECT date
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'FIG'
GROUP BY date
)
GROUP BY year
ORDER BY yearAcross 16 calendar years with prints under this symbol, the current listing accounts for the final rows, and 184 sessions have printed in the latest year so far.
Method: the trailing average excludes the session being measured (20 sessions up to the prior close). Offsets count trading sessions, not calendar days. Releases are stamped at the open, so offset 0 is the first session on which the freed shares could be sold. Lockup terms, tranche percentages and share counts are from Figma's Q2 2025 earnings release and its 8-K filings; earnings dates are the company's own announcements. Daily bars carry a short ingest lag at the front edge, so the most recent session or two may be absent.
Every panel above ships with its SQL underneath, so expand one to see exactly which sessions were counted. To line up a different listing's lockup dates against its own tape, ask for it in plain English on the Strasmore terminal.