BookTranslator
BookTranslator

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.

BookTranslator

BookTranslator Team

10 min read

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.

SurfaceHow you give it a documentLimits that matterWhat comes back
DeepSeek chat (web and mobile apps)Paste text or attach a fileDeepSeek's API documentation does not state a file-size limit for the chat apps, and third-party reports disagree. Split large filesChat text
DeepSeek API (deepseek-flash)Send text in your own requests1M-token context and up to 384K output tokens per response (models and pricing). deepseek-flash currently serves DeepSeek-V4.1-FlashText, or JSON if you ask for it
DeepSeek API (deepseek-v4-pro)SameSame context and output limits, at about 3 to 4.5 times the Flash price, and no image inputSame

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:

  1. 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.
  2. 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.
  3. Name the language and script in words, plus the register you want (formal, casual, literary).
  4. Ask for structured output if you script it. With the API, set response_format to {"type": "json_object"}, include the word "json" in the prompt, and show the exact shape you expect (JSON output).
  5. Treat empty, truncated, or unparseable answers as failures. A response that hits max_tokens just stops, so check finish_reason, and DeepSeek notes that JSON mode "may occasionally return empty content" (JSON output). Retry instead of saving either.
  6. When a retry fails the same way, change something: say what was wrong, and raise the temperature in non-thinking mode.
  7. 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.
  8. 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).

AssumptionTokens (approx.)Peak cost
English source, about 1.3 tokens per word130,000 input$0.04
Prompts and glossary repeated across 50 chunks50,000 input$0.02
Translated output, assumed 2x the source260,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 endDeepSeekBetter route
Understand a foreign-language article or chapterGood fit in the chat appDeepSeek is enough
Translate many short texts or UI strings in a scriptVery good fit through the API, with the checks aboveDeepSeek API
Translated text for one chapter or a short documentGood fit if you chunk by paragraph and reviewDeepSeek
A whole book back as a translated EPUB, DOCX, or PDFPossible only if you build the chunking, checks, and file rebuilding yourselfA file-level workflow such as the EPUB translator or PDF translator
A confidential documentDepends on whether its privacy terms work for youCheck 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

DeepSeek for Translation: Where It Works and Where It Breaks