# YouTube No Translation intercepts the automatic translations YouTube applies for you

> A browser extension, AGPL licensed and shipped for Firefox, Chromium and Edge, that keeps titles, descriptions, thumbnails, audio tracks and subtitles in the original language, with an optional YouTube Data API key for the most reliable lookups.

**YouG-o/YouTube-No-Translation** — Web browser add-on that prevents YouTube's automatic translations! It keeps titles, descriptions, and audio in their original language.

- Repository: https://github.com/YouG-o/YouTube-No-Translation
- Website: https://youtube-no-translation.vercel.app
- Stars: 1,287 · Forks: 26
- Language: TypeScript
- License: AGPL-3.0
- Published: 2026-10-19 · Updated: 2026-10-19 · Language: en
- Canonical page: https://hysenlabs.com/projects/youg-o-youtube-no-translation

## The five surfaces YouTube translates, and what the extension does about them

YouTube translates for the viewer in several places at once, and the extension lists five of them. Video titles are kept in their original language, which the README notes applies to titles generally, to Shorts and to notifications. Descriptions are prevented from being auto translated. Thumbnails are restored to the original. Audio tracks always use the original track, unless you choose a specific one. Subtitles follow a rule of your choosing, with a preferred language, and if that language is unavailable the subtitles are disabled, and auto generated ones are ignored.

The subtitle rule is the sharpest of the five, and it is a choice rather than a restoration. Asking for a specific language means you get that language or nothing, which is different from the platform default of showing whatever it has. For someone studying a language, a machine generated or auto translated track in the wrong language is often worse than no track, because it is still text on screen and still gets read.

The audio track rule is closer to a restoration with one escape hatch. Original audio is the default, and choosing a specific track is an exception you make deliberately, which is the arrangement you would want if, for instance, a video has a commentary track alongside the original.

The extension's job is therefore not one feature but five, and the reason it needs to work at the level of network responses rather than the DOM is that the translated title, description and thumbnail are what the page is built from in the first place. By the time a title is visible on screen, the platform has already decided what it should say.

## Where the original data comes from: the Data API key is optional

The mechanism has two modes, and the README is explicit about the trade-off. You can enable the YouTube Data API v3, which requires your own API key, and that is described as the most reliable and fastest way to fetch original data. The project ships a document for it, docs/YT_DATA_API.md, and links to it from the features section. Without a key, the extension has to work from what the site itself returns, which is the InnerTube layer, the internal API the web player uses, and the project tags name innertube and youtube-oembed among its topics.

That distinction explains the whole design. The InnerTube responses are what YouTube has already decided to serve, including its own automatic translation of a title. The Data API is a separate, documented surface where the original title is available as a field. With a key, the extension can ask for the original and correct the page. Without one, it is limited to what the page already carries, which is enough to restore some things and not others.

This is the cost structure of the extension, and it is worth being clear about. A key is free to obtain but is tied to a project, and the project is the one that has to keep working, so a personal key used across a few browsers is a different proposition from a key baked into a build you distribute. The README keeps the key optional, which means the extension is usable out of the box with reduced fidelity rather than not at all.

## Distribution: three stores, and a gap on Safari

The extension is published where you would expect. There is a listing on Mozilla Add-ons for Firefox, one on the Chrome Web Store, and one on the Microsoft Edge add-ons store, each linked from the download section of the README. The project also links a page for it, and a Safari App Store badge was removed from the README, which matches the note below it: Safari users on macOS cannot install it from the App Store.

The Safari story is the most awkward part of the distribution and the README is upfront about it. There are two routes. You can build the extension yourself, which needs macOS with Xcode installed, or you can download an installable Safari pre-build from the latest release on GitHub. The pre-build route exists precisely because the store route does not.

For the people who do it themselves, the README gives the requirement clearly: macOS with Xcode, then open the Xcode project and build and run it there to generate the.app, and make sure unsigned extensions are allowed in Safari's settings. That last step is the one that catches people out, because Safari refuses to run an unsigned extension until you allow it.

The stores also matter for the update path. A store extension updates itself, while a self built Safari version has to be replaced by hand whenever a new release appears.

## Building it yourself: esbuild bundles and per browser manifests

The build requirements are Node.js and npm, plus Xcode on macOS if you are targeting Safari. The clone and install are standard:

```bash
# Clone the repository
git clone https://github.com/YouG-o/YouTube_No_Translation.git
cd YouTube_No_Translation

# Install dependencies
npm install
```

Packaging is then per browser:

```bash
# Build for Firefox
npm run package:firefox
```

```bash
# Build for Chromium
npm run package:chromium
```

```bash
# Build for Safari (macOS only)
npm run prepare:safari
open "safari/YouTube No Translation/YouTube No Translation.xcodeproj"
# Then build and run in Xcode to generate the .app
# Make sure you have allowed usigned extension in Safari settings
```

There is a fourth, older target, and it exists for a concrete reason. The README warns that Firefox versions older than 128 need the extension built with a compatible manifest, without the data_collection_permissions field, and gives the command for it:

```bash
npm run package:firefox-old
```

The package manifest explains the structure. Each browser gets its own pipeline that runs a type check, cleans the dist directory, creates the output folders, prepares the browser specific manifest, builds the shared parts and copies the assets. The shared part bundles three entry points with esbuild, a content script, a background script and the popup, plus a separate script bundle, and then builds the CSS, the HTML and the final post processing step. The repository has a manifests/ directory for the per browser manifests, a src/ directory with the TypeScript sources, a _locales/ directory for the interface translations, a tests/ directory, and a tailwind.config.js for the styling.

The three way split of content, background and popup is the standard extension shape and it tells you where the work lives. The content script is the part that has to notice a page change and reapply the original titles, and the release notes show exactly that kind of fix: v2.25.1 is a fix for page title synchronisation and race conditions during SPA navigation, and v2.25.0 is a fix for original subtitle track detection.

## Conflicting with other extensions, and the trade the README asks you to read

Two interoperation notes in the README are worth more attention than most of the documentation.

The first is about DeArrow. The README says that if you want to use DeArrow alongside this one, you should check docs/DEARROW_SUPPORT.md to avoid conflicts. Two extensions both rewriting the same DOM node will fight, and the outcome is that one of them silently stops working. The project telling you to read a document before combining them is the right way to handle that, and it is also a sign that this extension has to deal with the reality of other tools rewriting the page underneath it.

The second is the API key again, this time as a decision rather than a feature. The Data API path is described as the most reliable and fastest, and the alternative is to run without a key and accept that some surfaces cannot be restored. That is a genuine fork in the road for anyone installing this, and the extension makes it visible rather than hiding the difference behind a setting with no explanation.

The project also asks for contributions, pointing to CONTRIBUTING.md and to the open issues, and specifically mentions adding a language translation as a contribution type, which fits a project whose whole point is about language. The repository keeps a CHANGELOG.md, a contributors list document, and a script folder alongside the source.

## Maintenance, licence and the limits of intercepting a platform

The licence is the GNU Affero General Public License v3.0, and the README says so explicitly, with the LICENSE file at the root of the repository. AGPL is the copyleft licence with the network clause, and for a browser extension that is a coherent choice, since the code runs on your machine rather than on a server.

The project is actively maintained. The last push was on 2026-09-24, and the release history shows a tight cadence: v2.25.1 on 2026-09-24, v2.25.0 on 2026-09-09 and v2.24.6 on 2026-09-04, with the package version at 2.25.1. The release notes describe bug fixes in the platform interaction layer, which is the right sign for an extension of this kind, since the interesting failures are almost always the site changing shape underneath it.

The limits are structural. This extension works by intercepting and rewriting, and it can only restore what the platform still serves. If YouTube decides not to carry the original title, the original thumbnail or the original audio track in its responses, there is nothing for the extension to put back, and no amount of local cleverness changes that. A video whose creator uploaded a dubbed version is a case where the original audio may simply not be offered, and the extension's promise of the original track then depends on the platform's catalogue rather than on the code.

The second limit is the risk of relying on an interception at all. A browser extension that rewrites what a site returns sits in the path of everything you watch, and any bug in it can show up as wrong titles, wrong subtitles or a broken player, with no way for you to tell whether the fault is the site's, YouTube's, or the extension's. That is why the release notes are about race conditions and detection, and why the Data API route, which asks a documented endpoint for the original value instead of guessing from the page, is the more reliable one.

The third limit is scope. The extension does one thing well, and if what you want is to watch the original audio of a video with subtitles in your own language, that is exactly what it cannot do, because ignoring auto generated subtitles and disabling a track it cannot find are the documented behaviour rather than a bug. For that use case, a different tool, one that fetches translations deliberately, is the right answer.

## Conclusion

Adopt the extension if you read or watch a lot of material in a language YouTube decides to translate for you, and you can live with a tool that works by intercepting the client rather than by changing the platform. Do not adopt it if you want the original audio for every video, because the extension can only restore what the platform still serves, and it ignores auto generated subtitles by design. Verify first by installing the build from your browser's store, then by turning on the YouTube Data API v3 option with your own key, since the README calls that the most reliable and fastest way to fetch original data, and by reading the DeArrow support note if you use that extension too.

## FAQ

### How do I install YouTube No Translation?

It is published for Firefox on Mozilla Add-ons, for Chromium on the Chrome Web Store and for Edge on the Microsoft Edge add-ons store, each linked from the README. On Safari for macOS it is not on the App Store, so you either build it yourself with macOS and Xcode, or download the installable Safari pre-build from the latest GitHub release.

### Do I need a YouTube Data API key to use the extension?

No, the key is optional, and the README describes enabling the YouTube Data API v3 with your own key as the most reliable and fastest way to fetch the original data. Without a key the extension works from what the site already returns, which restores less. The project documents the key setup in docs/YT_DATA_API.md.

### How do I build the extension for Firefox myself?

Install Node.js and npm, clone the repository, run npm install and then npm run package:firefox. If you are on Firefox older than 128 you need the older manifest without the data_collection_permissions field, and the README gives npm run package:firefox-old for that case.

### What happens to subtitles in YouTube No Translation?

You set a preferred subtitle language, and if that language is unavailable the subtitles are disabled rather than falling back, with auto generated subtitles ignored. The behaviour was adjusted in the v2.25.0 release, which fixed original subtitle track detection.

### Can I use DeArrow together with YouTube No Translation?

The README says you can, but tells you to check docs/DEARROW_SUPPORT.md first to avoid conflicts, because both extensions rewrite parts of the same page. The project publishes that document specifically for the combination.

### What licence is YouTube No Translation released under?

The GNU Affero General Public License v3.0, stated in the README with the LICENSE file in the repository root. The project is free and open source, and accepts contributions including translations of the interface.

## Sources

- [License: AGPL-3.0](https://github.com/YouG-o/YouTube-No-Translation/blob/main/LICENSE)
- [Project website](https://youtube-no-translation.vercel.app)
- [README](https://github.com/YouG-o/YouTube-No-Translation/blob/main/README.md)
- [Releases](https://github.com/YouG-o/YouTube-No-Translation/releases)
- [YouG-o/YouTube-No-Translation on GitHub](https://github.com/YouG-o/YouTube-No-Translation)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/youg-o-youtube-no-translation
