Which Open Models You Can Actually Use Commercially

Open weights is not an open licence. Verified Hugging Face licence tags for 46 model repos, and the size and version traps that block shipping.

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 reportedgatedPractical restriction
google/gemma-4-12B-it, -26B-A4B-it, -31B-it, -E4B-it, -E2B-itapache-2.0 (all five checked)falseStandard Apache-2.0 terms.
google/gemma-3-27b-it, google/gemma-3n-E4B-itgemmamanualNotice 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 tagmanual700M monthly-active-user threshold, “Built with Llama” attribution.
meta-llama/Llama-4-Scout-17B-16E-Instructother (tag llama4)manual700M MAU threshold, Acceptable Use Policy by reference, derivatives named starting “Llama”.
meta-llama/Llama-3.2-11B-Vision-Instructllama3.2manualSame 700M MAU threshold and attribution.
mistralai/Mistral-7B-Instruct-v0.3, Mistral-Small-24B-Instruct-2501apache-2.0falseStandard Apache-2.0 terms.
Qwen/Qwen2.5-3B-Instructother, license_name: qwen-researchfalseNon-commercial only. Any commercial use needs a separate licence; no threshold exists.
Qwen/Qwen2.5-7B-Instruct, -14B-Instruct, -32B-Instructapache-2.0falseStandard Apache-2.0 terms.
Qwen/Qwen2.5-72B-Instruct, Qwen/Qwen2.5-VL-72B-Instructother, license_name: qwenfalseCommercial use below 100M MAU; “Built with Qwen” on fine-tunes.
Qwen/Qwen3-32B, Qwen/Qwen2.5-Coder-32B-Instructapache-2.0falseStandard Apache-2.0 terms.
deepseek-ai/DeepSeek-V3no licence field presentfalseShips LICENSE-CODE (MIT, code) and LICENSE-MODEL (custom, use-restricted, governs weights).
deepseek-ai/DeepSeek-R1mitfalseSingle MIT LICENSE, no separate model licence.
deepseek-ai/deepseek-coder-33b-instructotherfalseDeepSeek License Agreement, Attachment A use restrictions.
microsoft/phi-4mitfalseStandard MIT terms.
bigcode/starcoder2-15bbigcode-openrail-mfalse14 prohibited-use categories binding fine-tunes; BigCode states it is not open source.
codellama/CodeLlama-34b-Instruct-hf, llava-hf/llava-1.5-7b-hfllama2falseLlama 2 community terms, with that era’s MAU and attribution obligations.
OpenGVLab/InternVL3-78Bother, license_name: qwenfalseREADME claims MIT; license_link routes to Qwen2.5-72B’s licence, which governs.
openai/whisper-large-v3apache-2.0falseStandard Apache-2.0 terms.
openai/whisper-large-v3-turbo, distil-whisper/distil-large-v3mitfalseStandard MIT terms. Turbo differs from large-v3 above.
nvidia/parakeet-tdt-1.1bcc-by-4.0falseCommercial use with attribution on redistribution.
nvidia/canary-1bcc-by-nc-4.0falseNon-commercial only, whatever the gated status.
rhasspy/piper-voicesmitfalseVoice weights MIT; the engine is licensed separately, see below.
coqui/XTTS-v2otherfalseNon-commercial only, and its outputs may not train models for commercial use.
hexgrad/Kokoro-82Mapache-2.0falseStandard Apache-2.0 terms. Top-level tag only, no secondary-file check.
suno/bark, microsoft/speecht5_tts, microsoft/Florence-2-largemitfalseStandard MIT terms. Top-level tag only, no secondary-file check.
BAAI/bge-large-en-v1.5, intfloat/e5-large-v2mitfalseStandard 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-v1apache-2.0falseStandard 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

  1. Fetch https://huggingface.co/api/models/<the-exact-repo> for the size and version being shipped; read license, license_name, license_link and gated.
  2. Treat any gated value other than false as an approval step, however permissive the licence.
  3. On apache-2.0 or mit, still list the repo’s files for a second licence document.
  4. On a custom or other tag, open the licence text and search for a user or revenue threshold, an attribution requirement, and any use policy incorporated by reference.
  5. Before fine-tuning or distilling, find the licence’s definition of derivatives and check what carries forward.
  6. 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.