explaingit

bistutu/fluentread

6,889TypeScriptAudience · generalComplexity · 1/5Setup · easy

TLDR

A free browser extension that translates web pages using 20-plus engines including Google Translate, DeepL, and AI models, showing original and translated text side by side with all data stored only on your device.

Mindmap

mindmap
  root((fluentread))
    What it does
      Translate full page
      Side by side view
      Highlight to translate
    Translation Engines
      Google DeepL Microsoft
      OpenAI DeepSeek Kimi
      Custom engine
    Browsers
      Chrome
      Edge
      Firefox
    Privacy
      Local storage only
      No external server
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Read foreign-language articles in your native language without leaving the page.

USE CASE 2

Compare original and translated text side by side while studying a new language.

USE CASE 3

Highlight any text on a page and instantly see a translation with a one-click copy button.

USE CASE 4

Translate an entire page at once using a floating button without reloading.

Tech stack

TypeScript

Getting it running

Difficulty · easy Time to first run · 5min

Install directly from the Chrome, Edge, or Firefox extension store, no developer setup required.

Free to use with no commercial obligations, source code is open and the project is non-commercial and community-driven.

In plain English

FluentRead is an open-source browser extension for translating web pages, designed to give readers the feeling of reading in their native language. It works in Chrome, Edge, and Firefox and is available for free with no commercial strings attached. The extension supports more than 20 translation engines. These include traditional services like Microsoft Translator, Google Translate, and DeepL, as well as AI-based options such as OpenAI, DeepSeek, Kimi, and Ollama. Users can also configure a custom translation engine if they prefer something else. Several translation modes are available. One mode shows the original text and the translated text side by side on the same page, so readers can compare both without losing context. Another mode lets you highlight any text on a page and instantly see a translation, with a button to copy the result. A third mode translates the entire page at once through a floating button, without needing to reload. All settings and data are stored locally on the user's device rather than on any external server, which means nothing is sent anywhere beyond the translation engine the user chooses. The project describes itself as a more open alternative to Immersive Translate, another popular bilingual browser translation tool. It offers a high degree of customization to suit different reading scenarios. The README is written primarily in Chinese, and official documentation with detailed setup guides and tutorials is hosted at a separate website linked from the repository. FluentRead is a non-commercial, community-driven project. The source code is open and transparent, and installation is done through the standard extension stores for each browser.

Copy-paste prompts

Prompt 1
I want to build a Chrome extension that shows bilingual text side by side on any webpage. How would I structure the TypeScript content script to inject translated paragraphs next to originals, similar to FluentRead?
Prompt 2
Show me how to let users choose between Google Translate, DeepL, and OpenAI as translation backends inside a Chrome extension options page, with the selected engine saved to chrome.storage.local.
Prompt 3
I am building a browser extension that calls OpenAI and DeepSeek as translation APIs. Write a TypeScript fetch wrapper that handles both and falls back to the other if one fails.
Prompt 4
How do I implement a text-highlight-to-translate feature in a browser extension using a floating tooltip and no page reload, similar to FluentRead's selection mode?
Open on GitHub → Explain another repo

← bistutu on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.