The check everybody wants to run on an extracted cap table is that the percentages sum to 100%. They will, and only against one denominator at a time. A table showing a founder at both 42% and 36% is usually not an extraction error — it is two views of the same shares, and a validator that flags it is the thing that is wrong.
What makes a cap table hard
A capitalisation table is a spreadsheet exported to PDF, so the usual table-reading problems apply: merged header cells, a total row that looks like a data row, columns that shift on the second page, and share counts formatted with thousands separators that differ by locale. Those are generic and covered by table extraction generally.
What is specific is that the table encodes a model, not just numbers. Each row is a holder and a security, and the securities are not fungible: common stock, one or more series of preferred, options granted, options reserved but ungranted, warrants, restricted stock units, and convertible instruments that have no share count at all until something happens. The percentage columns are computed over different subsets of those, and the column headers are the only place the subset is named.
So the first field to extract is not a number. It is the definition of each percentage column, taken from its header: “% Outstanding”, “% Fully Diluted”, “% As Converted”. An extraction that harvests a column called “%” without recording which basis it uses has produced numbers that cannot be reconciled with any other document about the same company.
Three denominators, three correct answers
The three views in common use:
- Outstanding. Shares actually issued and outstanding — common plus preferred as issued. Options and warrants are not included because they are not shares yet. This is the basis for things that require actual share ownership.
- As converted. Outstanding shares with each preferred share counted as the number of common shares it converts into. Usually one-for-one at the start, and not after an anti-dilution adjustment or a stock split affecting one class. This is the basis for most voting calculations.
- Fully diluted. As-converted plus every granted option and warrant, plus — and this is the variable part — the unissued option pool reserve. Whether the ungranted reserve is included is a convention, not a fact, and different tables for the same company differ on it. It is worth extracting as an explicit flag, because it moves every percentage in the column.
A worked table
Take a synthetic company with these positions:
security shares
------------------------------ ---------
Common stock (founders) 6,000,000
Series Seed preferred 1,500,000
Series A preferred 2,000,000
Options granted and outstanding 800,000
Option pool reserved, ungranted 700,000
Warrant (lender) 100,000
Outstanding = 6,000,000 + 1,500,000 + 2,000,000 = 9,500,000
Fully diluted = 9,500,000 + 800,000 + 700,000
+ 100,000 = 11,100,000
A founder holding 4,000,000 common shares is therefore 4,000,000 / 9,500,000 = 42.105%, rounded to 42.11%, of outstanding — and 4,000,000 / 11,100,000 = 36.036%, rounded to 36.04%, fully diluted. Both figures are correct and they differ by 6.07 percentage points. The same founder appears at a third number if the ungranted pool is excluded from the diluted basis: 4,000,000 / 10,400,000 = 38.46%.
That third figure is worth dwelling on, because it is the one that causes arguments. The difference between including and excluding the 700,000 unissued reserve is nearly two and a half percentage points for this holder, and both conventions are in ordinary use. When the document does not say, the check is arithmetic: compute the implied denominator from any row where both the share count and the percentage are printed, and see which total it matches. If a holder of 1,500,000 shares is shown at 13.51%, the implied denominator is 1,500,000 / 0.1351 = 11,102,000 or so, which identifies the 11,100,000 basis within rounding. Recovering the denominator from the data is more reliable than trusting a header.
Rounding is the other reason a footing check fails on a correct extraction. Percentages printed to two decimal places will sum to something like 99.99% or 100.01%, and with ten or more rows the drift can reach a few hundredths either way. Validate with a tolerance proportional to the row count — on the order of half a unit in the last printed place per row — rather than demanding exactly 100.00. Better still, validate the share counts, which are integers and must sum exactly, and treat the percentage columns as derived.
Instruments with no share count yet
Convertible notes and SAFEs are the reason a cap table extraction cannot be a pure table read. They represent real economic ownership and they have no share number until a priced round converts them, so they appear in a footnote, in a separate section, or as a row with a dollar amount and an empty shares column.
Their conversion is arithmetic that depends on the terms. A $500,000 note with a 20% discount converting in a round priced at $2.00 per share converts at $1.60, giving 312,500 shares. The same note with a $8,000,000 valuation cap converts at the lower of the discount price and the cap price, and the cap price depends on the pre-money share count — which is the number you are trying to compute, which is why post-money SAFE forms were designed to remove the circularity.
The extraction implication is narrow and important: do not let a model compute converted share counts. Extract the instrument terms — principal, discount, cap, interest rate, maturity, whether the cap is pre-money or post-money — as fields, and mark the holder’s position as unconverted. A percentage for a note holder that appears on the document is an issuer’s illustration under stated assumptions, and those assumptions belong in the record next to it.
The same applies to any table headed “pro forma” or “as adjusted for the proposed financing”. Those are projections. Ingesting one as the current cap table is the single most consequential error available in this document type, and the only defence is to extract the table’s own caption and treat basis: pro_forma as a first-class field.
The checks worth running
- Share counts sum to the printed total. Integers, no tolerance. A mismatch is a dropped row, a page break inside the table, or a subtotal row counted as data. This catches more real errors than the percentage check does.
- Each percentage column sums to 100% within tolerance and, separately, each row’s percentage equals its shares over the denominator implied by that column. A row that fails while the column total passes is a transcription error in one cell.
- The implied denominator is consistent across rows within a column. Two different implied denominators in one column means the export mixed bases — which happens when a spreadsheet column was hand-edited.
- Preferred as-converted counts are consistent with the stated conversion ratio. Where a series has a conversion ratio other than 1:1 stated in a footnote, check that the as-converted column actually applied it. Anti-dilution adjustments produce ratios like 1.0847, and they are easy to state in a footnote and forget in a column.
- No holder appears twice under one security unless the table is by certificate rather than by holder, which some are. Two rows for one holder is normal in a certificate-level table and a duplicate in a holder-level one; the distinction comes from whether a certificate number column exists.
Treasury shares and repurchased stock deserve a mention because they break the intuition that issued equals outstanding. Shares repurchased by the company and held in treasury are issued but not outstanding, so they belong in neither the outstanding denominator nor most percentage calculations, and a table that lists them as a row will fail a naive footing check for entirely correct reasons.
Nothing here is investment or legal advice, and the numbers above are arithmetic from a synthetic table rather than any real company’s data. Ownership as recorded on a cap table is also not the same thing as economic ownership after a liquidation preference stack is applied; that calculation reads from the charter, not from this document.
Top comments (0)