Thinking Models in Ollama: Turn Reasoning On, Off, or to a Level
Note: Some future links on this site may be affiliate links. We never claim hands-on testing; guides are researched from the public sources listed in each article.
How we wrote this: A summary of Ollama's official Thinking documentation (linked below), checked October 29, 2026. Thinking controls vary by model and Ollama version, so check what your model reports before relying on a setting.
Some open models "think" before they answer: they write out intermediate reasoning, then give a final reply. Ollama's Thinking documentation says thinking-capable models "emit a thinking field that separates their reasoning trace from the final answer." That separation lets you show the reasoning, log it, or hide it and keep only the answer.
Why you might turn it on, or off
- On: harder questions such as multi-step math, planning or tricky instructions, and when you want to see how the model got to its answer.
- Off (where allowed): quick lookups, short rewrites and chat where speed matters. Reasoning adds tokens, and tokens take time on local hardware.
- Lower level: some models offer named levels, so you can trade quality against speed.
Step 1: Find a thinking model
Ollama keeps a list of thinking models in its library. The docs' examples use qwen3, deepseek-r1 and gpt-oss. New to Ollama? Our beginner walkthrough covers installing and pulling a model.
Step 2: Check what the model supports
The docs stress that "thinking controls vary by model." Ask Ollama with /api/show:
curl http://localhost:11434/api/show -d '{"model": "gpt-oss"}'
The reply includes a thinking object, for example:
"thinking": { "values": ["low", "medium", "high"], "default": "medium" }
How to read it, per the docs:
| What you see | What it means |
|---|---|
values contains true/false |
An on/off control |
values contains strings like "low", "high" |
Named levels you can choose |
values: [false] |
The model doesn't support thinking |
default |
What Ollama uses when you don't set think |
No thinking object |
No thinking metadata; the model may still reason on its own |
Step 3: Set think in your request
Add think to a chat or generate request:
true: request thinking outputfalse: request no thinking output, if the model permits itnull: use the model's default- a string: one of the levels from
thinking.values, spelled exactly. The docs note numbers aren't supported, and unsupported names fall back to the model default.
Example from the docs:
curl http://localhost:11434/api/chat -d '{
"model": "qwen3",
"messages": [{"role": "user", "content": "How many letter r are in strawberry?"}],
"think": true,
"stream": false
}'
Step 4: Read the two fields
The reasoning and the answer come back separately:
- Chat returns
message.thinkingandmessage.content. - Generate returns
thinkingandresponse.
When streaming, the docs explain that reasoning tokens arrive before answer tokens. A simple interface can show a "Thinking…" section while thinking chunks arrive, then switch to the answer once content starts.
Practical tips
- Don't show raw reasoning to customers by default. It can be long, repetitive or wrong in places even when the final answer is right. Log it for debugging; show the answer.
- Budget for context. Reasoning text can add a lot of tokens. If long sessions slow down or lose earlier details, see our guide to Ollama context length.
- Combine with tools carefully. The docs' tool calling examples turn thinking on, and when streaming you pass
thinking,contentandtool_callsback together in the follow-up request. - Measure on your own machine. If answers feel slow, compare the same prompt with thinking on and off.