gtfoo

Live product · Chrome extension

Read Any Language

Highlight text anywhere on the web — in any language — and hear it read aloud in a natural voice. One button, right accent, no copy-pasting.

Highlight-to-listenAuto language detectionNatural AI voicesBring your own key30-language UIManifest V3

What's different

Vs. other read-aloud extensions

  • Reads in the text’s own language automatically — no language setting, and no wrong-accent robot voice mangling a foreign sentence.
  • Natural ElevenLabs voices from your own account, not the flat built-in system TTS most reader extensions fall back to.
  • Bring-your-own-key with nothing in between — your text and key go only to ElevenLabs; there’s no developer server in the middle logging what you read.
  • Highlight-to-listen on any site — a floating button on any selection, rather than a whole-page reader you have to launch.

The idea

Hear it, don't just read it

I read Chinese websites — and every so often I hit a character I can't pronounce and just want to hearit. And for the languages I am learning — Indonesian and Spanish — I don't want to read a sentence, I want to hear the whole thing spoken with real warmth and emotion, not the flat, robotic text-to-speech built into the browser.

The workaround was always the same clumsy dance: copy the text, paste it into some text-to-speech site, pick the language, hit play. So I built the thing I wanted instead: highlight any text, on any page, in any language, click once, and hear it — with the extension detecting the language for me.

v1

The smallest useful loop

The first version did one thing well: watch for a text selection on the page, pop a floating 🔊 button beside it, and on click send the text to ElevenLabs and play the audio back. A single multilingual model meant there was no language picker — it just matched whatever you highlighted. Your own API key, saved locally. No accounts, no backend, no build step.

Along the way

What it grew into

  • Always the latest models and voices

    The model and voice lists are pulled live from ElevenLabs, not hardcoded — so the moment ElevenLabs ships a newer text-to-speech model (and with it broader language coverage) or adds new voices, they appear in settings automatically, no extension update required. Pick a model, see the languages it supports, and preview any voice with one click before you commit.

  • A spend guard

    A per-selection character limit — with a live count on the button (“842 / 1000 chars”) — stops a giant accidental highlight from burning through your quota. The same cap is enforced again in the background, so an oversized request never even fires.

  • Speaks your language, too

    Reading foreign text is the whole point — so it felt wrong for the extension’s own settings and popup to sit in English. The interface now localizes itself to the browser’s language across 30 locales — Arabic and Hebrew through Hindi, Thai, Japanese and Chinese — right-to-left layouts included, using Chrome’s built-in i18n so there’s no runtime cost.

Trade-offs

The judgment call I'm proud of

The decision I keep coming back to wasn't a feature — it was choosing not to sit in the middle of anyone's data.

Bring your own key, not my backend

I could have proxied everyone’s requests through my own ElevenLabs account and a server of mine. I deliberately didn’t: users paste their own key, and their text and key go straight to ElevenLabs and nowhere else. No backend to run, no bills to foot — and, the real win, no server of mine ever sees what anyone is reading.

Where it is now

Live on the Chrome Web Store

Read Any Language is published and installable from the Chrome Web Store: highlight text on any page, click the 🔊 button, and hear it in its own language through a natural ElevenLabs voice — with your key kept local, your quota in view, and — as of v1.2 — an interface that localizes itself into 30 languages. It's the tool I actually reach for to read through the languages I'm still learning.

Try it on your next tab

Add it to Chrome, drop in a free ElevenLabs key, and highlight a line in any language.

Add to Chrome ↗