A daily-updated list of every free AI model (free LLM API) available right now, ranked every day by an open quality score — with who actually serves each model and whether they may train on your prompts.
Want one OpenAI-compatible endpoint that routes to the best of these for you? ZeroLimitAI is the hosted router built by the maintainers of this list, on this same ranking.
Three things this list does that a plain list of free models does not:
- It ranks by measured quality. Published benchmark indices and LM Arena ratings, combined by one small file you can read and re-run. Not alphabetical, not by context window, not by hand.
- It tells you who gets your prompts. A free model is often served by a host with a different data policy from the lab that made it. Each row says whether that host may train on what you send, and how long it keeps it.
- It is data, not just a page.
data/models.jsonis regenerated daily with every score and every input the score was computed from, and a snapshot of each day is kept indata/history/.
No key needed to read any of it. No scraping: only public, official APIs.
Last updated: Thu, 22 Oct 2026 09:15:33 UTC · 18 free chat models · ranked by the open score in this repo · free-tier limits are the provider's, per account12
5 of today's top 10 are served only by providers that may train on your prompts.
| # | Model | Score | Measured by | Trains on your prompts? | Context | Max output | Tools | Input | Today | Source |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Thinking Machines: Inkling | 68 | benchmarks + Arena | 🔴 may train | 1M | 262K | ✓ | 🖼️ vision, audio | — | link |
| 2 | Thinking Machines: Inkling Small | 65 | benchmarks + Arena | 🔴 may train | 1M | 262K | ✓ | 🖼️ vision, audio | — | link |
| 3 | MiniMax: MiniMax M3.1 Flash | 58 | benchmarks | — | 1M | 524K | ✓ | 🖼️ vision, video | ▶ answering | link |
| 4 | Google: Gemma 4 31B | 57 | benchmarks + Arena | ✅ no · kept 55 days | 262K | 33K | ✓ | 🖼️ vision, video | ✅ up | link |
| 5 | Google: Gemma 4 26B A4B | 55 | benchmarks + Arena | ✅ no · kept 55 days | 262K | 33K | ✓ | 🖼️ vision, video | ✅ up | link |
| 6 | NVIDIA: Nemotron 3 Super | 46 | benchmarks + Arena | 🔴 may train | 262K | 236K | ✓ | 💬 text | — | link |
| 7 | NVIDIA: Nemotron 3 Ultra | 44 | benchmarks | 🔴 may train | 1M | 66K | ✓ | 💬 text | — | link |
| 8 | NVIDIA: Nemotron 3.5 Super VL | 43 | benchmarks | 🔴 may train | 1M | 131K | ✓ | 🖼️ vision, video | — | link |
| 9 | Poolside: Laguna S 2.1 ⏳ retiring 2026-10-31 |
34 | estimate (size) | ✅ no · retention unknown | 262K | 33K | ✓ | 💬 text | — | link |
| 10 | Poolside: Laguna XS 2.1 ⏳ retiring 2026-10-31 |
26 | estimate (size) | ✅ no · retention unknown | 262K | 33K | ✓ | 💬 text | — | link |
| 11 | XingChen: Xing4.0 29B A4B | 25 | estimate (size) | — | 262K | 236K | ✓ | 💬 text | ✅ up | link |
| 12 | Cohere: North Mini Code | 23 | benchmarks | ✅ no · kept 30 days | 256K | 64K | ✓ | 💬 text | ✅ up | link |
| 13 | NVIDIA: Nemotron 3.5 Lightning | 22 | benchmarks | 🔴 may train | 1M | 66K | ✓ | 💬 text | — | link |
| 14 | Recursive: Flint | 20 | estimate (size) | — | 262K | 236K | ✓ | 💬 text | ✅ up | link |
| 15 | NVIDIA: Nemotron 3 Nano Omni | 15 | benchmarks | 🔴 may train | 256K | 66K | ✓ | audio, 🖼️ vision, video | — | link |
| 16 | Dots Studio: Dots3-Note Preview ⏳ retiring 2026-12-31 |
13 | estimate (size) | ✅ no · retention unknown | 512K | 461K | ✓ | 🖼️ vision | ✅ up | link |
| 17 | LiquidAI: LFM2.5-2.6B | 9 | benchmarks | 🔴 may train | 66K | 8K | ✓ | 💬 text | — | link |
| 18 | GPT-OSS 20B Reasoning LLM (OVH) | — | — | — | — | — | — | 💬 text | — | link |
3 free models that are not chat models (music, image, audio, classifiers):
How to read the table
- Score — 0–100, from
scoring/score.js. 100 would be a free model as good as the best model anyone sells; nothing free is close. - Measured by — what the score rests on:
benchmarks + Arenais the strongest basis, one of the two alone is discounted, and anestimatemeans nobody has measured the model yet (it is capped so it cannot outrank a measured one). - Trains on your prompts? — the policy of the provider serving the free
endpoint on OpenRouter, from
OpenRouter's provider table
(last read by hand on 2026-10-22), plus how long that provider keeps
prompts.
—means we could not establish it; we do not guess. Where OpenRouter treats a provider's free endpoint more strictly than its table row (Poolside, since October: its free endpoints are refused to accounts that disallow free-model training), the stricter answer is shown. - Today — whether the free endpoint is actually answering. A GitHub Action
has no traffic to know that, so this one column is borrowed from the
production health checks of ZeroLimitAI's
router, which is built by this repo's maintainers. It only probes the models
it routes to, and it does not route to providers that may train, so those
rows show
—. - ⏳ retiring — the provider has published a shutdown date. The model works today and stops without further notice on that date.
Free-tier limits are the provider's and belong to the account, not the model:
on OpenRouter every :free id shares 20 requests/minute and 50 requests/day
(1,000/day once the account has bought $10 in credits).1
Free inference is free because someone gets something back, and sometimes that something is your prompts. Whether it matters is your call; the point is to know before you send a customer's data.
- The column describes the free endpoint on OpenRouter. The same model called somewhere else is under that provider's own terms, which can differ: a provider's own unpaid tier is not necessarily covered by what OpenRouter's table says about the endpoint it serves. Read the terms of wherever you call.
- OpenRouter describes its table as its best knowledge of each provider's
policy, not a definitive source. This repo copies it for the providers that
serve free models (
scoring/sources.js, with the date it was read). If a row is wrong, open an issue. - On OpenRouter you can refuse those providers per request, so a model served by several hosts only goes to the ones that do not train:
{
"model": "google/gemma-4-31b-it:free",
"provider": { "data_collection": "deny" },
"messages": [{ "role": "user", "content": "Hello!" }]
}The file is plain JSON at a stable URL:
https://raw.githubusercontent.com/ClawLabsAI/free-ai-models/main/data/models.json
The best free model today that supports tools and is not served by a provider that may train:
curl -s https://raw.githubusercontent.com/ClawLabsAI/free-ai-models/main/data/models.json \
| jq -r '[.models[] | select(.rank and .supports_tools and .data_use == "no-training")][0].id'const { models } = await (await fetch(
"https://raw.githubusercontent.com/ClawLabsAI/free-ai-models/main/data/models.json",
)).json();
// A fallback chain: ranked, tool-capable, no training, best first.
const chain = models
.filter((m) => m.rank && m.supports_tools && m.data_use === "no-training")
.map((m) => m.id);import requests
from openai import OpenAI
models = requests.get(
"https://raw.githubusercontent.com/ClawLabsAI/free-ai-models/main/data/models.json"
).json()["models"]
best = next(m["id"] for m in models if m["rank"] and m["data_use"] == "no-training")
client = OpenAI(base_url="https://openrouter.ai/api/v1", api_key="YOUR_OPENROUTER_KEY")
print(client.chat.completions.create(
model=best, messages=[{"role": "user", "content": "Hello!"}]
).choices[0].message.content)The ids are OpenRouter ids, so they work as-is anywhere that takes one: the
OpenAI SDKs pointed at OpenRouter, LiteLLM (openrouter/<id>), and coding
tools such as Cline, Roo Code, Continue, Aider and OpenCode.
| Field | Meaning |
|---|---|
id, name, provider |
The model's id on its source, its display name, and the lab that made it |
kind |
chat (answers in text) or other (music, image, audio generators) |
rank, score |
Position and 0–100 score among today's free chat models; null if not ranked |
quality |
The score before the fitness factor (context, output, tools, shutdown date) |
basis |
benchmarks+arena, benchmarks, arena, family or prior — what the score rests on |
notes |
Why the score is what it is: imputed benchmarks, no tool calling, expires in N days… |
excluded |
Why a model is not ranked (a classifier, not text-only, expired), or null |
benchmarks |
Artificial Analysis indices as published by OpenRouter: intelligence, coding, agentic |
arena |
LM Arena ratings: overall, coding, instruction_following, spanish, and votes |
hf |
From the Hugging Face model card: paramsB (billions of parameters), downloads, pipelineTag |
served_by |
The provider(s) behind the free endpoint |
data_use |
no-training, mixed, may-train, or null when unknown |
retention |
How long that provider keeps prompts: "zero", days, "unknown", or null |
context_window, max_output |
Tokens |
supports_tools, supports_structured_outputs |
As declared by the endpoint |
modalities |
Inputs and outputs: text, image, audio, video, file |
expires |
Shutdown date published by the provider, or null |
health, answering_now |
Live status from ZeroLimitAI's router; null when it does not probe the model |
zo_score, zo_rank |
Aliases of score (rounded) and rank, kept for readers written before 2026-10-10 |
The top-level scoring object records the benchmark maxima used that day and
whether the Arena table was available, so any day's ranking can be recomputed
from its own snapshot.
The whole method is scoring/score.js (pure: no network,
no clock) and its inputs come from scoring/sources.js.
The longer explanation, with every weight and why it is what it is, is in
scoring/README.md. In short:
- Benchmarks — Artificial Analysis intelligence, coding and agentic indices, normalised to the best model in the whole catalogue (paid ones included). A missing index is imputed at a discount, never dropped, so reporting less cannot raise a score.
- Preference — LM Arena ratings (overall, coding, instruction following).
- With both, they are blended 55/45; with one, it is discounted 8 %.
- No measurement at all — the model inherits 80 % of a measured sibling in its family, or gets a prior from its real size and downloads, capped below any well-measured model.
- Fitness — small factors for what matters when you build on a model: context under 32K, output under 4K, no tool calling, a shutdown date within a week.
Whether a model is answering right now is deliberately not in the score: a model that is rate-limited this hour is still the better model.
git clone https://github.com/ClawLabsAI/free-ai-models && cd free-ai-models
npm ci
npm test # the scoring rules
npm run update # rebuild today's ranking from the public sourcesDisagree with a weight? Change it, run it, and open a pull request with the ranking it produces. That is what the file is for.
For anyone wiring up a provider directly. All of them speak the OpenAI shape
unless noted, so base_url is the only change.
| Provider | Base URL | Free allowance | Card | Your prompts | The catch | Checked |
|---|---|---|---|---|---|---|
| OpenRouter | https://openrouter.ai/api/v1 |
Every :free model together: 20 RPM, 50 RPD per account (1,000 RPD after $10 in credits) 1 |
No | Depends on who serves the model: see the data-use column above; send provider.data_collection: "deny" to refuse providers that may train 3 |
One daily cap for all free models | 2026-10-22 |
| Groq | https://api.groq.com/openai/v1 |
Per model: 30 RPM, 1,000 RPD, 8,000 tokens/min for qwen/qwen3.8-27b, openai/gpt-oss-120b, openai/gpt-oss-20b 4 |
No | Not retained by default; may be logged up to 30 days for abuse review; training not mentioned 5 | 8K tokens/min: one long prompt fails. With a card on file the org can be on paid on-demand usage — check Billing | 2026-10-22 |
| Google AI Studio | https://generativelanguage.googleapis.com/v1beta/openai/ |
Per model and per project, shown in AI Studio (no numbers in the docs) 6 | No | Free tier: used to improve Google products, may be read by human reviewers 7 | Not allowed in apps for users in the EEA, Switzerland or the UK 7 | 2026-10-22 |
| Cloudflare Workers AI | https://api.cloudflare.com/client/v4/accounts/{id}/ai/v1 |
10,000 Neurons/day across all models, reset 00:00 UTC 8 | No | Not used for training; not kept for standard requests 9 | Neurons, not requests: how far they go depends on the model | 2026-10-22 |
| Cerebras | https://api.cerebras.ai/v1 |
Trial, not a free tier: $5 of credits that expire after 30 days; 5 RPM 10 | Yes | Not covered on the limits page | API stays inactive until you add a payment method | 2026-10-22 |
| Pollinations | https://text.pollinations.ai |
Anonymous tier, rotating model list 2 | No key | — | — | 2026-09-23 |
| OVHcloud AI Endpoints | https://oai.endpoints.kepler.ai.cloud.ovh.net/v1 |
Anonymous: 2 RPM per IP; in practice 429 most of the time 11 |
No key | — | — | 2026-09-23 |
Mistral is not listed: on 2026-10-22 its pricing page showed no free API plan we could verify. Free tiers are meant for building and trying things; read each provider's terms before putting one behind a product. Plain-language pages per provider: zerolimitai.com/free-llm-api.
GitHub Actions (daily, 04:00 UTC)
│
▼
scripts/fetch-models.js
│
├── OpenRouter /api/v1/models catalogue, prices, benchmark indices
├── OpenRouter /models/{id}/endpoints who serves each free endpoint
├── LM Arena leaderboard (Hugging Face) human-preference ratings
├── Hugging Face /api/models/{id} real size and downloads
├── Pollinations /models anonymous tier
│
├── scoring/score.js rank
│
└── writes data/models.json · data/history/YYYY-MM-DD.json · README tables
Watch → Custom → Releases to get one summary a week (new models, retired models, changes at the top) instead of a daily commit.
- A model is missing or a row is wrong — it is read from the provider's own API, so it usually fixes itself within a day. If it does not, open an issue.
- A new provider — welcome if it can be read the same way: live, from its own public API. See CONTRIBUTING.md.
- The score — pull requests that change a weight should say what ranking the change produces and why that ranking is better.
The team behind ZeroLimitAI, a hosted AI app and API whose router ranks free models with this same function. We keep the list accurate because our own product depends on it; the list itself stays MIT, provider-neutral and useful without us — a model belongs here whether or not we route to it, and several of the highest-ranked ones we do not.
- awesome-free-llm-apis — a wider, hand-curated catalogue of providers with free tiers
- FreeLLMAPI and free-claude-code — self-hosted routers that stack free tiers using your own keys
- LiteLLM — one SDK and proxy for every provider
- LM Arena and Artificial Analysis — where the measurements come from
MIT — use freely, attribution appreciated.
Footnotes
-
OpenRouter, Free usage limits (checked 2026-10-22). The cap is global per account — extra API keys or accounts do not widen it. ↩ ↩2 ↩3
-
Pollinations serves an anonymous tier with no API key. Which models are in it changes; this list reads their live catalogue every day and keeps the models marked
tier: "anonymous". They are listed unscored: no public benchmark data is attached to them. ↩ ↩2 -
OpenRouter, provider logging and training. ↩
-
Groq, rate limits. Your organisation's own limits are at console.groq.com/settings/limits. ↩
-
Google, Gemini API rate limits: per project, vary by model; setting up billing moves the project to a paid tier. ↩
-
Google, Gemini API additional terms (updated 2026-04-28): Unpaid Services, and "You may use only Paid Services when making API Clients available to users in the European Economic Area, Switzerland, or the UK". ↩ ↩2
-
Cloudflare, Workers AI pricing. ↩
-
Cloudflare, Workers AI data usage. ↩
-
Cerebras, rate limits: "no permanently free tier". ↩
-
OVHcloud publishes a permanent anonymous tier (no signup, no key) limited to 2 requests/minute per IP per model. Their
/v1/modelscatalogue answers without a key; on 2026-09-23 four chat completions from two different models, spaced over several minutes, all returnedAPI rate limit exceeded. ↩