GGUF vs GGML: what changed, and which one to use
GGML is the older llama.cpp model file format. GGUF replaced it on August 21, 2023, and existing GGML files stopped loading. Use GGUF today. The name GGML also lives on as the tensor library under llama.cpp, so one word is a library and the other is a file format. They are not rival formats.
I build Outlier, a Mac app that runs MLX-format models, so I have no stake in which of these two names you pick. I read the project pages behind this on 2026-11-02 and name each one below. If you are choosing between GGUF and Apple's MLX instead, that is a different question, and GGUF vs MLX answers it.
Why one word means two things
The confusion starts because GGML names two different things.
First, ggml is a library. Its README describes a tensor library for machine learning, written in plain C and C++ with no dependencies, under the MIT license. llama.cpp is built on top of it.
Second, GGML was the name of the first file format for models run by that library. The GGUF specification says GGUF succeeds three older formats. GGML was the unversioned baseline. GGMF added a version number. GGJT aligned the tensors so a file could be loaded with mmap. When someone says "a GGML model", they mean a file in one of those three.
What was wrong with the old files
The GGUF spec has a section on the history, and it is blunt about the problems.
- The header held a fixed list of hyperparameters that did not say which model architecture the file belonged to.
- The only way to add a new hyperparameter was to add it to the end of that list, which broke existing models.
- Each architecture needed its own conversion script.
- Keeping old files readable took tricks, such as packing the quantization version into the ftype field.
The spec's conclusion is that one well-documented format that every executor supports beats bending an old format to fit.
What GGUF changed
| GGML, GGMF, GGJT | GGUF | |
|---|---|---|
| First four bytes | lmgg, fmgg, tjgg as the llama.cpp converter reads them | GGUF |
| Header | A fixed hyperparameter list | Magic, version, tensor count and a count of key-value metadata pairs |
| Architecture | Not identified by the hyperparameter structure | A general.architecture key in the metadata |
| Adding information | Append to the end of the list and risk breaking old models | Add a key; extensibility is a design goal, so new information should not break existing models |
| Vocabulary | Embedded as a list of strings, each with its length in front | Described by tokenizer keys in the same key-value metadata |
| mmap | Added in GGJT through tensor alignment | A design goal; the file is padded to an alignment boundary |
| Versions | GGML unversioned, GGMF v1, GGJT v1 to v3 | v1; v2 widened counts from uint32 to uint64; v3 added big-endian support (little-endian is the default) |
The date the old files stopped loading
The change was pull request #2398 in llama.cpp, titled "GGUF". Georgi Gerganov opened it on July 26, 2023, and it merged on August 21, 2023. Its description calls it a breaking change: all existing ggml models would no longer be compatible after the merge. To get a working file you reconverted from the original model data, such as Meta's PTH files or a Hugging Face checkpoint, with the repo's convert script.
So a tutorial from before late August 2023 that says "download the GGML file" describes files llama.cpp stopped loading when that change merged.
One thing predates the switch. The k-quant types, Q2_K through Q6_K, merged into llama.cpp on June 5, 2023 in pull request #1684, by Iwan Kawrakow, about two and a half months before GGUF. The Q4_K and Q6_K names you see on GGUF downloads today were not invented for GGUF. The format changed and the quantization types carried over.
How to tell which one you have
Read the first four bytes. A GGUF file starts with the letters GGUF. The older formats start with other tags, and the llama.cpp converter checks for three of them: lmgg for GGML, fmgg for GGMF and tjgg for GGJT. On a Mac, head -c 4 yourfile prints them. A .gguf suffix is a good sign, but the four bytes are the real check.
If you still have an old GGML file
llama.cpp ships a converter, convert_llama_ggml_to_gguf.py. Its description is "Convert GGML models to GGUF", and its input option asks for a GGMLv3 file. It also warns that the conversion is best-effort, that special tokens may not convert correctly, and that you should use a native GGUF model if possible.
I would take that advice. Download a GGUF build of the same model instead. I did not run the script for this page, so I can't tell you how a particular old file will come out.
Where the name ggml still shows up
whisper.cpp. Its models README describes its model files as being in a custom ggml format, with names like ggml-base.en.bin, and the page does not mention GGUF. A file with ggml in its name is not always an old language model. It may be a speech-to-text model for whisper.cpp.
The ggml-org name. llama.cpp and ggml both live under ggml-org on GitHub. Hugging Face's GGUF page points to a Space named ggml-org/gguf-my-repo that converts and quantizes your own model weights into GGUF. The word ggml in a project name is about the library, not the old files.
Which one to use
For a language model, use GGUF. Hugging Face's GGUF page lists llama.cpp, LM Studio, GPT4All and Ollama as tools that use GGUF files. If a guide tells you to fetch a GGML file, treat the guide as out of date and look for a GGUF build.
Once you are on GGUF, the format name stops mattering and the quantization name takes over. A Q4_K file and a Q6_K file are both GGUF, and the quant sets the trade between size and quality. 4-bit vs 8-bit quantization covers that trade.
On a Mac, GGUF is one of two practical choices. The other is Apple's MLX, which is a different kind of thing from GGUF. GGUF vs MLX explains how, and How much RAM do you need for local AI? helps you size the model once you have picked one.
Want the packaged version instead?
On-device on Apple silicon: no account, no caps, nothing uploaded. Free tier is Nano 4B and Lite 9B. No web search, no image generation, Mac only.
Free: Nano + Lite. Pro: $49 once; Black Friday price, all of November: $24.50 once, until 30 November. macOS 15+. Refund window: 30 days, no questions asked.
Download free (276 MB) Buy ProOn your phone?