As of September 2026, Qwen 3 14B still runs on any base Apple M4 Mac with 16GB or more of unified memory, but expect roughly 11–13 tokens per second, not more. The Q4_K_M file is 9.0GB (Qwen's official GGUF repository), and the M4's 120GB/s memory bandwidth (Apple) puts the decode ceiling at about 13.3 tok/s. The closest public measurement is the same-size Qwen 2.5 14B at Q4_K_M, which runs at 12 tok/s on a 24GB M4 under Ollama. If you want something newer that runs faster on the same Mac, Qwen3.5-35B-A3B is a mixture-of-experts model with only 3B parameters active per token, and it was measured at 17.3 tok/s on a 16GB Mac mini M4. This guide covers the three install paths (Ollama, llama.cpp, MLX), the bandwidth maths, and when to pick Qwen 3 8B (faster), Qwen 3 32B (smarter, but it needs M4 Pro) or a 2026 Qwen release instead.
What you'll need
Any base Apple M4 Mac with 16GB or more of unified memory: the 2024 MacBook Pro 14" M4, 2024 Mac mini M4, 2025 MacBook Air 13"/15" M4 or 2024 iMac M4. Per the official Apple M4 Pro/Max announcement, the base M4 supports up to 32GB of unified memory at 120GB/s of bandwidth. The M4 Pro offers 273GB/s and the M4 Max up to 546GB/s.
Disk: about 10GB for the Q4 GGUF, plus ~8.3GB for the MLX 4-bit conversion if you want it.
Qwen 3 was released on April 29, 2025 by Alibaba's Qwen team under Apache 2.0. The 14B dense variant has a hybrid thinking mode that you can toggle per turn with /think and /no_think tags, per the Qwen3 blog. It is no longer the newest Qwen: the Qwen3.5 family (February 2026), Qwen3.6 (April 2026) and Qwen3.8-27B (August 2026) have shipped since (see "What's changed as of September 2026" below). Model card: Qwen3 GitHub repo.
Install: Ollama, the 5-minute path
Ollama's qwen3:14b tag is still current as of September 2026. It pulls Q4_K_M by default (9.3GB on disk).
To control thinking over the API, set "think": false (or true) on a /api/chat or /api/generate request, per Ollama's thinking docs. In the interactive CLI, add /no_think to a message to skip the <think> block for that turn.
Ollama 0.19 introduced an MLX-powered engine for Apple Silicon, but Ollama's announcement says the preview needs a Mac with more than 32GB of unified memory. Every base M4 tops out at 32GB, so it stays on the llama.cpp-based engine.
Install: llama.cpp, when you want every knob
Two commands have changed since this guide was first written. First, Hugging Face's CLI is now hf (huggingface_hub CLI guide), so use hf download instead of huggingface-cli download. Second, llama.cpp's flash-attention flag now takes a value, -fa on|off|auto. Metal is on by default on macOS builds. -c 8192 gives an 8K window. The model supports much longer contexts, but a 16GB Mac runs out of memory long before that. Cap context at about 16K on a 16GB Mac and 32K on a 24GB Mac.
Install: MLX, the Apple-native path
The mlx_lm.generate entry point is unchanged in the current mlx-lm README. The mlx-community 4-bit conversion is 8.3GB, so its bandwidth ceiling on a base M4 is about 14.4 tok/s, only slightly above the GGUF's.
The MLX speed-up depends on architecture. On dense models the gap is small: Hiesch's M3 Max benchmarks put dense 27–32B models at about 17 t/s under llama.cpp versus 18–20 t/s under mlx-lm. On newer MoE and hybrid-attention architectures the gap can be large. The same source measured Qwen3.5-35B-A3B at 58 t/s under llama.cpp versus 95 t/s under mlx-lm. llama.cpp issue #19366 reports roughly 24 t/s (llama.cpp) versus 60 t/s (MLX) for Qwen3-Coder-Next on an M4 Pro. For dense Qwen 3 14B, expect MLX to be modestly faster, not twice as fast.
Inside a Python project, MLX is the natural choice. For the Ollama HTTP API or cross-platform code, stay on llama.cpp.
Real-world numbers on base M4
No public base-M4 measurement of Qwen 3 14B itself could be verified, so the table pairs its bandwidth ceiling (120 GB/s ÷ file size) with measured rows for same-size models on the same chip. Real decode lands at roughly 80–95% of the ceiling.
| Model and quant | Weight file | Mac | Runtime | Decode tok/s | Ceiling | Source |
|---|---|---|---|---|---|---|
| Qwen 3 14B Q4_K_M | 9.0GB | any base M4 | — | ~11–12 expected | 13.3 | ceiling from file size |
| Qwen 2.5 14B Q4_K_M (same size class) | 9.0GB | M4, 24GB | Ollama | 12 (measured) | 13.4 | kunalganglani.com |
| Qwen 3 8B Q4_K_M | 5.0GB | Mac mini M4, 32GB | llama.cpp b10929 | 19.7 empty ctx / 16.1 at 8K | 23.9 | VettedConsumer |
| Llama 3.1 8B Q4_K_M | 4.9GB | M4, 16GB | Ollama | 23 (measured) | 24.4 | kunalganglani.com |
For comparison, the same source measured an M4 Pro 24GB at 34 tok/s on Llama 3.1 8B, against 23 on the base M4. On Qwen 3 14B, the M4 Pro's 273GB/s raises the ceiling to about 30 tok/s. That makes it roughly a 2x upgrade, not a 20% one.
For broader context, the Mac Studio M4 Max at 546GB/s has a ~60 tok/s ceiling on this 9GB file. For a discrete GPU, an RTX 4090 desktop was measured at 92 tok/s on Qwen 2.5 14B Q4_K_M in llama.cpp.
What's changed as of September 2026
Three newer Qwen releases fit a base M4. Each row is a public, measured decode figure on a base M4; file sizes are from the linked Hugging Face repos.
| Model (released) | Quant / file size | Mac | Runtime | Decode tok/s | Ceiling at 120GB/s | Source |
|---|---|---|---|---|---|---|
| Qwen3.5-35B-A3B (Feb 2026, MoE, 3B active) | UD-IQ3_XXS, 13.1GB | Mac mini M4, 16GB | llama.cpp, --n-gpu-layers 0 --mmap | 17.3 | ~107 (active bytes ≈ 1.1GB) | jock.pl |
| Qwen3.5-9B (Feb 2026, dense) | Q4_K_M via Ollama qwen3.5:9b (5.7GB text weights, 6.6GB tag) | Mac mini M4, 16GB | Ollama | 12.6 | ~21 | jock.pl |
| Qwen3.8-27B (Aug 2026, dense) | UD-Q3_K_XL, 13.1GB | M4, 24GB | llama.cpp b10450 | 5.8 at 32K ctx / 6.0 at 8K | ~9.1 | qwen38-mtp Apple sweep |
What this means in practice:
- Qwen3.5-35B-A3B is the speed pick on 16–24GB. Only about 3B of its 35B parameters are read per token, so it outruns the dense 14B. The 16GB run above used the CPU with mmap. The 13.1GB file plus KV cache is tight on 16GB and comfortable on 24GB.
- Qwen3.5-9B is the smaller, newer option. Its ceiling (~21 tok/s) is well above Qwen 3 14B's. The one public figure (12.6 tok/s) came from a busy automation box, so treat it as a floor.
- Qwen3.8-27B fits a 24GB M4 only at a 3-bit quant, and it is slow. The ~6 tok/s above is usable for batch work, not for chat. Its Q4_K_M file is 16.5GB, which suits 32GB M4s or an M4 Pro.
- Qwen3.6-35B-A3B (April 2026) has a 22.1GB UD-Q4_K_M file (Unsloth GGUF), so it needs the 32GB M4; no verified base-M4 measurement exists yet, so it has no row.
Why throughput tops out near 13 tok/s on M4 base
Decoder LLM inference at batch size 1 is bandwidth-bound: every generated token reads every weight once. Qwen 3 14B at Q4_K_M is 9.0GB, so the theoretical maximum on a base M4 is 120 / 9.0 ≈ 13.3 tok/s. No runtime can beat that for a dense model (MLX's smaller 4-bit file allows ~14.4). Measured Macs typically land at 80–95% of the ceiling: the Qwen 2.5 14B row above is at about 90%, and the Qwen 3 8B row at about 82%. Long contexts cost more, because the KV cache is also read on every token. VettedConsumer measured Qwen 3 8B dropping from 19.7 to 16.1 tok/s at 8K tokens of context on a Mac mini M4. The wall is the chip's bandwidth, which is also why MoE models with few active parameters now beat dense 14B models on the same hardware.
Picking a quantization
File sizes below are from Qwen's GGUF repo (Q3_K_M from Unsloth's GGUF repo). The ceilings are 120GB/s divided by file size.
| Quant | File size | Notes | M4 base ceiling (tok/s) |
|---|---|---|---|
| Q3_K_M | 7.3GB | Noticeable loss on hard reasoning. Use only if memory-starved | 16.4 |
| Q4_K_M | 9.0GB | Ollama default. The right trade-off for most users | 13.3 |
| Q5_K_M | 10.5GB | Small quality gain, ~15% slower | 11.4 |
| Q6_K | 12.1GB | Close to lossless. 24GB+ only | 9.9 |
| Q8_0 | 15.7GB | Near-reference quality. 24GB is tight, 32GB comfortable | 7.6 |
Q4_K_M is the right default. On a 24GB Mac you can step up to Q6_K and still leave around 10GB for macOS and apps, at a ~25% speed cost.
Common pitfalls
Pitfall #1: A 16GB Mac with Slack, Chrome and Xcode running. The model needs about 10–11GB at runtime (9.0GB of weights plus KV cache and Metal scratch), leaving roughly 5GB for macOS and apps. Close Docker, heavy browsers and big IDEs, or upgrade to 24GB.
Pitfall #2: Thinking mode eating your context and time. Qwen 3's <think> blocks often run to thousands of tokens before the final answer. At ~12 tok/s on a base M4, 2,000 thinking tokens is close to three minutes of waiting. For interactive coding, turn thinking off (/no_think, or "think": false over the Ollama API). Keep it on for research and analysis tasks where you want to inspect the reasoning trace.
Pitfall #3: Unofficial Ollama tags. Community-uploaded Qwen 3 tags can lag behind chat-template and tokenizer fixes. Use the official qwen3:14b tag, or a GGUF straight from Qwen's repo.
Pitfall #4: Battery throttling. Apple Silicon laptops can reduce sustained GPU performance on battery or under thermal load, and the fanless MacBook Air throttles first. Plug in for any sustained inference work.
Pitfall #5: Context length explosion. The KV cache grows linearly with context, and past a few tens of thousands of tokens it adds several gigabytes on top of the 9.0GB of weights, pushing a 16GB Mac into swap. Cap context at 8K–16K on 16GB, 32K on 24GB, and 64K on an M4 Pro with 48GB.
When NOT to run Qwen 3 14B on M4 base
Four cases where you should pick differently:
- You want more than 15 tok/s for interactive coding. The base M4 cannot get there with a dense 14B model. Drop to Qwen 3 8B (19.7 tok/s measured on a Mac mini M4), switch to the Qwen3.5-35B-A3B MoE (17.3 tok/s, see above), or upgrade to an M4 Pro.
- You need 32B-class reasoning. Qwen 3 32B is meaningfully better on coding and tool use, but it needs an M4 Pro with 48GB+; see run Qwen 3 32B on M4. On a 24GB base M4, Qwen3.8-27B at 3-bit is the only current dense option in that class, at about 6 tok/s.
- Server-class throughput. Single-user use is fine, but batched multi-user serving is poor on a base M4. A used RTX 3090 24GB rig has 936GB/s of bandwidth, nearly 8x the M4's.
- You're starting fresh in late 2026. Newer Qwen releases (above) are either faster on the same memory (35B-A3B) or smaller (3.5-9B). Try them before committing to a 17-month-old model.
Worked example: research assistant on Mac mini M4
A Mac mini M4 with 24GB makes a capable always-on research bot:
Based on the measurements above, expect about 11–12 tok/s on Q4 with short contexts, dropping somewhat on long documents as the KV cache grows. A 16GB Mac mini M4 runs this way as a daily headless automation box, with its heavy tier on the faster Qwen3.5-35B-A3B MoE.
Setup cost is the Mac plus $0 in software and $0 a month in API fees.
Worked example: enabling thinking mode for a math problem
At ~12 tok/s on a base M4, 1,800 thinking tokens take about 2.5 minutes. That is acceptable for a non-trivial word problem, but it is why thinking should be off for chat. In exchange, your work stays private and offline.
Verdict
Qwen 3 14B on a 16GB or 24GB M4 Mac is still a solid, well-understood local-LLM setup in September 2026: a capable 14B reasoning model at 11–13 tok/s with no fan noise or discrete-GPU power draw. It is no longer the best-value choice, though. On the same Mac, Qwen3.5-35B-A3B decodes faster (3B active parameters) and Qwen3.5-9B is lighter.
If you need more headroom (32B-class reasoning, 64K context, batched serving), upgrade to an M4 Pro running Qwen 3 32B or step over to an NVIDIA build with an RTX 4090. If ~12 tok/s on Q4_K_M is enough, and for most chat, RAG and coding-assist workloads it is, the base M4 is the cheapest Apple Silicon that gets the job done.
How the numbers in this article were sourced
Every tok/s figure links to the public page that reports it. Where no public base-M4 measurement exists (Qwen 3 14B itself), the article gives the bandwidth ceiling (120 GB/s ÷ Hugging Face file size) and a labelled same-size proxy. MoE ceilings use active-parameter bytes (file size × active ÷ total parameters). Figures labelled "estimated" by aggregator sites were excluded. Treat the numbers as a planning range.
Citations and sources
- https://huggingface.co/Qwen/Qwen3-14B-GGUF
- https://huggingface.co/unsloth/Qwen3-14B-GGUF
- https://huggingface.co/mlx-community/Qwen3-14B-4bit
- https://ollama.com/library/qwen3:14b
- https://docs.ollama.com/capabilities/thinking
- https://ollama.com/blog/mlx
- https://www.apple.com/newsroom/2024/10/apple-introduces-m4-pro-and-m4-max/
- https://en.wikipedia.org/wiki/Apple_M4
- https://qwenlm.github.io/blog/qwen3/
- https://github.com/QwenLM/qwen3
- https://huggingface.co/docs/huggingface_hub/guides/cli
- https://github.com/ml-explore/mlx-lm
- https://hiesch.eu/blog/llamacpp-benchmarks-speculative-decoding/
- https://github.com/ggml-org/llama.cpp/issues/19366
- https://www.kunalganglani.com/llm-benchmarks
- https://vettedconsumer.com/mac-mini-m4-32gb-first-party-benchmark-qwen3-llama-cpp/
- https://thoughts.jock.pl/p/local-llm-35b-mac-mini-gemma-swap-production-2026
- https://github.com/sudoingX/qwen38-mtp/blob/master/sweeps/apple-silicon.md
- https://huggingface.co/unsloth/Qwen3.5-35B-A3B-GGUF
- https://huggingface.co/Qwen/Qwen3.5-9B
- https://huggingface.co/unsloth/Qwen3.8-27B-GGUF
- https://huggingface.co/unsloth/Qwen3.6-35B-A3B-GGUF
- https://ollama.com/library/qwen3.8
- https://github.com/ml-explore/mlx-swift
This piece is editorial synthesis based on publicly available information. No independent first-party benchmarking is reported.
