Every fine-tune comes with fine print.
FinePrint walks every ancestor model and training dataset of any Hugging Face model and tells you what you agree to when you ship it.
Replace huggingface.co with this site's domain in any model URL to open its report.
The model page shows one hop. The terms come from every hop.
A Hugging Face model page lists its direct parents. License terms travel further than that: through fine-tunes, adapters, quantized builds and merges, back to the original release.
What the model page shows.
What FinePrint shows.
What the whole Hub looks like.
Counted in FalkorDB over all 3,161,594 public models on Hugging Face, Oct 18 2026.
models declare a permissive license while inheriting restricted terms.
Only 346 of these ship a license file.
declare a permissive license while an ancestor's license is non-commercial, with 2.85M downloads in 30 days.
downloads in the last 30 days of the 48,975 models above.
of them (54%) carry the tags Unsloth's model card template writes, which include license: apache-2.0 whatever the base model is.
FLUX.1-dev family models would still be labelled non-commercial if FLUX.1-dev were relicensed as Apache-2.0, because LoRAs and fine-tunes declare its license themselves.
Saved run on a throwaway GRAPH.COPY of the family (whatif:flux1-dev-apache): copy in 718 ms, walks in 370 ms.
Every descendant of meta-llama/Llama-3.1-8B: 21,653 Hub API calls, or one graph query.
21,639 descendants at a median 0.61 s per Hub call, against the median graph query time.
Running PageRank and the relicensing query on the graph.
Every ancestor, in one query.
FinePrint keeps Hub lineage in a FalkorDB graph. A report walks finetunes, adapters, quantized builds, merges and training datasets back to the original license, and lists every path a term takes.
Reads what the Hub tags leave out.
DeepSeek-R1-Distill-Llama-8B declares MIT and names no base model, so the graph alone says UNKNOWN. Its card says it is derived from Llama 3.1 8B. The card reader quotes that sentence, resolves it to meta-llama/Llama-3.1-8B, and the verdict becomes CLOUDED.
In a manual check, 41 of 48 lineage edges it proposed were correct. It finds datasets too: the LeoScorpius Alpaca GGUF card names tatsu-lab/alpaca, which is CC BY-NC.
A decision for the use you have in mind.
Each report ends in ALLOW, CONDITIONS or BLOCK, for commercial or non-commercial use, with a one-line reason and the clause text behind it.
ifmylove2011/girlslike is a FLUX.1 [dev] LoRA that declares apache-2.0. Its base model's license is non-commercial.
Checks before the weights download.
The same answers are available to code. An MCP server gives a coding agent a check_model tool, fineprint check fails CI with exit 1 on a BLOCK model, and fineprint.guard() checks every Hugging Face download first.
Pick a model and read its fine print.
Pick a model.
These are real models on the Hub. Each one loads a live report.
Or search any public model.
kenpath/svara-tts-v1
Questions people ask.
Is this legal advice?
No. FinePrint shows what the licenses upstream of a model say, with the clause text and a link to the source. Whether a term applies to you depends on your use and where you are, which is a question for a lawyer.
Where does the data come from?
Lineage and licenses come from Hugging Face Hub metadata: the cfahlgren1/hub-stats daily dump (Apache-2.0), loaded into FalkorDB, plus live Hub lookups for models the dump does not have. Clause text comes from each license's own published text, linked on every clause.
What does UNKNOWN mean?
FinePrint could not reach a finding. The model may not be on the Hub, may have been deleted, may name no base model, or may use a license that is not in the library yet. The decision then reads Review first, and the model should be treated as unchecked.
How does the card reader work, and how accurate is it?
It reads the model card text, picks out the base models and datasets the card names, quotes the sentence for each, and matches every name against the graph. Names it cannot match are listed as not in graph. In a manual check, 41 of 48 edges it proposed were correct.
How do I use it in CI?
Run fineprint check in your pipeline. It finds model ids in code and config files and exits 1 when any model is BLOCK for the use you set. The agent README has a GitHub Actions example and a pre-run hook.
What does the evaluation show?
We scored 120 models against gold labels sealed before any system ran. The strongest baseline is an LLM agent with live Hub API tools. On gold v2 it got 92 right and FinePrint 80, mostly because FinePrint answers UNKNOWN for the 29 models with no declared license. On v3, which treats no license as UNKNOWN, FinePrint leads 103 to 91.
Of 69 models with restricted upstream terms, the agent called 5 clean, all GGUF quantizations of merge trees. FinePrint called none clean. It found terms two or more hops up in 19 of 19 cases, the agent in 14. Median time per model: 9 ms against 11.5 s.
Check a model before you ship it. It takes one URL.
Or open a report directly: /kenpath/svara-tts-v1