RigPerDollar

What local AI models can the Apple M5 Pro 48GB run?

79 of our 115 models, up to Recursive Flint 40B-A2.5B. That is the largest current model that fits the M5 Pro 48GB's 48 GB (~36 usable) at Q4_1 with room for its full 256K context, at about 90 tok/s estimate.

Memory48 GB unified LPDDR~36 GB usable by the GPU by default (why)source
Bandwidth307 GB/ssource
Models that fit79 of 115
PriceNo price yet

Memory type: unified LPDDR (source) · Released: 2026

Specs from first-party pages (Apple), accessed 2026-10-18. Speeds use the Apple (Metal) constants (how).

Every model, largest that fits first

ModelQuantFileFits?Speed estimateMax context estimate
Recursive Flint 40B-A2.5BQ4_125.99 GBFits~90 tok/s256K (full)
NVIDIA Nemotron 3.5 Lightning 30B-A3BQ4_K_M25.48 GBFits~61 tok/s256K (full)
K2-Horizon-MoVA-36B-A4BQ4_K_M22.37 GBFits~72 tok/s62K · 118K (8-bit)
Qwen3.6-35B-A3BQ4_K_M22.29 GBFits~70 tok/sllama.cpp-style estimateMLX (measured, community): 106.2 tok/s at 4K (M5 Pro 20c)With speculative decoding (MTP/DFlash): 55.7 tok/s at 16K (M5 Pro 16c)GPU cores differ between runs (M5 Pro 16c / M5 Pro 20c); listed here by chip and memory.256K (full)
Qwen3.5-35B-A3BQ4_K_M22.29 GBFits~70 tok/s256K (full)
NVIDIA Nemotron 3.5 Bolt 74B-A9B 24GB (2-bit)native 2-bit22.02 GBFits~58 tok/s256K (full)
MiniCPM-V 4.7 35B-A3BQ4_K_M21.17 GBFits~71 tok/s256K (full)
K2-Horizon-32BQ4_K_M21.08 GBFits~13 tok/s51K · 97K (8-bit)
Nanbeige4.3-33BQ4_K_M20.79 GBFits~13 tok/s65K · 122K (8-bit)
Xing4.0-29B-A4BQ4_K_M20.06 GBFits~69 tok/s256K (full)
Raon-1 mini preview Early supportQ4_K_M19.69 GBWeights fit context unknown~55 tok/sUnknown (no KV data)
PLaMo 3 Translate 31B Translation onlyQ4_K_M19.53 GBFits~14 tok/s32K (full)
Meta Muse Glimmer 30BQ4_K_M18.39 GBFits~14 tok/s128K (full)
Gemma 4 31BQ4_K_M18.32 GBFits~15 tok/sllama.cpp-style estimateMLX (measured, community), with speculative decoding (MTP/DFlash): 23.8–36.9 tok/s at 1K–8K (M5 Pro 20c)183K · 256K (8-bit)
GLM-4.7-FlashQ4_K_M18.31 GBFits~87 tok/s198K (full)
Qwen3.6-27BQ4_K_M17.98 GBFits~14 tok/s253K · 256K (8-bit)
Qwen3.5-27BQ4_K_M17.98 GBFits~14 tok/s253K · 256K (8-bit)
IBM Granite 4.2 30BQ4_K_M17.72 GBFits~15 tok/s64K · 121K (8-bit)
Microsoft Fara1.5 27BQ4_K_M17.53 GBFits~15 tok/s256K (full)
Qwen3.8-27BQ4_K_M17.44 GBFits~15 tok/sllama.cpp-style estimateMLX (measured, community): 19.0 tok/s at 1K (M5 Pro 20c)With speculative decoding (MTP/DFlash): 18.8–18.9 tok/s at 1K–4K (M5 Pro 20c)GPU cores differ between runs (M5 Pro 16c / M5 Pro 20c); listed here by chip and memory.256K (full)
Gemma 4 26B A4BQ4_K_M17.04 GBFits~70 tok/s256K (full)
Kvark Sparkle 1.1 27BQ4_K_M16.81 GBFits~15 tok/s256K (full)
LFM2.5-24B-A2BQ4_K_M14.53 GBFits~84 tok/s128K (full)
Mistral-Small-3.2-24B-Instruct-2506Q4_K_M14.33 GBFits~18 tok/s123K · 128K (8-bit)
Devstral-Small-2505Q4_K_M14.33 GBFits~18 tok/s123K · 128K (8-bit)
gpt-oss-20bQ4_K_M11.67 GBFits~80 tok/sllama.cpp-style estimateMLX (measured, community): 84.2–84.3 tok/s (runs 1, 2) at 1K (M5 Pro 16c)128K (full)
phi-4Q4_K_M9.05 GBFits~29 tok/s16K (full)
JetBrains Mellum2.1 12B-A2.5B ThinkingQ4_K_M8.07 GBFits~89 tok/s128K (full)
Gemma 4 12BQ4_K_M7.12 GBFits~36 tok/s256K (full)
NVIDIA Nemotron 3.5 Bolt E4BQ4_K_M6.18 GBFits~41 tok/s64K (full)
Qwen3.5-9BQ4_K_M6.17 GBFits~37 tok/s256K (full)
Ternary Bonsai 2 27BPTQ1_0 ternary5.95 GBFits~38 tok/s256K (full)
Microsoft Fara1.5 9BQ4_K_M5.91 GBFits~39 tok/s256K (full)
Xiaomi MiMo-V2.6-Distill-Qwen-9BQ4_K_M5.84 GBFits~39 tok/s256K (full)
ZoomGain-9BQ4_K_M5.63 GBFits~40 tok/s256K (full)
K2-Horizon-7BQ4_K_M5.59 GBFits~45 tok/s194K · 366K (8-bit)
webAI TwIL-8B Math and code reasoningQ4_K_M5.35 GBFits~47 tok/s128K (full)
IBM Granite 4.2 8BQ4_K_M5.35 GBFits~47 tok/s128K (full)
PLaMo 3 Translate 8B Translation onlyQ4_K_M5.28 GBFits~47 tok/s32K (full)
LFM2.5-8B-A1BQ4_K_M5.16 GBFits~92 tok/s128K (full)
Gemma 4 E4BQ4_K_M4.98 GBFits~50 tok/s128K (full)
Spark-X2.6-4BQ4_K_M3.54 GBFits~67 tok/s830K · 1M (8-bit)
Gemma 4 E2BQ4_K_M3.46 GBFits~69 tok/s128K (full)
Qwen3.5-4BQ4_K_M3.01 GBFits~65 tok/s256K (full)
NVIDIA Nemotron 3 Nano 4BQ4_K_M2.9 GBFits~67 tok/s256K (full)
Microsoft Fara1.5 4BQ4_K_M2.88 GBFits~67 tok/s256K (full)
ZoomGain-4BQ4_K_M2.71 GBFits~70 tok/s256K (full)
IBM Granite 4.2 3BQ4_K_M2.24 GBFits~99 tok/s128K (full)
Raon-1 nano Early supportQ4_K_M2.08 GBWeights fit context unknown~84 tok/sUnknown (no KV data)
Ternary Bonsai 2 9BPTQ1_0 ternary2 GBFits~86 tok/s256K (full)
PLaMo 3 Translate 2B Translation onlyQ4_K_M1.81 GBFits~117 tok/s32K (full)
LFM3-1.7BQ4_K_M1.1 GBFits~120 tok/s256K (full)
LFM3-VL-2BQ4_K_M1.1 GBFits~120 tok/s128K (full)
Ternary Bonsai 2 4BPTQ1_0 ternary0.95 GBFits~129 tok/s256K (full)
MiniCPM-V 4.7 1BQ4_K_M0.67 GBFits~148 tok/s256K (full)
PLaMo 3 Translate 0.8B Translation onlyQ4_K_M0.57 GBFits~251 tok/s32K (full)
BotPsy-0.8BQ4_K_M0.53 GBFits~160 tok/s256K (full)
Ternary Bonsai 2 2BPTQ1_0 ternary0.43 GBFits~170 tok/s256K (full)
Qwen2.5-Coder-32B-Instruct OlderQ4_K_M19.85 GBFits~13 tok/s32K (full)
DeepSeek-R1-Distill-Qwen-32B OlderQ4_K_M19.85 GBFits~13 tok/s56K · 106K (8-bit)
Qwen3-32B OlderQ4_K_M19.76 GBFits~13 tok/s40K (full)
Qwen3-30B-A3B OlderQ4_K_M18.63 GBFits~80 tok/s40K (full)
Qwen3-Coder-30B-A3B-Instruct OlderQ4_K_M18.56 GBFits~80 tok/s163K · 256K (8-bit)
gemma-3-27b-it OlderQ4_K_M16.55 GBFits~16 tok/s128K (full)
LFM2-24B-A2B OlderQ4_K_M14.42 GBFits~84 tok/s128K (full)
Qwen3-14B OlderQ4_K_M9 GBFits~29 tok/s40K (full)
Qwen2.5-Coder-14B-Instruct OlderQ4_K_M8.99 GBFits~29 tok/s32K (full)
DeepSeek-R1-Distill-Qwen-14B OlderQ4_K_M8.99 GBFits~29 tok/s128K (full)
Mistral-Nemo-Instruct-2407 OlderQ4_K_M7.48 GBFits~34 tok/s128K (full)
gemma-3-12b-it OlderQ4_K_M7.3 GBFits~35 tok/s128K (full)
NVIDIA-Nemotron-Nano-9B-v2 OlderQ4_K_M6.53 GBFits~35 tok/s128K (full)
Qwen3-8B OlderQ4_K_M5.03 GBFits~49 tok/s40K (full)
Llama-3.1-8B-Instruct OlderQ4_K_M4.92 GBFits~50 tok/s128K (full)
Qwen2.5-Coder-7B-Instruct OlderQ4_K_M4.68 GBFits~53 tok/s32K (full)
Mistral-7B-Instruct-v0.3 OlderQ4_K_M4.37 GBFits~56 tok/s32K (full)
Qwen3-4B OlderQ4_K_M2.5 GBFits~90 tok/s40K (full)
gemma-3-4b-it OlderQ4_K_M2.49 GBFits~91 tok/s128K (full)
Llama-3.2-3B-Instruct OlderQ4_K_M2.02 GBFits~108 tok/s128K (full)
Qwen3-0.6B OlderQ4_K_M0.48 GBFits~273 tok/s40K (full)
Ripple-65B PreviewQ4_K_M38.8 GBNo——
Llama-3.3-70B-Instruct OlderQ4_K_M42.52 GBNo——
DeepSeek-R1-Distill-Llama-70B OlderQ4_K_M42.52 GBNo——
Qwen2.5-72B-Instruct OlderQ4_K_M47.42 GBNo——
Qwen3-Coder-NextQ4_K_M48.53 GBNo——
Aleph Alpha Kolibri-1 78B-A3.5BQ4_K_M49.76 GBNo——
NVIDIA Nemotron 3.5 Bolt 74B-A9BUD-Q4_K_XL50.22 GBNo——
gpt-oss-120bQ4_K_M62.84 GBNo——
NVIDIA Nemotron 3.5 Super VL 120B-A12BQ4_K_M70.1 GBNo——
Mistral Small 4 119BQ4_K_M72.64 GBNo——
GLM-4.5-Air OlderQ4_K_M73.5 GBNo——
Qwen3.5-122B-A10BQ4_K_M77.62 GBNo——
Mistral Medium 3.5 128BQ4_K_M78.41 GBNo——
Ornith-1.5-122BQ4_K_M78.92 GBNo——
NVIDIA Nemotron 3 Super 120B-A12B OlderUD-Q4_K_M82.54 GBNo——
Swift 1.5 Qwen3.8-Flash-NextQ4_K_M119.6 GBNo——
Qwen3.8-Flash-NextQ4_K_M119.6 GBNo——
StepFun Step 3.7 FlashUD-Q4_K_M122.09 GBNo——
Qwen3-235B-A22BQ4_K_M142.15 GBNo——
MiniMax-M3.1-Flash Unsloth 2-bitUD-Q2_K_XL143.91 GBNo——
DeepSeek-V4-FlashUD-Q4_K_XL155.1 GBNo——
MiniMax-M3.1-Flash Q2_KQ2_K155.91 GBNo——
Thinking Machines Inkling-Small OlderQ4_K_M159.34 GBNo——
Xiaomi MiMo-V2.6-Flash 309B-A15BMXFP4167.37 GBNo——
GLM-5.3-FlashUD-Q4_K_XL199.71 GBNo——
MiniMax-M3.1-FlashQ4_K_M258.01 GBNo——
Reflection Beam 1.0 501B-A23BQ4_K_M302.41 GBNo——
Thinking Machines Inkling 2 Small Early supportUD-Q4_K_XL354.15 GBNo——
inclusionAI Ling-3.1-flash 560B-A25BQ4_K_M357.97 GBNo——
DeepSeek-V4.1-Flash (1017)UD-Q4_K_XL500.71 GBNo——
Meta Muse Spark Open 816B-A42BUD-Q4_K_XL505.5 GBNo——
Mistral Large 4UD-Q4_K_XL605 GBNo——

Q4_K_M unless the row says otherwise; UD- sizes are unsloth dynamic quants, the only Q4 build published for those models. Max context is an estimate of the longest context whose KV cache fits beside the model: default FP16 cache, then 8-bit (q8_0).

Measured on this Mac with MLX (community)

MLX (measured, community): decode speeds people ran with MLX through oMLX and submitted to its public leaderboard. They are kept apart from this site's llama.cpp-style estimate, which is for a GGUF file in llama.cpp and is unchanged. The plain figure has no speculative decoding, at the shortest context the run used; runs with speculative decoding (MTP/DFlash) are shown separately, as a range, because their speed depends on how many drafted tokens are accepted, which varies with the prompt.

Modelllama.cpp-style estimateMLX plain decodeWith speculative decoding (MTP/DFlash)Long context, one run
Qwen3.8-27BGPU cores differ between runs (M5 Pro 16c / M5 Pro 20c); listed here by chip and memory.~15 tok/s19.0 tok/s at 1K (M5 Pro 20c)18.8–18.9 tok/s at 1K–4K (M5 Pro 20c)4K 14.3 → 64K 13.1 tok/s; prefill 396–591 tok/s (M5 Pro 16c)
Gemma 4 31B~15 tok/s—23.8–36.9 tok/s at 1K–8K (M5 Pro 20c)1K 25.5 → 8K 36.9 tok/s; prefill 360–380 tok/s (M5 Pro 20c, speculative run)
gpt-oss-20b~80 tok/s84.2–84.3 tok/s (runs 1, 2) at 1K (M5 Pro 16c)—1K 84.3 → 128K 24.8 tok/s; prefill 1143–2530 tok/s (M5 Pro 16c)
Qwen3.6-35B-A3BGPU cores differ between runs (M5 Pro 16c / M5 Pro 20c); listed here by chip and memory.~70 tok/s106.2 tok/s at 4K (M5 Pro 20c)55.7 tok/s at 16K (M5 Pro 16c)4K 106.2 → 16K 94.5 tok/s; prefill 1508–2975 tok/s (M5 Pro 20c)

Long context: decode at the shortest and longest context of one run, and that run's prompt-processing (prefill) range. Agent jobs re-read long prompts, so prefill (prompt processing) speed matters as much as decode there. Community-submitted to oMLX, accessed 2026-10-26; each figure links its run(s). MLX 4-bit files, not the GGUF the estimate uses. About the MLX data

Speed calculator

estimate

Estimate = bandwidth ÷ GB read per token (the model's listed GGUF file: Q4_K_M for most models, otherwise the quant named in the list; scaled by active/total parameters for MoE), scaled by a per-platform efficiency and fixed per-token costs calibrated to 45 measured llama.cpp benchmarks (2025–26). Fit = file size + 1.5 GB headroom ≤ total VRAM (on Macs, the part of unified memory macOS lets the GPU use by default), and room for at least 4K tokens of context with an 8-bit KV cache. For a model with no KV cache data, only the file and headroom are checked, so a fit says nothing about context. Multi-GPU: VRAM adds, speed stays one card's (a layer split runs the cards in turn); max context uses the total. Speed is for short context. Max context = what is left after the file and a 1 GB runtime reserve ÷ KV cache bytes per token, default FP16 and 8-bit (q8_0) cache. How speed works · how context works