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.contentfield - 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.