What counts as a free LLM API here
An entry qualifies when the provider itself documents access that costs nothing to start: a standing free tier, a pool of models priced at zero, or signup credit. Reverse-engineered endpoints, leaked keys, and gateways reselling someone else’s quota are out of scope, and no key of any kind is distributed by this project. Every entry links to the page you would use to create your own.
The catalog currently holds 26 providers across 5 access types and 7 model families that appear at more than one provider.
Where the numbers come from
Each provider record carries at least one official source URL and a source_checked_at date. A rate limit may only be recorded if a source states it; the validator fails the build otherwise. When a provider publishes limits only inside a logged-in console, or scales them by tier, the field stays empty and the status says so. That is why some rows read "set by project tier" instead of a number: inventing a plausible figure would make the table look more complete and be worth less.
What a probe does and does not prove
A probe is one sampled request against one endpoint at one moment. 200 means that request succeeded. 401 or 403 means the sample credential was refused and says nothing about the provider. 429 means that sample was throttled, with no information about anyone’s remaining quota. Only a network failure or a 5xx points at the endpoint, and even then it describes one sample rather than an outage. Probes run outside CI and read their key from an environment variable; the published output records the classification, status, latency, and timestamp, never the key or the response body.
How browser reachability is measured
Each base URL gets a CORS preflight from the site’s own origin. If the response allows that origin and lists authorization among the permitted headers, a browser can call the endpoint and the provider is marked supported. If the origin is refused, it is marked blocked and the key checker does not pretend otherwise. If the origin is allowed but the header is not listed, the result is recorded as unverified rather than guessed. No credential is involved in this measurement, which is why it can run for every provider.
Which providers get their own page
25 of the 26 providers have a page. A provider earns one only when its free terms are documented in enough detail to say something specific: a limits summary of at least 120 characters, at least one official source, and a signup URL a reader can act on. 1 currently do not (GitHub Models), so they appear as catalog rows only. The alternative — a page per provider regardless — produces pages that differ by a name and nothing else, which helps nobody and is the pattern search engines classify as a doorway.
How this is kept honest
Every page on this site is generated from the data files by a renderer, and a check step fails if any published file differs from what the current data would produce. Editing a page by hand is therefore not possible without the change being reverted, and a data correction updates the README, the catalog, and every page that cites it at the same time. Corrections are welcome as issues or pull requests against the data file, not the output.
The repository ships no credentials, and the key checker sends what you paste only to the provider you picked, enforced by a Content Security Policy rather than by a promise.