Install
Install dragoman from your browser's store, and it keeps itself up to date from there.
Install a release by hand
Every release is also on GitHub, with zips for Chromium browsers and Firefox, plus the full source code. Builds you load by hand don't update themselves.
- 1 Download the Chrome zip from the latest release and unzip it.
- 2 Open helium://extensions, or chrome://extensions in other browsers, and turn on Developer mode.
- 3 Choose Load unpacked and select the unzipped folder.
Works in Firefox 140 and later, including Firefox for Android, and in browsers built on it, such as Zen, LibreWolf, and Floorp.
Install a release by hand
Every release is also on GitHub, with zips for Chromium browsers and Firefox, plus the full source code. Builds you load by hand don't update themselves.
- 1 Download the Firefox zip from the latest release.
- 2 Open about:debugging#/runtime/this-firefox and choose Load Temporary Add-on.
- 3 Select the zip. Firefox keeps it until it restarts, so install from Firefox Add-ons for everyday use.
One free download covers Mac, iPhone, and iPad. It runs on macOS 15, iOS 18, iPadOS 18, and later.
Turn it on
- On a Mac, open Safari, choose Settings, then Extensions, and turn on dragoman.
- On iPhone and iPad, open Settings, then Apps, Safari, and Extensions, and turn on dragoman.
Allow it on all websites, so it can offer to translate any page you open.
Pin dragoman to the toolbar so it's one click away.
Chrome for Android doesn't run extensions. On Android, use Firefox.
Translate your first page
Open any website, click the dragoman icon, pick a language, and choose Translate page. Alt+Shift+T, or Option+Shift+T on a Mac, does the same from the keyboard. Drafts appear with a dotted gold underline, which disappears as your model refines each paragraph.
How a translated page reads
- Drafted on your device
- Mochi is currently promoted to editor in chief.
- Refined by the model you choose
- Mochi has since been promoted to editor-in-chief.
- The original is a hover away
- Rest the pointer on any paragraph to read what it said before. One click on the badge, or Alt+Shift+T, puts the whole page back.
On a phone or tablet, open dragoman from your browser's extensions menu.
Compared with your browser's translator
Chrome, Edge, Safari, and Firefox can translate pages on their own, and for a quick look that's often enough. dragoman is for when you want to really read a page: it gets the meaning and the wording right, and you decide who sees the text.
It reads the whole page
Built-in translators work through a page in small pieces, each on its own, so the same word can come out two different ways a few lines apart. dragoman shows your AI model the page's title, its headings, and the phrases that repeat, so a name, label, or term keeps one translation from top to bottom.
Piece by piece
- Περίοδος 1910–1915
- Term
- Περίοδος 1917–1920
- Period
- Περίοδος 1928–1932
- Tenure
- Περίοδος 1933
- Term
With the whole page in view
- Περίοδος 1910–1915
- Term
- Περίοδος 1917–1920
- Term
- Περίοδος 1928–1932
- Term
- Περίοδος 1933
- Term
You decide where the text goes
When Chrome or Edge translates a page, it sends the text to Google or Microsoft. dragoman drafts on your device, then sends only what you're reading to the provider you chose, with your own key. Keep it on the device, and no page text leaves at all.
Where the page text goes
dragoman Your device Your AI provider only what you read, if you add a model- You choose the translator
- Chrome translates pages with Google Translate, and Edge with Microsoft Translator. dragoman works with the AI model you pick, whether that's Claude, Gemini, the models behind ChatGPT, or one running on your own computer. Today's AI models are generally better with idioms, tone, and words whose meaning depends on the sentence.
- The original stays close
- Hover over any paragraph, or tap it on a phone, to read what it said before, without switching the whole page back.
Your browser's translator is built in, free, and needs no setup. dragoman's on-device drafts are free too, and refinement costs only what your provider charges for the text you read, usually very little with a small model. Firefox's own translator runs Bergamot, the same engine dragoman drafts with in Firefox, so there the difference is the AI pass and the page context on top.
Under the hood
- Two passes
- Your browser's on-device model drafts in the background, with Bergamot, compiled to WebAssembly, filling in where it has none. Paragraphs on screen and just ahead then go to your model in small batches, and each refined paragraph replaces its draft.
- Page context
- Each request carries the page title, an outline of its headings, the phrases that recur on the page with the text around their first appearance, and every rendering settled so far. The model returns the terms it chose, and later requests keep to them.
- Markup
- Links, emphasis, and other inline elements travel as numbered placeholders, so the layout and the links come back intact.
- Only what you read
- Refinement follows the viewport, so a long page costs only the part you scroll through. Finished translations are saved on your device and reused when you come back.
- No middleman
- Requests go straight from your browser to your provider with your key. There's no dragoman server, and every line of the code is public.
On-device translation
Every page starts on your device. dragoman drafts with the on-device model built into Chrome and Edge, and with Apple's in Safari. These run on your computer, unlike the browsers' own page translation, which goes online. Everywhere else, and for any language those don't cover, Bergamot, the open engine behind Firefox Translations, drafts inside your browser. None of it needs an account or a key. On its own, you get a quick, private translation. With an AI model, those drafts become a first pass that your model polishes.
One-time download per language pair
- English → Turkish 15 MB
- English → German 26 MB
- French → English 26 MB
- Japanese → English 49 MB
French → English → German
52 MBNo direct model between two languages? dragoman goes through English and downloads both halves.
- Languages
- More than 50 languages, to and from English. Between two other languages, dragoman goes through English. In the language list, the ones marked AI only need an AI model.
- First use
- Chrome and Edge fetch their language packs the first time you need them, and Safari uses the languages downloaded for Apple's translation on your device. Bergamot's language pairs download once from Mozilla, usually 15 to 50 MB, and stay in your browser. After that, it all works offline.
- Drafts and refinement
- Drafts are quick and fairly literal, good for getting the gist. Your model rewrites them with the whole page in view, so the wording reads naturally and names and terms stay consistent.
- Your choice
- To keep a page on your device even with a model set up, turn on On this device only in the popup. To skip drafts and wait for your model, turn off Draft on this device first in Settings.
Bergamot came out of a research project funded by the European Union, and Mozilla trains and publishes the language models it runs. About Bergamot
Add an AI model
Open Settings from the popup, pick a provider, and follow the three steps. dragoman checks the key as soon as you paste it and preselects a fast, inexpensive model, which you can change at any time.
Providers you can use
- Anthropic
- OpenAI
- Google Gemini
- OpenRouter
- Mistral
- DeepSeek
- Groq
- xAI
- Ollama
- LM Studio
- Any OpenAI-compatible server
OpenRouter can create a key for you. Choose Connect with OpenRouter and approve the request.
Anthropic keys that aren't tied to a workspace also need a workspace ID. You'll find it in the Anthropic Console under Settings, then Workspaces.
Use a local model
Install Ollama, pull a model such as gemma3, and start it with OLLAMA_ORIGINS set so it accepts requests from the extension:
OLLAMA_ORIGINS="chrome-extension://*,moz-extension://*,safari-web-extension://*" ollama serveIn LM Studio, load a model, turn on CORS in the server settings, and start the local server. dragoman finds it at localhost:1234.
What it costs
dragoman is free. Refinement runs on your own key, so the provider bills you directly. Small, fast models are usually enough for translation. The Usage tab in Settings counts tokens per model each month, and turning on Show what each page costs puts the cost of the current page next to the badge.
4 of 14 paragraphs refined
- Refined
- Drafted
- Not yet
As you scroll, paragraphs just ahead get a quick draft and the ones on screen get refined. The rest of the page costs nothing until you get there.
Privacy
What leaves your computer: the paragraphs on screen and just ahead of them, plus any text you ask your companion to translate, sent to the provider you chose, and, for languages your browser can't translate on its own, a one-time model download from Mozilla. Your key is only ever sent to its own provider. dragoman has no server, no account, and no analytics.
Troubleshooting
The popup says the page can't be translated
Browser pages such as settings, the extensions page, and web stores don't allow extensions to change them. Open a regular website instead.
The on-device engine has no model for this pair
The on-device translators cover the most widely used languages. In Safari, you can add more under Translation Languages in your device's Language & Region settings. For the rest, add an AI model and dragoman translates with it directly.
My browser offers to translate the page too
dragoman asks your browser to stay out of the way on pages it might translate. If you turned that off, turn on Keep my browser's translator out of the way in Settings, under Languages. If your browser already translated a page, choose Use dragoman instead to reload it in the original.
A local model doesn't connect
Check that the server is running and that its address in Settings matches. Ollama needs OLLAMA_ORIGINS, and LM Studio needs CORS turned on.
dragoman can't read the page
Safari and Firefox let you choose which websites an extension may read. Open dragoman and choose Allow on all websites.
Firefox doesn't refine with my model
Firefox asks before an extension sends page text anywhere. Open Settings and choose Allow sending page text under your model.
Build from source
dragoman is open source under the MIT license. To build it, you need Node 24 and pnpm.
git clone https://github.com/firatciftci/dragoman.git
cd dragoman
pnpm install
pnpm dev:extensionEach browser has its own build. Run these from extension/:
pnpm build → .output/chrome-mv3 pnpm build:firefox → .output/firefox-mv3 pnpm build:safari → .output/safari-mv3 Then build safari/dragoman.xcodeproj in Xcode.The repository is a pnpm workspace:
- extension/
- The extension, built with WXT and Svelte
- site/
- This website, built with SvelteKit
- brand/
- The dragomans, the logo, and the city
- messages/
- Interface text in 85 languages