Open weights and open licence are two different claims, and only the second decides whether a model can sit inside a product that takes money. A repository can publish every parameter, invite fine-tuning, and still bar commercial use outright, cap it at a user count, or gate the download behind approval. Across 46 repositories read from the Hugging Face API on 16 August 2026, three carry non-commercial-only terms, six require manual approval for the weights, and one returns no licence field at all.
None of this is legal advice. It reports what the licence documents and API responses say on the date recorded.
Open Weights Has a Narrower Meaning Than the Industry Gives It
The Open Source Initiative’s Open Weights page states that “When AI developers share these parameters under an OSI Approved License, they empower others to fine-tune, adapt, or deploy the model for their own projects,” and separates open weights from Open Source AI by the absence of training code and data, not by licence restrictiveness. On that wording, a model under a custom vendor licence does not qualify as open weights at all; industry usage is looser.
OSI’s Open Source AI Definition, labelled version 1.0, sets four freedoms: use for any purpose without asking permission, study, modify, and share. Its FAQ names specific models as passing or failing that definition, which is OSI’s own characterisation and not a licence check carried out here.
The Table, as the API Reported It on 16 August 2026
Every value below was read from cardData.license, cardData.license_name where present, and the top-level gated field of https://huggingface.co/api/models/<repo>, for that exact repo. Nothing was inferred from a sibling, an earlier version, or another release by the same lab. Tags change, so a six-month-old check proves nothing about today.
| Repo(s) | license as reported | gated | Practical restriction |
|---|---|---|---|
google/gemma-4-12B-it, -26B-A4B-it, -31B-it, -E4B-it, -E2B-it | apache-2.0 (all five checked) | false | Standard Apache-2.0 terms. |
google/gemma-3-27b-it, google/gemma-3n-E4B-it | gemma | manual | Notice file, restrictions pass to fine-tunes, Prohibited Use Policy by reference. |
meta-llama/Llama-3.3-70B-Instruct (llama3.3), Llama-3.1-8B-Instruct (llama3.1) | custom vendor tag | manual | 700M monthly-active-user threshold, “Built with Llama” attribution. |
meta-llama/Llama-4-Scout-17B-16E-Instruct | other (tag llama4) | manual | 700M MAU threshold, Acceptable Use Policy by reference, derivatives named starting “Llama”. |
meta-llama/Llama-3.2-11B-Vision-Instruct | llama3.2 | manual | Same 700M MAU threshold and attribution. |
mistralai/Mistral-7B-Instruct-v0.3, Mistral-Small-24B-Instruct-2501 | apache-2.0 | false | Standard Apache-2.0 terms. |
Qwen/Qwen2.5-3B-Instruct | other, license_name: qwen-research | false | Non-commercial only. Any commercial use needs a separate licence; no threshold exists. |
Qwen/Qwen2.5-7B-Instruct, -14B-Instruct, -32B-Instruct | apache-2.0 | false | Standard Apache-2.0 terms. |
Qwen/Qwen2.5-72B-Instruct, Qwen/Qwen2.5-VL-72B-Instruct | other, license_name: qwen | false | Commercial use below 100M MAU; “Built with Qwen” on fine-tunes. |
Qwen/Qwen3-32B, Qwen/Qwen2.5-Coder-32B-Instruct | apache-2.0 | false | Standard Apache-2.0 terms. |
deepseek-ai/DeepSeek-V3 | no licence field present | false | Ships LICENSE-CODE (MIT, code) and LICENSE-MODEL (custom, use-restricted, governs weights). |
deepseek-ai/DeepSeek-R1 | mit | false | Single MIT LICENSE, no separate model licence. |
deepseek-ai/deepseek-coder-33b-instruct | other | false | DeepSeek License Agreement, Attachment A use restrictions. |
microsoft/phi-4 | mit | false | Standard MIT terms. |
bigcode/starcoder2-15b | bigcode-openrail-m | false | 14 prohibited-use categories binding fine-tunes; BigCode states it is not open source. |
codellama/CodeLlama-34b-Instruct-hf, llava-hf/llava-1.5-7b-hf | llama2 | false | Llama 2 community terms, with that era’s MAU and attribution obligations. |
OpenGVLab/InternVL3-78B | other, license_name: qwen | false | README claims MIT; license_link routes to Qwen2.5-72B’s licence, which governs. |
openai/whisper-large-v3 | apache-2.0 | false | Standard Apache-2.0 terms. |
openai/whisper-large-v3-turbo, distil-whisper/distil-large-v3 | mit | false | Standard MIT terms. Turbo differs from large-v3 above. |
nvidia/parakeet-tdt-1.1b | cc-by-4.0 | false | Commercial use with attribution on redistribution. |
nvidia/canary-1b | cc-by-nc-4.0 | false | Non-commercial only, whatever the gated status. |
rhasspy/piper-voices | mit | false | Voice weights MIT; the engine is licensed separately, see below. |
coqui/XTTS-v2 | other | false | Non-commercial only, and its outputs may not train models for commercial use. |
hexgrad/Kokoro-82M | apache-2.0 | false | Standard Apache-2.0 terms. Top-level tag only, no secondary-file check. |
suno/bark, microsoft/speecht5_tts, microsoft/Florence-2-large | mit | false | Standard MIT terms. Top-level tag only, no secondary-file check. |
BAAI/bge-large-en-v1.5, intfloat/e5-large-v2 | mit | false | Standard MIT terms. |
nomic-ai/nomic-embed-text-v1.5, sentence-transformers/all-MiniLM-L6-v2, Alibaba-NLP/gte-large-en-v1.5, mixedbread-ai/mxbai-embed-large-v1 | apache-2.0 | false | Standard Apache-2.0 terms. |
The Qwen2.5 Size Trap
One release wave, three licence regimes, split by parameter count. Qwen2.5-3B-Instruct reports license_name: qwen-research, and its licence grants use “FOR NON-COMMERCIAL PURPOSES ONLY,” with no threshold to fall under. The 7B, 14B and 32B instruct repos are apache-2.0. The 72B and VL-72B repos report license_name: qwen, whose agreement permits commercial use but states that “If you are commercially using the Materials, and your product or service has more than 100 million monthly active users, you shall request a license from us.”
The trap: both the 3B and the 72B repos report license: "other" at the top-level tag. Anything reading only that field cannot tell the non-commercial repo from the commercial one; the distinguishing value is license_name. Meta’s threshold, for contrast, is 700 million MAU.
Same Lab, Different Answers
DeepSeek-V3 carries no licence field in its API metadata at all. There is no tag to misread, which is worse than a confusing one: anything checking cardData.license gets silence. The repo ships two licence files instead, a LICENSE-CODE covering the inference code under MIT and a separate LICENSE-MODEL holding the custom DeepSeek License Agreement that governs the weights. DeepSeek-R1, checked separately, reports mit and ships a single MIT LICENSE. One lab, two releases, and only one is MIT for the weights.
Gemma 3 and Gemma 4 Are Not the Same Licence
Gemma 3 and Gemma 3n report license: "gemma" with gated: "manual", placing them under the Gemma Terms of Use, which require a Notice file, carry use restrictions into “Model Derivatives” including distillation, and incorporate a Prohibited Use Policy by reference. All five Gemma 4 sizes checked report apache-2.0 with gated: false. A licence-family change inside one product line, running in the permissive direction, is exactly where reasoning from the previous version gives a confident wrong answer.
Gating Is a Separate Axis From Licensing
gated: "manual" means an approval step stands between a reader and the weights, whatever the licence says. It is an access control, not a licence term, and the two axes move independently. Six repos above are gated: "manual", all in the Gemma 3/3n and Llama families. Any pipeline fetching weights unattended needs this field checked separately.
The Licence That Governs Is the One on the Component Deployed
InternVL3-78B is the clean case. Its README says the project is released under the MIT License. Its API metadata reports license: "other", license_name: "qwen", and a license_link pointing at Qwen2.5-72B-Instruct’s licence, because that model is the language backbone. The Qwen terms, including the 100M MAU threshold, govern the model as shipped.
The same shape appears outside weights. Piper’s maintained engine at OHF-Voice/piper1-gpl is GPL-3.0, while the original rhasspy/piper engine is archived and still MIT and the voice weights stay MIT-tagged. The engine relicensed; the voices did not. In translation, Argos Translate is dual licensed MIT or Creative Commons CC0 per its README, while LibreTranslate, the server wrapping it, is AGPL-3.0 (GitHub API, both fetched 16 August 2026). AGPL is a network copyleft reaching users who only receive an HTTP response, so a hosted endpoint carries source-availability obligations that embedding the library does not. More in the local translation model comparison.
Before Shipping
- Fetch
https://huggingface.co/api/models/<the-exact-repo>for the size and version being shipped; readlicense,license_name,license_linkandgated. - Treat any
gatedvalue other thanfalseas an approval step, however permissive the licence. - On
apache-2.0ormit, still list the repo’s files for a second licence document. - On a custom or
othertag, open the licence text and search for a user or revenue threshold, an attribution requirement, and any use policy incorporated by reference. - Before fine-tuning or distilling, find the licence’s definition of derivatives and check what carries forward.
- Check engine and weights separately when they ship as separate projects.
What This Means
The unit of a licence check is the repository being deployed, not the family name on the release blog. Three traps above are inference failures: assuming Qwen2.5 has one licence, assuming both DeepSeek releases match, assuming Gemma 4 inherits Gemma 3’s terms. The top-level license tag returns other for a non-commercial repo and a commercial one alike, nothing at all for one major release, and no signal about an approval gate.
The Bottom Line
Open weights is not an open licence, and the difference resolves per repository, not per family. Read license_name and gated, not just license, and open the licence file when the tag is custom or absent. Every value above was read on 16 August 2026 and licences change, so re-check the exact repo before shipping. None of this is legal advice; where a threshold sits close to the line, that licence text belongs in front of a lawyer.