ForHosting KIT · Finance & money

Free float calculator

Of 1,000,000,000 shares outstanding, with 150,000,000 restricted and 100,000,000 held by insiders, only 750,000,000 can trade on the market: a public float of 75%. See the slice index providers and liquidity screens actually use. Free in your browser.

  • Free
  • Runs in your browser
  • No sign-up
  • Your data stays on your device
Use it from WebAPIEmailTelegramApp soon
If you enter
Shares outstanding
1,000,000,000
Restricted shares
150,000,000
Insider holdings
100,000,000
You get
Free float
750,000,000
Free float percent
75

Free float is the number of shares actually available for public trading after subtracting restricted stock and insider holdings from shares outstanding. Index providers, liquidity screens, and valuation models use that public slice rather than the headline share count, because a firm with a large strategic or lock-up block can print a high market capitalization while the tradable float remains thin. This free float calculator subtracts restricted shares and insider holdings from shares outstanding, then returns both the free-float share count and the free-float percentage of outstanding.

What free float is and how restricted and insider holdings are subtracted

Free float is the slice of a company's equity that can trade on the public market: shares outstanding minus restricted shares minus insider holdings. Shares outstanding is the issued stock still in holders' hands, including locked and closely held stock; it is not authorized capital and it is not the same as the tradable float. Restricted shares are stock that cannot legally or contractually trade yet: lock-up shares after an offering, unvested employee awards, Rule 144 restricted stock, or other transfer-restricted blocks disclosed in a filing.

Insider holdings are shares held by officers, directors, and other affiliates whose sales are delayed, disclosed, or economically sticky even when the certificates are not formally restricted. This calculator treats the two buckets as additive and disjoint: each locked or closely held share should be counted in exactly one field so the subtraction does not double-count.

The free-float percentage is that count divided by shares outstanding, times one hundred, so one billion outstanding, one hundred fifty million restricted, and one hundred million insider holdings is a free float of seven hundred fifty million shares and seventy-five percent. A zero free float is a valid result when the entire outstanding count is locked or closely held.

A negative free float is not a result: if restricted shares exceed total shares outstanding the task fails, and if the two buckets together exceed outstanding the task also fails, because the public share count cannot be negative.

Homework and LMS keys for free float

Mark problems that ask students to compute free float as outstanding minus restricted minus insider holdings, including the invalid case where restricted shares exceed total shares.

How is free float calculated from shares outstanding?

Send a positive outstanding count and non-negative restricted and insider blocks. One billion outstanding, one hundred fifty million restricted, and one hundred million insider holdings is a free float of seven hundred fifty million shares.

What happens if restricted shares exceed total shares outstanding?

Restricted shares cannot be larger than the outstanding count, so the calculator refuses to return a negative free float.

Should overlapping insider and restricted shares be counted twice?

If a share is both restricted and insider-held, count it in only one field so the subtraction does not double-count the locked block.

How is the free-float percentage calculated?

Seven hundred fifty million public shares on one billion outstanding is a seventy-five percent free float. A fully locked share count returns zero percent, which is a valid result.

What counts as restricted shares?

Stock that cannot legally or contractually trade yet: lock-up shares after an offering, unvested employee awards, Rule 144 restricted stock and other blocks with transfer limits disclosed in a filing. Put each locked share in one bucket only, restricted or insider, never both.

Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.

POSThttps://api.kit.forhosting.com/fin/free-float

Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.

curl -X POST https://api.kit.forhosting.com/fin/free-float \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"shares_outstanding":1000000000,"restricted_shares":150000000,"insider_holdings":100000000}'
{
  "shares_outstanding": 1000000000,
  "restricted_shares": 150000000,
  "insider_holdings": 100000000
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "fin.free_float",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.

Per request$0.002

Published price — no tokens, no invented credits. A failed task is never charged.

max_abs_value1000000000000000
HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.

If restricted shares exceed total shares outstanding the task fails with invalid_input instead of inventing a negative float.

What free float is and how restricted and insider holdings are subtracted

The identity is free_float equals shares_outstanding minus restricted_shares minus insider_holdings. The endpoint does not fetch filings, beneficial-ownership tables, or live quotes; it applies the three counts you already extracted so homework keys, landing-page widgets, and automation share one auditable public share figure.

Input contract, response shape, and error behaviour

If restricted shares plus insider holdings exceed outstanding, the task also fails because free float cannot be negative. Failed validation does not consume balance, which keeps exploratory scripts cheap when developers intentionally send a restricted block larger than outstanding to confirm the error path. POST a JSON body with three required finite numbers. shares_outstanding (aliases total_shares, outstanding_shares, shares, number_of_shares, and shares_issued) is the starting share count and the percentage denominator; it must be a finite number strictly greater than zero. restricted_shares (aliases restricted, restricted_stock, and lockup_shares) is the non-tradable block and must be finite and greater than or equal to zero. insider_holdings (aliases insider_shares, insiders, and insider_ownership) is the affiliate block subtracted after restricted shares and must be finite and greater than or equal to zero. On success the body echoes shares_outstanding, restricted_shares, and insider_holdings, then free_float as the public share count, free_float_percent as a percent of outstanding, and a formula string restating free float equals outstanding minus restricted minus insider holdings. Example: one billion shares outstanding, one hundred fifty million restricted, and one hundred million insider holdings returns free_float seven hundred fifty million and free_float_percent seventy-five. Missing fields, non-finite values, a negative restricted or insider count, or a zero or negative outstanding count fail with invalid_input naming the field and are not billed. Restricted shares that exceed total shares outstanding fail with a dedicated invalid_input message rather than a negative float. Prefer plain JSON numbers over strings with commas, share-class labels, or percent signs; numeric strings are accepted only when they match a strict finite number pattern. Pricing is a fixed $0.002 per successful call with unit item.

Where a free float calculator earns its keep

Index and liquidity screens use free float rather than fully diluted shares so a tightly held name is not treated as if its entire capitalization could trade in a day. Educators and LMS platforms need an oracle for the definition question that asks students to compute free float from outstanding, restricted, and insider holdings, including the case where restricted shares exceed outstanding and must be rejected. Use this capability when you already have the three share counts; if you have market capitalization, debt, and cash, use an enterprise-value calculator instead of this free-float identity. Equity-research notebooks and cap-table files often store shares outstanding, lock-up shares, and insider ownership in separate columns; a deterministic endpoint recovers free float without a spreadsheet cell that someone might later rewrite as market capitalization by multiplying outstanding by price. Integrators wire the endpoint into notebooks, workflow tools, or edge workers to pin goldens whenever a filing updates the lock-up schedule or a Form 4 changes the insider total. Keep shares_outstanding strictly positive, keep restricted_shares and insider_holdings non-negative and within outstanding, pin the rounded free_float and free_float_percent fields in tests, and you get reproducible public share counts for widgets, classrooms, and production without standing up an equity-data terminal of your own.

Public float from a 10-K share count

Turn shares outstanding, restricted or lock-up shares, and insider holdings from a filing into free_float and the free-float percent used on a quote page.

Cap-table files that store locked and insider blocks separately

Recover free_float from outstanding, restricted, and insider columns without accidentally multiplying outstanding by price (that would be market capitalization, not float).

What does the free float calculator cost?

The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.

Read the full KIT documentation →