Text translation is the easy half: a current LLM or an open translation model, a glossary list injected into the prompt, a formal or informal switch and a small web page. Word files are the harder half. Keeping styles, tables and tracked changes while swapping text run by run takes a day of fiddling, and PowerPoint and PDF are worse. The quality ceiling is also someone else's model: DeepL's own engine is the product, and a self-built one is only as good as the model you point it at, notably weaker for rarer language pairs on local models. Fine for a few hundred thousand characters a month, not for a team's compliance review.
Before you buildDeepL Free covers 50,000 characters and one file a month. If you translate a few emails a week, you may not need to pay or build.
Build me a personal translator to replace DeepL Pro. Requirements: - Node.js 22 + TypeScript: a Fastify server and a React page built with Vite. `npm start` serves http://localhost:4830 with two panes, a language picker and a formal/informal switch. - Engine: any OpenAI-compatible chat endpoint (`openai` SDK; OPENAI_BASE_URL, OPENAI_API_KEY and MODEL in .env, so Ollama works too). Detect the source language with `franc-min`. The system prompt must return only the translation, keep markup and placeholders untouched, and apply the tone setting. - Storage: better-sqlite3 in ./data/translator.db: glossaries (source term, target term, language pair, notes) and a translation memory of finished sentence pairs. - Glossary: CSV import and export in DeepL's format (`term,translation,SRC,TGT`). Send the terms found in the text with every request, then check that each target term appears and list the ones that don't. - Memory: split text into sentences (`Intl.Segmenter`); reuse an exact match from memory and only send new sentences to the model; show which parts came from memory. - Documents: translate .docx by unzipping with `jszip`, editing the w:t text of each paragraph with `fast-xml-parser` and writing a new file with styles, tables and footnotes untouched. Check it with three sample files and open them in Word or LibreOffice. - A "history" page keeping the last 7 days of translations, with a delete button. - Single user. No accounts, no telemetry, local-first: only the configured endpoint sees your text, and the README says so in one sentence. - Out of scope: PDF, PowerPoint and Excel files, browser extensions, Office add-ins, voice. - README: .env keys, the cost per 100,000 characters for your model, and a warning that quality for rare language pairs depends on the model you choose.
Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own DeepL Pro.
Add a folder mode to the translator in this folder. Requirements: - A command `translate-dir <src> <dest> --to de,fr` that reads .md and .txt files, keeps front matter keys and code blocks untouched, and writes one folder per language. - Use the glossary and memory; skip files whose content hash hasn't changed since the last run. - Print a table of files, sentences from memory and sentences sent to the model. - Update the README.
Add a check mode to the translator in this folder. Requirements: - After translating, translate the result back to the source language and show both texts side by side with differences highlighted (`diff` on words). - Flag numbers, dates and names that differ between the source and the back-translation. - It's off by default, because it doubles the cost; a checkbox turns it on. - Update the README.
Add a small desktop helper to the translator in this folder. Requirements: - A Node script using `clipboardy` and a global shortcut library for the OS you run on: press the shortcut, send the clipboard text to the local server, and show the translation in a notification. - The target language comes from a setting; formal or informal tone too. - Keep nothing on disk except the normal history entry, and show errors in the notification. - Update the README with the autostart steps for your OS.
People pay for the quality of the engine, and for the documents: a 30-page Word file comes back with fonts, tables and footnotes intact. The no-training promise and ISO and SOC 2 certificates also matter to anyone sending client text through it.
Estimate · A local model costs nothing to run; a hosted model costs a few cents per 100,000 characters. The build is token usage on your agent plan.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Free | $0/user | $0/user | 50,000 characters a month, 1 file translation a month up to 5 MB, 1 glossary with 5 entries per language pair, 1 saved translation. |
| Individual | — | $8.74/user | 300,000 characters a month, 3 file translations a month up to 30 MB, 1 glossary with 5 entries per language pair, 1 saved translation, formal and informal tone, no data training. |
| Team | — | $28.74/user | 1,000,000 characters per user a month, 20 file translations, 5 glossaries with 1,000 entries per language pair, 5 shared style rule lists, bulk file translation, SSO for 50 or more users. |
| Business | — | $57.49/user | Unlimited characters under fair use, 100 file translations up to 100 MB, unlimited glossaries, translation memory, SCIM, Write Pro included. |
| Enterprise | custom | — | Custom character and file limits, bring your own key, 99.9% availability, dedicated account team. |
Free translates 50,000 characters a month and one file of up to 5 MB, with one glossary of 5 entries per language pair.
Kinda. The core is a weekend build with the prompt on this page, but real gaps remain: DeepL's own trained translation engine, which is what the subscription mainly buys, PowerPoint, Excel and PDF translation that keeps the layout.
About $8.74 a month on the Individual plan per seat, $104.88 a year (checked 2026-10-19).
DeepL's own trained translation engine, which is what the subscription mainly buys; PowerPoint, Excel and PDF translation that keeps the layout; Browser extensions and the Word, Outlook and Google Docs add-ins; Phone apps and desktop apps for Windows and Mac; A written promise that your text is deleted after processing and never used for training. If any of those matter to you, keep paying.
Yes: LibreTranslate (open source), Argos Translate (open source), Firefox Translations (free).