DeepSeekReasoning ModelsAI Output

DeepSeek <think> Blocks Explained: What They Are and How to Remove Them

May 9, 2026·7 min read·Free tool

TL;DR

DeepSeek R1 shows its internal chain-of-thought reasoning inside <think>...</think> tags. These are hidden in the web UI but appear in full in raw API responses and many third-party apps. Paste into TextPurify to strip the entire block and keep only the final answer.

You pasted some text from DeepSeek and got 400 lines of XML before the actual answer. Or your copied text started with <think> and ended with </think> before the response you actually wanted. If you've run into this, you've just encountered DeepSeek's chain-of-thought reasoning block. You are not doing anything wrong — the model is simply showing you its work.

What Is a Reasoning Model?

DeepSeek R1 is a reasoning model. Unlike standard language models that generate a response directly from the prompt, reasoning models work through problems step by step before committing to an answer. This internal deliberation — called chain-of-thought reasoning — helps the model perform significantly better on complex tasks: multi-step math, logical analysis, code debugging, and structured argument building.

The trade-off is that reasoning models produce substantially more text than standard models. For a simple factual question, the reasoning block might be 50 words. For a complex analysis, it can exceed 2,000 words — all before the actual answer begins.

What the <think> Block Contains

Everything inside <think>...</think> is DeepSeek's internal working memory. It reads like a stream of consciousness — hypotheses the model is considering, steps it's taking, paths it's rejecting, and sub-problems it's solving. Here is a simplified example of what this looks like in raw output:

<think>
The question asks about the causes of the French Revolution. Let me think
through the key factors systematically.

Financial causes: France was effectively bankrupt by the 1780s. The costs
of the Seven Years War and support for the American Revolution drained the
treasury. The tax system was deeply regressive — nobles and clergy were
largely exempt, placing the burden on the Third Estate.

Social causes: The Three Estates system created enormous resentment. The
bourgeoisie had gained economic power but had no political representation.
Enlightenment ideas about natural rights and popular sovereignty were
spreading rapidly through the educated class.

Let me structure this response: causes → key events → outcomes.
</think>

The French Revolution (1789–1799) was driven by three intersecting crises...

The <think> block in that example is about 120 words. In practice, for complex analytical questions, it routinely runs 500 to 2,000 words — all before the answer you actually asked for.

When Does This Block Appear?

The <think> block is hidden in DeepSeek's official web interface at chat.deepseek.com. The interface collapses it into a "Thinking..." disclosure that most users never open. In the web UI, you're only seeing the final answer.

The block appears in full text when you:

  • Access DeepSeek via the API and read the raw message.content field
  • Use a third-party app, plugin, or integration that doesn't strip the reasoning output
  • Copy text using certain browser extensions or automation tools
  • Process raw DeepSeek responses in a workflow, script, or pipeline
  • Use DeepSeek through an LLM aggregator like OpenRouter, Together AI, or similar services where the reasoning block is returned as part of the message content

If you are a developer using the DeepSeek API directly, you will almost certainly encounter this. If you use the official web UI and copy responses normally, you usually won't — unless you copy from a code block or use a non-standard clipboard method.

The <reasoning> Variant

DeepSeek's API exposes a separate reasoning_content field in some configurations. When a third-party integration doesn't handle this field correctly, the reasoning content gets prepended to the main response wrapped in <reasoning>...</reasoning> tags instead of <think> tags. Some integrations use [THINKING]...[/THINKING] as an alternate wrapper.

TextPurify removes all four variants: <think>, <thinking> (used by Claude), <reasoning>, and [THINKING].

Why Reasoning Blocks Are a Problem for Publishing

The most common scenario: you are using DeepSeek to draft something — a report, a code explanation, an email summary — and you copy the response to paste elsewhere. If the raw reasoning block is included, you are pasting potentially 800 words of internal deliberation before the 200 words you actually wanted.

For publishing workflows, this is a serious error. A blog post that starts with DeepSeek's thought process instead of the content is unpublishable. For automated workflows that process DeepSeek output programmatically, the <think> block can break downstream parsers, corrupt structured data extraction, and produce garbage output in pipelines that expect clean text.

Even for personal use, reading through a 1,000-word reasoning block to find the 100-word answer wastes time. The answer is always at the end, after </think>.

How to Remove DeepSeek Think Blocks

Manual method: Find the <think> tag at the start of the output, scroll to the matching </think> tag, select everything between them (including both tags), and delete. For a 50-word block this takes seconds. For a 1,500-word block, it takes longer, and you risk accidentally deleting part of the answer that immediately follows.

Using TextPurify: Paste your DeepSeek text into the DeepSeek cleaner. The "Remove think blocks" option is enabled by default in the DeepSeek preset. Click Clean and the entire <think> section is removed. The final answer — everything after </think> — is kept exactly as DeepSeek wrote it. Nothing else is touched unless you enable additional cleaning options.

Should You Always Remove the Think Block?

For any content that goes to end users — yes. The reasoning block is intermediate process, not the answer. It is DeepSeek thinking out loud, not DeepSeek communicating with you.

There are specific cases where keeping it is useful. If you are debugging a model's reasoning process, evaluating whether its logic is sound, or studying how it approaches complex problems, the thinking block is valuable data. Some developers pipe it to a separate log for analysis while stripping it from user-facing output.

For everything else — publishing, summarizing, quoting, or pasting into a document — the think block should come out. It adds length, creates confusion, and makes the output look broken to anyone who receives it.

Zero-Width Characters in DeepSeek Output

DeepSeek R1 is also one of the most documented AI models for embedding zero-width Unicode characters in its output — characters that are invisible to the eye but present in the string. Security researchers have studied these as potential watermarks. They cause broken word counts, failed string matching, and encoding errors in downstream systems.

The DeepSeek preset in TextPurify has "Remove hidden characters" enabled by default alongside think block removal, so both issues are cleaned in one pass. For more on zero-width characters, see our guide on invisible Unicode in AI text.

Fix it in one click — free

Paste your DeepSeek text into TextPurify and strip all <think> and <reasoning> blocks in one click — leaving only the final answer.

Clean DeepSeek Output Free

Frequently Asked Questions

Does DeepSeek V3 also use think blocks?

DeepSeek V3 is the standard chat model and does not use chain-of-thought reasoning blocks by default. Think blocks appear in DeepSeek R1 output — the dedicated reasoning model. If you're using chat.deepseek.com and getting clean responses, you're likely using V3.

Will removing the think block delete the actual answer?

No. The <think> block always ends with </think> before the actual answer begins. TextPurify removes only the content between the opening and closing tags — the final answer, which comes after </think>, is always preserved.

What is the difference between <think> and <thinking>?

<think>...</think> is used by DeepSeek R1. <thinking>...</thinking> is used by Anthropic's Claude when extended thinking mode is enabled. TextPurify removes both, along with <reasoning>...</reasoning> and [THINKING]...[/THINKING] variants.

Can I disable think blocks from the DeepSeek API?

Yes — the DeepSeek API supports a reasoning_effort parameter that controls or disables the reasoning output. However, many third-party integrations don't expose this parameter, which is why cleaning the output after the fact is usually the more practical solution.