Best local LLMs for MacBook Pro 14/16 M5 Max 128GB
MacBook Pro 14/16 — M5 Max (40-core GPU) 128GB. Memory-fit math with KV cache, speeds labelled by how they were obtained, and commands you can paste.
Best for Coding · 16k context
| Model | Quant | Fit | Memory | Speed (generation) |
|---|---|---|---|---|
| GLM-4.5-Air | Q5_K_M | fits fully | 86.6 GB | ~41 tok/s estimated |
| Gemma 4 31B | Q6_K | fits fully | 27.4 GB | ~20 tok/s scaled from measured src |
| Qwen3.6 27B | Q8_0 | fits fully | 29.8 GB | ~17 tok/s scaled from measured src |
| gpt-oss 120B | Q8_0 | fits fully | 64.0 GB | ~135 tok/s estimated |
| Qwen3-Coder 30B-A3B | Q8_0 | fits fully | 34.1 GB | ~65 tok/s scaled from measured src |
llama-server -hf unsloth/GLM-4.5-Air-GGUF:Q5_K_M -c 16384 -fa on --jinja -ngl 99
OLLAMA_CONTEXT_LENGTH=16384 ollama run hf.co/unsloth/GLM-4.5-Air-GGUF:Q5_K_M
Best for Chat / general · 16k context
| Model | Quant | Fit | Memory | Speed (generation) |
|---|---|---|---|---|
| GLM-4.5-Air | Q5_K_M | fits fully | 86.6 GB | ~41 tok/s estimated |
| Gemma 4 31B | Q6_K | fits fully | 27.4 GB | ~20 tok/s scaled from measured src |
| Qwen3.6 27B | Q8_0 | fits fully | 29.8 GB | ~17 tok/s scaled from measured src |
| gpt-oss 120B | Q8_0 | fits fully | 64.0 GB | ~135 tok/s estimated |
| Mistral Small 3.2 24B | Q8_0 | fits fully | 27.7 GB | ~20 tok/s scaled from measured src |
llama-server -hf unsloth/GLM-4.5-Air-GGUF:Q5_K_M -c 16384 -fa on --jinja -ngl 99
OLLAMA_CONTEXT_LENGTH=16384 ollama run hf.co/unsloth/GLM-4.5-Air-GGUF:Q5_K_M
Best for Vision · 16k context
| Model | Quant | Fit | Memory | Speed (generation) |
|---|---|---|---|---|
| Gemma 4 31B | Q6_K | fits fully | 27.4 GB | ~20 tok/s scaled from measured src |
| Qwen3.6 27B | Q8_0 | fits fully | 29.8 GB | ~17 tok/s scaled from measured src |
| Mistral Small 3.2 24B | Q8_0 | fits fully | 27.7 GB | ~20 tok/s scaled from measured src |
| Gemma 4 12B | Q8_0 | fits fully | 13.7 GB | ~36 tok/s scaled from measured src |
| Qwen3.6 35B-A3B | Q8_0 | fits fully | 37.3 GB | ~71 tok/s measured src |
llama-server -hf unsloth/gemma-4-31B-it-GGUF:Q6_K -c 16384 -fa on --jinja -ngl 99
OLLAMA_CONTEXT_LENGTH=16384 ollama run hf.co/unsloth/gemma-4-31B-it-GGUF:Q6_K
All 13 models that fit, fastest first · 16k context
Click a column header to sort. 10 of 13 speeds here are measured or scaled from measured; the rest are bandwidth estimates. Filter by use case, speed source, fit, license and more in the interactive advisor →
| Model | Params | Quant | Fit | Memory | Tok/s | Source |
|---|---|---|---|---|---|---|
| gpt-oss 20B | 20.91B MoE | Q8_0 | fits fully | 12.5 GB | ~180 | estimated |
| gpt-oss 120B | 116.83B MoE | Q8_0 | fits fully | 64.0 GB | ~135 | estimated |
| Qwen3.5 4B | 4.66B | Q8_0 | fits fully | 5.1 GB | ~102 | scaled from measured |
| Qwen3.6 35B-A3B | 35.95B MoE | Q8_0 | fits fully | 37.3 GB | ~71 | measured |
| Qwen3-Coder 30B-A3B | 30.53B MoE | Q8_0 | fits fully | 34.1 GB | ~65 | scaled from measured |
| Gemma 4 26B-A4B | 25.81B MoE | Q8_0 | fits fully | 27.9 GB | ~57 | scaled from measured |
| GLM-4.5-Air | 110.47B MoE | Q5_K_M | fits fully | 86.6 GB | ~41 | estimated |
| Qwen3-VL 8B | 8.77B | Q8_0 | fits fully | 11.1 GB | ~41 | scaled from measured |
| Qwen3.5 9B | 9.65B | Q8_0 | fits fully | 10.1 GB | ~37 | scaled from measured |
| Gemma 4 12B | 11.96B | Q8_0 | fits fully | 13.7 GB | ~36 | scaled from measured |
| Mistral Small 3.2 24B | 24.01B | Q8_0 | fits fully | 27.7 GB | ~20 | scaled from measured |
| Gemma 4 31B | 31.27B | Q6_K | fits fully | 27.4 GB | ~20 | scaled from measured |
| Qwen3.6 27B | 27.78B | Q8_0 | fits fully | 29.8 GB | ~17 | scaled from measured |
Long context on this hardware · up to 1M tokens
Largest context whose KV cache still fits next to the weights (same placement as the 16k result, KV types f16 / q8_0 / q4_0). Models are capped at their verified maximum; extended means beyond the native maximum using YaRN, only listed where the model card documents it. Long context needs flash attention (-fa on, already in the commands) and a lot of memory; a quantized KV cache saves memory but can cost accuracy. Speed at depth is an estimate (penalty fitted to measured depth runs up to 128k).
Try it in the advisor: 128k · 256k · 512k · 1M
| Model | Native max | Max ctx f16 | Max ctx q8_0 | Max ctx q4_0 | Est. tok/s at max f16 ctx |
|---|---|---|---|---|---|
| Qwen3.5 4B Q8_0 | 256k | 1M extended | 1M extended | 1M extended | ~16 estimated |
| Qwen3.6 35B-A3B Q8_0 | 256k | 1M extended | 1M extended | 1M extended | ~12 estimated |
| Qwen3.5 9B Q8_0 | 256k | 1M extended | 1M extended | 1M extended | ~11 estimated |
| Qwen3-Coder 30B-A3B Q8_0 | 256k | 512k extended | 1M extended | 1M extended | ~6 estimated |
| Qwen3-VL 8B Q8_0 | 256k | 512k extended | 1M extended | 1M extended | ~6 estimated |
| Qwen3.6 27B Q8_0 | 256k | 512k extended | 1M extended | 1M extended | ~9 estimated |
| Gemma 4 26B-A4B Q8_0 | 256k | 256k | 256k | 256k | ~28 estimated |
| Gemma 4 12B Q8_0 | 256k | 256k | 256k | 256k | ~29 estimated |
| Gemma 4 31B Q6_K | 256k | 256k | 256k | 256k | ~12 estimated |
| gpt-oss 20B Q8_0 | 128k | 128k | 128k | 128k | ~85 estimated |
| gpt-oss 120B Q8_0 | 128k | 128k | 128k | 128k | ~60 estimated |
| Mistral Small 3.2 24B Q8_0 | 128k | 128k | 128k | 128k | ~12 estimated |
| GLM-4.5-Air Q5_K_M | 128k | 16k | 32k | 64k | ~33 estimated |
Open the interactive advisor with this hardware →
Speeds marked measured are medians of real runs (short-context generation) from these sources; scaled from measured means a measurement of a same-size or same-model-different-quant run, scaled by bytes read; estimated comes from memory bandwidth (spec source: https://support.apple.com/en-us/128107) × an efficiency factor of 0.78 calibrated to measured runs on this hardware. 8 measured data points on file for this hardware · submit your benchmark. Memory size on this page is an example configuration; check what your machine has. Model data last verified 2026-10-14. Ranking = fits and fast enough first, then larger; not a quality benchmark.
Page generated 2026-10-16 by tools/generate_pages.js