DeepSeek for Translation: Where It Works and Where It Breaks
Since October 2026 our site translations run on the DeepSeek API. The failures we hit, the checks that catch them, estimated costs, and when to use a file tool.

DeepSeek is a cheap, capable translator for long text, especially through its API. Its weak points are not the ones most reviews test. In our experience the problem is rarely a clumsy sentence. It is output that looks finished but isn't: a dropped bold word, a code sample that got translated, a character from the wrong script, or a sentence repeated to satisfy a correction. None of these show up when you paste one paragraph into a chat. All of them show up when you translate a whole document.
We know this because DeepSeek translates this site. In October 2026 we switched the pipeline that produces our localized articles (27 languages) and interface text from another model to the DeepSeek API, and every new or repaired translation since then has come from it. Below is what broke in the first runs, the checks we added, what a book-length job would cost at current API prices, and where DeepSeek stops being the right tool.
Facts about DeepSeek's models, prices, and policies come from DeepSeek's own documentation, checked on 2026-10-13. DeepSeek changes models and prices often, so check the links before you rely on a number.
What DeepSeek Offers for Translation
There are two ways to use it, and they suit different jobs.
| Surface | How you give it a document | Limits that matter | What comes back |
|---|---|---|---|
| DeepSeek chat (web and mobile apps) | Paste text or attach a file | DeepSeek's API documentation does not state a file-size limit for the chat apps, and third-party reports disagree. Split large files | Chat text |
DeepSeek API (deepseek-flash) | Send text in your own requests | 1M-token context and up to 384K output tokens per response (models and pricing). deepseek-flash currently serves DeepSeek-V4.1-Flash | Text, or JSON if you ask for it |
DeepSeek API (deepseek-v4-pro) | Same | Same context and output limits, at about 3 to 4.5 times the Flash price, and no image input | Same |
Neither surface returns a translated EPUB, DOCX, or PDF. You get text, and rebuilding the file is your job.
Five Failures We Hit in DeepSeek's First Runs
Our pipeline sends each paragraph, heading, or table cell as one unit, in batches, and asks for JSON back. Every answer is checked, and a localized file is written only if all checks pass. In DeepSeek's first full run on our blog, most jobs passed, and most of the rejections were mechanical rather than bad translation. These are the ones that taught us something.
1. Formatting disappeared while the words stayed right
In an Arabic article, the translation was fine but the bold on not was gone, so the sentence lost its emphasis. In a Dutch article, one bold phrase came back split into two. Nothing about these reads as wrong unless you compare the markup with the source.
The fix: after translation, each paragraph is parsed again and must contain the same links, bold phrases, inline code, and images as the English, in any order, since other languages reorder words.
What this means for you: if formatting carries meaning in your document, such as bold warnings, links, or footnote markers, count them in the source and in the translation.
2. Things that should never be translated were translated
A Malay article had an inline code sample, [door slams], from a subtitle example. DeepSeek translated it. In a Burmese article, a quoted Japanese full stop 。 in a code span became the Burmese full stop ။. Both are reasonable for prose and wrong for a literal example.
The fix: inline code must come back exactly as it was sent.
What this means for you: tell the model which strings are literal, such as code, file names, product names, and quoted examples, and check them afterward.
3. Words came back in the wrong script
DeepSeek put a Bengali word inside a Hindi sentence, and Sinhala characters inside a Burmese one. Hindi and Bengali are close neighbors. Sinhala and Burmese are not, which is a reminder that you can't predict where this happens. A spot check misses it if you don't read the target language.
The fix: every request names the target language and its writing system, not just a code (ours reads like "Twi (locale code tw, written in the Latin alphabet)"). A script check then rejects any output containing characters from a script that language doesn't use.
What this means for you: write "Translate into Brazilian Portuguese", not "translate to pt". If you can't read the target language, at least check that the script is right.
4. Retries repeated the mistake, or "fixed" it badly
When a check rejected an answer, a retry at temperature 0 returned the same wrong answer word for word, including the Bengali word in Hindi. A low temperature makes output repeatable, and that includes the error. A vague rejection message did no better. And once, asked to restore a missing bold phrase, DeepSeek added a bolded copy of the whole sentence after the original. The bold was back, and the sentence now appeared twice.
The fix: the retry prompt names exactly what is missing or unexpected, such as "missing inline code 。", later attempts use temperature 0.4, and a final check rejects sentences the English doesn't repeat.
A related trap: DeepSeek's thinking mode is on by default, and in thinking mode temperature has no effect (thinking mode). We turn thinking off for translation with "thinking": {"type": "disabled"}, which also cuts latency.
5. The JSON was valid but the keys weren't
We send numbered units such as body:0059 and ask for the same keys back. Sometimes DeepSeek returned every translated value in the right order but renamed a key to plain body, or added a key we never sent. The JSON parsed. A naive script would have dropped or misplaced a paragraph.
The fix: renamed keys are matched back by position only when every other key is in its expected place, and extra keys are ignored.
What this means for you: if you script translations, check that every unit you sent came back under its own ID before you assemble the document.
One lesson predates DeepSeek. Our pipeline used to split sentences at every link and bold phrase, and the model we used before DeepSeek kept returning empty fragments such as " for reading", because in the target language their meaning had moved into the neighboring piece. Any model will do this. Never send half a sentence. If you are chunking a book, cut at paragraph boundaries.
A Checklist for Translating a Long Document With DeepSeek
Use this whether you work in the chat app or write a script against the API:
- Chunk at paragraph or section boundaries. Never split a sentence. Keep each request small enough that the translated output fits well under the output limit.
- Put the glossary in every request. Names, invented terms, and fixed translations go at the top of each chunk. A model only sees the request in front of it.
- Name the language and script in words, plus the register you want (formal, casual, literary).
- Ask for structured output if you script it. With the API, set
response_formatto{"type": "json_object"}, include the word "json" in the prompt, and show the exact shape you expect (JSON output). - Treat empty, truncated, or unparseable answers as failures. A response that hits
max_tokensjust stops, so checkfinish_reason, and DeepSeek notes that JSON mode "may occasionally return empty content" (JSON output). Retry instead of saving either. - When a retry fails the same way, change something: say what was wrong, and raise the temperature in non-thinking mode.
- Check every chunk mechanically before you read it: nothing empty, no wrong-script characters, the same number of links, numbers, and headings as the source.
- Then review the meaning. Mechanical checks catch broken output, not mistranslation. For anything that will be published, a fluent reader still needs to check names, numbers, and tone. Our terminology consistency guide covers how to keep terms stable across chapters.
What a Book Costs on the DeepSeek API
The API is cheap enough that cost rarely decides the question. Here is a rough estimate for a 100,000-word English book translated with deepseek-flash at peak prices: $0.30 per million input tokens (cache miss) and $1.20 per million output tokens (pricing).
| Assumption | Tokens (approx.) | Peak cost |
|---|---|---|
| English source, about 1.3 tokens per word | 130,000 input | $0.04 |
| Prompts and glossary repeated across 50 chunks | 50,000 input | $0.02 |
| Translated output, assumed 2x the source | 260,000 output | $0.31 |
| Total, before retries | ≈ $0.37 |
Off-peak rates are half of that. Token ratios vary a lot by language, so treat this as an order of magnitude, not a quote. The real cost of an API translation is your time: writing the chunking, the checks, and the code that rebuilds a usable file.
Check Privacy Before You Upload
DeepSeek's privacy policy (last updated February 10, 2026) says the company collects, processes, and stores personal data "in People's Republic of China", and lists training and improving its models as a use of what you submit. It also lists a right to opt out of training, which you exercise by emailing DeepSeek rather than through an in-app setting (DeepSeek privacy policy).
For contracts, unpublished manuscripts, or client files, decide this before uploading anything. DeepSeek's model weights can also be run by other providers or on your own hardware, where these terms don't apply, but then you need to check that provider's terms instead. The document translation privacy checklist lists the questions to ask any tool, including ours.
When DeepSeek Is the Right Tool, and When It Isn't
| What you need at the end | DeepSeek | Better route |
|---|---|---|
| Understand a foreign-language article or chapter | Good fit in the chat app | DeepSeek is enough |
| Translate many short texts or UI strings in a script | Very good fit through the API, with the checks above | DeepSeek API |
| Translated text for one chapter or a short document | Good fit if you chunk by paragraph and review | DeepSeek |
| A whole book back as a translated EPUB, DOCX, or PDF | Possible only if you build the chunking, checks, and file rebuilding yourself | A file-level workflow such as the EPUB translator or PDF translator |
| A confidential document | Depends on whether its privacy terms work for you | Check the terms first, for DeepSeek and for any alternative |
Which model translates your language pair best is a separate question. Our best LLM for translation guide explains how to test that yourself. If you are deciding between chat tools, the ChatGPT, Claude, and Gemini guides cover the same questions for each.
DeepSeek is the right tool when you can see and fix every failure: a passage you will read closely, or a pipeline where you control the checks. It is the wrong main tool when you want a complete translated file without building that pipeline. That is the work BookTranslator does. You upload the PDF, EPUB, DOCX, or other supported file, it translates the whole document with context and a consistent glossary, and you get a translated file back, plus a bilingual version where the format supports it. For scanned PDFs, OCR mode rebuilds a clean translated PDF from the recognized content rather than copying the original page layout exactly. You see the price before checkout, so you can upload the file and decide from there. Whichever tool you use, keep a human review for anything important.
Related Posts





