Easydict: a macOS dictionary and translator that queries 20+ services at once
macOS App OCR OpenAI Gemini DeepL Google Bing A concise and elegant Dictionary and Translator macOS App for looking up words and translating text.
At a glance
- What is it?
- Easydict is a GPL-3.0 Swift app for macOS that looks up words and translates text through Apple Dictionary, Apple Translate, OpenAI, Gemini, DeepL, Google and more in a single query. Here is how it installs, how the multi-service query works, and where it stops being the right tool.
- Who is it for?
- Adopt Easydict if you work on macOS 13.0 or later and want dictionary lookups and translations from several engines in one window, installed with brew install --cask easydict. Do not adopt it if you need Windows or Linux, if you want a library you can call from Python, or if you cannot accept GPL-3.0 terms for anything you redistribute.
- Can I use it commercially?
- Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
- Is it still maintained?
- Yes. The repository last received commits 4 days ago.
- What is it written in?
- Mainly Swift, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 25, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
The problem Easydict solves, and who it is for
Translation on macOS is fragmented. A dictionary lookup lives in one app, a web translator in a browser tab, an LLM translation in a chat window, and a screenshot of untranslatable text in a fourth place. Easydict puts all of those behind one input surface. The README describes it as a "concise and easy-to-use translation dictionary macOS App" that can "query multiple translation services results at the same time", which is the actual design bet: instead of picking one engine and trusting it, you see several answers side by side.
The intended user is a Mac user who reads and writes in more than one language, not a developer integrating translation into a service. The supported service list is broad and deliberately mixed: Apple Dictionary and Apple Translate run locally through the system, while OpenAI, Gemini, DeepSeek, Ollama, Groq, Zhipu AI, GitHub Models, DeepL, Google, Youdao, Tencent, Bing, Baidu, Niutrans, Caiyun, Alibaba, Volcano and Doubao are remote. That mix matters because it lets you compare a system dictionary definition against a model's paraphrase without leaving the app. The README also claims support for 48 languages, which is the range the language picker is meant to cover.
How the multi-service query and the four input modes work
Easydict exposes four ways to get text into the query pipeline, and all four converge on the same multi-service result view. Input Translate opens a window on a shortcut (default Option + A) where you type and press Enter. Mouse Select Translate shows a query icon after you select a word and hover over it. Shortcut Select Translate takes the current selection when you press a key (default Option + D). Screenshot Translate captures a screen region (default Option + S), and Silent Screenshot OCR captures a region and copies the recognised text straight to the clipboard (default Option + Shift + S) without showing a translation window.
The README states that Easydict recognises the input language automatically, so you do not declare a source language before querying. From there, the app fans the same input out to whichever services you have enabled and collects the results. The service list is the architecture: Apple Dictionary and Apple Translate are system integrations, the LLM providers are HTTP APIs that need credentials, and Ollama and Groq sit in the same list as hosted providers. The repository layout shows the app ships as an Xcode project with a CocoaPods dependency set, and recent releases add services incrementally, for example 2.20.0 adding MDict and 2.21.0 adding a Codex CLI service. That pattern suggests service support is a per-provider adapter, not a single generic endpoint.
One thing the README does not describe is the exact ordering or the timeout behaviour when one enabled service is slow. If you enable a dozen providers, the README gives no statement about how partial results are presented or whether a failing service blocks the rest.
Installing Easydict on macOS with Homebrew
The README calls Homebrew the recommended installation path. The cask name is easydict, so the command is a single line:
brew install --cask easydictAfter that finishes, Easydict should appear in your Applications folder like any other cask. If you would rather not use Homebrew, the README points to the releases page for a manual download instead.
There is a version floor to check before you install. The README notes that the latest version supports macOS 13.0 and above, and that older systems should use release 2.7.2. So the first real step is confirming your macOS version, not running the install command blindly.
Once installed, the fastest first use is the input shortcut. Press Option + A, type a word or sentence, and press Enter. The README describes automatic language recognition, so you should not need to set a source language first. To get a second opinion from a different engine, open the app settings and enable additional services from the list; the README lists Apple Dictionary, Apple Translate, OpenAI, Gemini, DeepL, Google, Bing and the rest, and notes that some of them are documented separately in the user docs, including the macOS system dictionary and system translation guides.
For the screenshot path, press Option + S and drag over the region you want translated. For the clipboard-only variant, press Option + Shift + S: the README says the OCR result is copied directly to the clipboard rather than shown in a translation window.
Where Easydict is the wrong tool
The most obvious limit is the platform. Easydict is a macOS app, and the repository carries a macOS badge and an Xcode project. There is no Windows or Linux build described anywhere in the README. Anyone searching for a Windows build will not find one here.
A second limit is the name collision. There is a Python package called easydict, and people search for it as "easydict pip" and "easydict pypi". That is a different project from this one. This repository is a Swift macOS application, and its README documents no Python package, no pip install, and no importable module. If your goal is to call a translation function from a script, Easydict is not that.
A third limit is the credential surface. Many of the listed services are hosted APIs, which means API keys stored in the app. The README does not document how those keys are stored or protected, and it does not describe a rollback path if a service configuration breaks your setup. That is a real gap for anyone evaluating the app on security grounds, and it is the honest answer to a question like "is easydict safe": the README does not make a security claim either way, so the in-app settings and the project's own documentation are where you would have to verify it.
Finally, the README itself sets expectations on responsiveness. The maintainer notes being busy and triaging issues mainly on weekends, with PRs prioritised over issues. That is a maintenance reality, not a defect, but it affects how quickly a broken service adapter gets fixed.
Easydict compared with Bob and Saladict
The README is explicit about lineage. Easydict was inspired by saladict and Bob, and the initial version was built on Bob under GPL-3.0, with many features and UI referenced from Bob. So the comparison is not abstract.
Bob is the closer relative: a macOS translation app with a similar selection-and-shortcut interaction model. The difference in approach is breadth of engines. Easydict's README lists more than twenty services including OpenAI, Gemini, DeepSeek, Ollama, Groq, Zhipu AI and GitHub Models alongside the traditional translation vendors, and it adds screenshot OCR and silent screenshot OCR as first-class modes. Bob is the app Easydict's UI descends from, so if you already use Bob, the switch is about which service list and which OCR behaviour you want, not about a different interaction paradigm.
Saladict is a browser extension rather than a macOS app. That is the real difference: Saladict lives inside the browser and works on web pages, while Easydict is a separate application with global shortcuts and screen capture. If your translation need is reading foreign-language web pages, the extension model fits better. If it is translating whatever is on screen, including text inside a native app or an image, a system-level app is the only one of the two that can do it.
Licence, contribution workflow and upgrade cost
Easydict is GPL-3.0, and the README states the initial version was based on Bob, which is also GPL-3.0. For personal use on your own Mac this is unremarkable. For redistribution or for shipping a modified build inside a product, the copyleft terms are the thing to read in the LICENSE file. This is not legal advice; the licence text is the authority.
The contribution workflow is split across two branches. The README says dev holds the latest development code and may contain features in progress, while main holds stable release code merged from dev. Bug fixes and features go to dev, and major features or UI changes should start as an issue. The default branch on the repository is dev, which matches that description.
Upgrade cost is low for normal users: Homebrew cask upgrades and the releases page carry the version history, and the recent release notes are narrow in scope, for example 2.22.0 migrating DeepL web translation to the oneshot endpoint. That kind of change is the one to watch, because a provider-side endpoint migration can break a service until the app is updated. The README does not document a rollback procedure for a bad upgrade, so keeping the previous release available before upgrading is a reasonable precaution rather than a documented step.
Editorial conclusion
Adopt Easydict if you work on macOS 13.0 or later and want dictionary lookups and translations from several engines in one window, installed with brew install --cask easydict. Do not adopt it if you need Windows or Linux, if you want a library you can call from Python, or if you cannot accept GPL-3.0 terms for anything you redistribute. Before relying on it, verify two things yourself: that your macOS version meets the 13.0 floor (older systems are pointed at release 2.7.2), and that the API keys and endpoints you configure behave as the in-app settings describe, since the README does not document key storage or a rollback path for a bad service configuration.
Frequently asked questions
How do I install Easydict?
The README recommends Homebrew with the command brew install --cask easydict. A manual install is also possible by downloading the latest release from the releases page. The latest version requires macOS 13.0 or later; older systems are directed to release 2.7.2.
Is Easydict safe?
The README does not make a security claim, and it does not document how API keys for the hosted services are stored. What it does state is that the app is GPL-3.0 and based on Bob (GPL-3.0), and that it supports system services like Apple Dictionary and Apple Translate alongside remote APIs. Whether the credential handling is acceptable is something you have to check in the app settings and the project documentation.
What is the difference between Easydict and Bob?
The README states that Easydict was inspired by Bob and that the initial version was made based on Bob (GPL-3.0), with many features and UI referenced from Bob. The practical difference described is the service list: Easydict lists more than twenty translation services, including OpenAI, Gemini, DeepSeek, Ollama and Groq, plus OCR screenshot translation.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/tisfeng-easydict)
Community notes