LLM model size calculator
Two repos wear the same 7B label and ship different files. Size a checkpoint from the count its repo actually stores.
Built by Michael Lip · verified 6 August 2026
Size a checkpoint
Pick a repo and a format. Stored formats multiply the census count by that repo's own dtype width, and the GGUF options report a measured file size where one exists.
Runs entirely in your browser. Nothing you type is sent anywhere.
What eleven repos actually store
The census counts 7,248,023,552 stored parameters in mistralai/Mistral-7B-Instruct-v0.3 and 7,217,189,760 in tiiuae/falcon-7b. Neither is seven billion.
Every row below is the Hub tensor census, with the dtype it reports for that repo. The last two columns come from the exact count, so you can see how far the friendly label sits from the file.
| Repo | Stored parameters | dtype | Rounds to | Stored size |
|---|---|---|---|---|
microsoft/phi-2 | 2,779,683,840 | F16 | 2.8B | 5.18 GiB |
microsoft/Phi-3.5-mini-instruct | 3,821,079,552 | BF16 | 3.8B | 7.12 GiB |
Qwen/Qwen3-4B | 4,022,468,096 | BF16 | 4.0B | 7.49 GiB |
Qwen/Qwen3-8B | 8,190,735,360 | BF16 | 8.2B | 15.26 GiB |
Qwen/Qwen3-14B | 14,768,307,200 | BF16 | 14.8B | 27.51 GiB |
Qwen/Qwen3-32B | 32,762,123,264 | BF16 | 32.8B | 61.02 GiB |
mistralai/Mistral-7B-Instruct-v0.3 | 7,248,023,552 | BF16 | 7.2B | 13.50 GiB |
tiiuae/falcon-7b | 7,217,189,760 | BF16 | 7.2B | 13.44 GiB |
Qwen/Qwen2.5-7B-Instruct | 7,615,616,512 | BF16 | 7.6B | 14.19 GiB |
Qwen/Qwen3-30B-A3B (MoE) | 30,532,122,624 | BF16 | 30.5B | 56.87 GiB |
allenai/OLMoE-1B-7B-0924 (MoE) | 6,919,161,856 | BF16 | 6.9B | 12.89 GiB |
Where the card and the census disagree
Microsoft's card for phi-2 calls it a Transformer with 2.7 billion parameters (model card). The census counts 2,779,683,840 stored weights, all in F16.
Round that the way the card rounds and you land a tenth of a billion higher. The two do not agree. Both stay on this page, because picking one and quietly dropping the other is how a reader ends up short on disk.
Qwen3-8B goes the other way. Its card gives 8.2B (model card) and the census count of 8,190,735,360 rounds to the same figure. That card also reports a non-embedding count below the census total, so the token embedding and the output head carry the rest.
Mixture-of-experts repos need a second look. The card for Qwen3-30B-A3B gives 30.5B total and 3.3B activated per token (model card), while the census counts 30,532,122,624 stored parameters.
What you download tracks the stored count, not the activated slice. And allenai/OLMoE-1B-7B-0924 stores 6,919,161,856 parameters, closer to the second number in its name than the first.
Measured GGUF builds beat nominal bit widths
A GGUF file encodes the tensors plus a standardized set of metadata (Hub docs). Safetensors stores tensors with zero-copy loading (safetensors docs). So a GGUF download carries more than the weights.
Hugging Face documents Q4_K as 4-bit quantization whose super-blocks also store a block scale and a block minimum, "resulting in 4.5 bits-per-weight" rather than 4 (Hub docs).
The k-quants pull request adds that the Q4_K_M mixture keeps half of the attention.wv and feed_forward.w2 tensors at Q6_K (pull request).
Divide a measured file by its census parameter count and the effective width lands above the nominal one every time. The last column prints that division.
| Repo | Build | File size in bytes | On disk | Effective bits per weight |
|---|---|---|---|---|
Qwen2.5-7B-Instruct | Q4_K_M | 4,683,074,240 | 4.36 GiB | 4.919 |
Qwen2.5-7B-Instruct | Q5_K_M | 5,444,831,936 | 5.07 GiB | 5.720 |
Qwen2.5-7B-Instruct | Q6_K | 6,254,199,488 | 5.82 GiB | 6.570 |
Qwen2.5-7B-Instruct | Q8_0 | 8,098,525,888 | 7.54 GiB | 8.507 |
Phi-3.5-mini-instruct | Q4_K_M | 2,393,232,672 | 2.23 GiB | 5.011 |
Phi-3.5-mini-instruct | Q5_K_M | 2,815,276,320 | 2.62 GiB | 5.894 |
Phi-3.5-mini-instruct | Q6_K | 3,135,853,344 | 2.92 GiB | 6.565 |
Phi-3.5-mini-instruct | Q8_0 | 4,061,222,688 | 3.78 GiB | 8.503 |
Mistral-7B-Instruct-v0.3 | Q4_K_M | 4,372,812,000 | 4.07 GiB | 4.826 |
Mistral-7B-Instruct-v0.3 | Q5_K_M | 5,136,175,328 | 4.78 GiB | 5.669 |
Mistral-7B-Instruct-v0.3 | Q6_K | 5,947,248,864 | 5.54 GiB | 6.564 |
Mistral-7B-Instruct-v0.3 | Q8_0 | 7,702,565,088 | 7.17 GiB | 8.502 |
Q8_0 is 8-bit round-to-nearest with a per-block scale, listed as a legacy method (Hub docs). Its measured rows still sit above eight bits per weight.
Weights only, and what sits on top
Every figure here sizes the weights. A model in service also holds a KV cache that grows with context length and batch size, the activations for whatever is in flight, and whatever the framework, CUDA build and driver reserve.
So a checkpoint whose weights fit your card can still run out of memory on the first long prompt. That is why the calculator above has no accelerator-memory box and no headroom column.
Weights alone cannot answer that, and a number that pretends otherwise is worse than none. For the rest of the budget, use the GPU memory calculator.
Doing it yourself in Python
The census is one request away and the arithmetic is a multiplication.
import requests
url = "https://huggingface.co/api/models/Qwen/Qwen2.5-7B-Instruct?expand[]=safetensors"
sf = requests.get(url, timeout=30).json()["safetensors"]
stored = sf["total"] # parameters the repo actually stores
bytes_per_param = 2 # BF16, per the repo's own config.json
print(stored, stored * bytes_per_param)
How we measured this
Primary source for every parameter count is the Hugging Face Hub tensor census, the safetensors expansion of the model API, which reports the stored tensor count per dtype.
Quantized sizes come from the recursive file listing of the bartowski GGUF repo for each model. A row is the size of a file you can download, not a prediction of one. Figures were verified on 6 August 2026.
The cross-check runs through the repo's own files. The shard index for Qwen2.5-7B-Instruct declares a metadata.total_size, and its config.json declares torch_dtype bfloat16, two bytes per stored parameter.
Multiply the census count by two and the index total is what you get.
Model cards give the second check for phi-2, Qwen3-8B and Qwen3-30B-A3B. Where a card and the census differ, both figures stay on the page.
Derived figures come from those inputs. Gibibytes from the byte count. Effective bits per weight from measured bytes divided by the census parameter count. No value on this page was typed from memory.
I maintain the shape calculators on heytensor.com, which compute output shapes in the browser and never send an architecture, an error string or a parameter to a server. Same rule here.
The model list, the census counts and the GGUF sizes ship with the page, and the arithmetic happens on your machine.
Questions people actually ask
Does parameter count times two bytes give the download size?
For a BF16 checkpoint it lines up. Qwen2.5-7B-Instruct declares torch_dtype bfloat16, and its shard index total_size is what the census count times two reproduces. A full clone still pulls tokenizer files, the index and the README on top of the tensors.
Why is a Q4_K_M file bigger than four bits per weight?
Hugging Face puts Q4_K at "resulting in 4.5 bits-per-weight" (Hub docs), and the k-quants pull request keeps half of the attention.wv and feed_forward.w2 tensors at Q6_K (pull request). The measured builds land above both. The calculator divides measured bytes by the census count so you see the real width.
Do mixture-of-experts models download smaller because only some experts run?
No. The census counts 30,532,122,624 stored parameters for Qwen3-30B-A3B, and the card puts it at 30.5B total with 3.3B activated per token (model card). Disk holds the stored count. Activation describes what runs per token.
Will this tell me whether a model fits my GPU?
No. Weights are one line of the budget, and the KV cache, activations and framework overhead sit on top, so a weights-only headroom number is the quickest route to an out-of-memory error. The GPU memory calculator covers the rest.
Before you trust these numbers
All calculations are deterministic math running in your browser and do not constitute model performance guarantees.
Every figure states the dtype it was measured or computed in. Do not assume float32 unless the page says so.
GPU memory estimates are approximations. Actual VRAM usage depends on framework version, CUDA version, and driver overhead.