Skip to content
Nonprofiteer

Notes

“Foundations” against “funds”

Data as of 29 October 2026 · measured 30 October 2026 · published 30 October 2026

A nonprofit's name is its own choice, and a word in it is not a legal category. The IRS's Business Master File records, separately, whether each organization must file a Form 990-PF, the return for private foundations. The table below sets the two side by side.

Of the 251,369 organizations with FOUNDATION in their name, the Business Master File says 81,263 — 32.3% — must file a 990-PF. For FUND it is 18.9%. TRUST is the only word in the table where more than half do, at 52.2%. ASSOCIATION, SOCIETY, ALLIANCE and COALITION are each under 2%.

Organizations by a word in their name

Organizations by a whole word in their name: how many, how many the IRS says must file a 990-PF, and the revenue on their latest return
Word Organizations Must file a 990-PF % must file a 990-PF With revenue Median revenue Total revenue
FOUNDATION 251,369 81,263 32.3 150,694 $108,617 $636,284,454,125
ASSOCIATION 151,572 1,827 1.2 61,754 $143,798.50 $143,735,504,857
SOCIETY 50,845 873 1.7 16,132 $132,291.50 $28,528,750,363
FUND 34,133 6,449 18.9 20,609 $110,517 $152,594,951,054
TRUST 19,837 10,350 52.2 16,923 $84,230 $102,900,197,122
PROJECT 17,592 530 3.0 6,570 $140,706.50 $9,106,200,539
ALLIANCE 16,251 264 1.6 6,567 $225,241 $34,030,558,694
INSTITUTE 15,316 672 4.4 7,884 $257,076 $83,676,394,443
COALITION 7,566 119 1.6 3,701 $207,000 $6,977,517,522

How to read it

  • A name can carry two of the words and then counts under both: a name like COMMUNITY FOUNDATION TRUST is in the FOUNDATION row and the TRUST row. The rows do not add up to a total.
  • A word counts only as a whole word, so FUNDAMENTAL is not FUND and TRUSTEES is not TRUST. A hyphen breaks words, so FUND-RAISING counts as FUND.
  • The word is matched in upper case, as the Business Master File writes names. A name this dataset stores in mixed case, as some sources other than the Business Master File provide it, is not counted.
  • Organizations counts every organization this dataset holds whose name matches, other than records since removed. It is not limited to organizations that file a return with a revenue figure: it includes those that file only the 990-N postcard and those that have no return in this dataset.
  • Must file a 990-PF is the Business Master File's private-foundation filing requirement code. It is what the IRS says the organization must file, not a record that it filed one.
  • With revenue, median and total cover only the organizations whose latest return reports total revenue: a Form 990, 990-EZ or 990-PF, as filed. An amended return replaces the one it amends, so no return is counted twice. Organizations that file only the 990-N postcard, which reports no revenue, or that have no return in this dataset, are in the first three columns and not in these three. Each organization's latest year is its own, so tax years differ from one organization to the next.

Where the figures come from

These are counts from a restore of this dataset's database backup of 30 October 2026, as of its newest ingest run at 19:31 UTC on 29 October 2026. They were measured on that copy, not on the live site, and are not updated as the data changes. The query and its results are recorded in this project's research note on that restore, under "7.4 Name-word counts". The query is below, as it was run.

The query
SET statement_timeout = 300000;
WITH words(word) AS (
  VALUES ('FOUNDATION'), ('FUND'), ('TRUST'), ('SOCIETY'), ('ASSOCIATION'),
         ('INSTITUTE'), ('ALLIANCE'), ('COALITION'), ('PROJECT')
),
latest AS (
SELECT DISTINCT ON (f.organization_id)
       f.organization_id, f.id AS filing_id, f.tax_year, f.total_revenue
FROM filings f
WHERE f.organization_id IS NOT NULL
  AND f.total_revenue IS NOT NULL
  AND f.superseded_by_id IS NULL
  AND f.tombstoned_at IS NULL
ORDER BY f.organization_id, f.tax_year DESC, f.return_ts DESC NULLS LAST, f.id DESC
)
SELECT w.word,
       count(*) AS orgs,
       count(*) FILTER (WHERE o.pf_filing_requirement_code = '1') AS pf_required,
       round(100.0 * count(*) FILTER (WHERE o.pf_filing_requirement_code = '1')
             / count(*), 1) AS pct_pf_required,
       count(l.organization_id) AS with_revenue,
       percentile_cont(0.5) WITHIN GROUP (ORDER BY l.total_revenue) AS median_revenue,
       sum(l.total_revenue) AS total_revenue
FROM words w
JOIN organizations o
  ON o.tombstoned_at IS NULL AND o.name ~ ('\m' || w.word || '\M')
LEFT JOIN latest l ON l.organization_id = o.id
GROUP BY w.word
ORDER BY orgs DESC;