
π say-it Β· Pronounce
Stop saying "kub-cuttle". One Bash command pronounces 1,790+ developer jargon names β most with a cited source.
π pronounce.renlab.ai Β· π¨π³ δΈζ Β· π Browse Β· π― Quiz Β· π€ Voice search Β· π MCP server

βΆ Watch the 47-second promo (with voice) Β· π― Try the quiz Β· π€ Voice search
π Try it in 30 seconds
git clone https://github.com/anzy-renlab-ai/pronounce.git
cd pronounce && ./install.sh
say-it kubectl
That's it. Now try say-it GIF, say-it nginx, say-it Pydantic, say-it --why JSON, or say-it quiz for a 10-question challenge. Linux users: install espeak-ng (sudo apt install espeak-ng) and the CLI just works. Windows: same CLI under WSL or git-bash + PowerShell. Or skip install and use the browser at pronounce.renlab.ai.
β If
say-it kubectlsaves you one cringey standup moment β star the repo. It nudges more devs to contribute their favorite mispronounced project name.
π The developer pronunciation scoreboard
1,790 entries β 1,171 carry a citable source β 69 settled by the creator themselves, 163 the community still argues about. The famous ones:
β Settled β the creator said so
| Word | It'sβ¦ | β¦not | Settled by |
|---|---|---|---|
| GIF | "jif" | "gif" (hard g) | Steve Wilhite (creator), NYT 2013 |
| nginx | "engine X" | "n-jinx" | NGINX official |
| YAML | "yam-ul" | "yammel" | yaml.org |
| GNU | "guh-NEW" (hard g) | "noo" | GNU Project |
| LaTeX | "lay-tek" | "lay-teks" | Lamport / LaTeX project |
| TOML | rhymes with "knoll" | "tom-el" | Tom Preston-Werner (creator) |
| Tcl | "tickle" | "T-C-L" | John Ousterhout (creator) |
| awk | "auk" (like the bird) | "A-W-K" | Aho / Weinberger / Kernighan |
βοΈ Still contested β both readings are in active use
| Word | Camp A | Camp B |
|---|---|---|
| kubectl | "koob-control" | "cube-cuddle" |
| SQL | "sequel" | "S-Q-L" |
| JSON | "JAY-son" | "JEE-son" |
| GUI | "gooey" | "G-U-I" |
| JWT | "jot" (per RFC 7519) | "J-W-T" |
Every cell has IPA, audio, and the source. Hear all 1,790 β
Disagree with one? That's the whole point β open a PR with your reading and a source. The argument is the dataset.
What you're actually getting
- 1,790 entries β 1,171 carry a citable source. Confidence-tagged (
creator-clarified/community-consensus/contested), each with a citable URL where one exists (we'd rather leave it blank than fabricate one). Wilhite said GIF is "jif" at the 2013 Webby Awards. Crockford says JSON is "JAY-son" (RailsConf 2009). RFC 7519 says JWT is "jot". The dictionary cites them. - Multi-reading audio. For words where the debate is real β GIF, SQL, GUI, char, regex β the CLI chains the alternates after the primary with a spoken "or:" so you hear the debate without staring at the terminal.
--soloskips the tail once you've internalized it. - Zero deps. ~250 lines of Bash. No npm, no sudo, no surprises. Wraps the
sayengine that's already on your Mac. Ships a Claude Code skill and an MCP server so your AI answers "how do you pronounce X?" with audio, not a phonetic guess.
$ say-it --why JSON
word JSON
ipa /ΛdΚeΙͺsΙn/
respelling_us jay son
source Douglas Crockford (RailsConf 2009)
url https://www.youtube.com/watch?v=-C-JoyNuQJsWhy not just Google?
Because Google gives you 47 Reddit arguments and a YouTube clip you have to unmute. IPA gives you /ΛkuΛb kΙnΛtroΚl/ β a reference, not a teacher.
You don't need a phonetic transcription. You need to hear the word. Twice. Maybe three times. Done.
say-it ships a community-maintained dictionary of how engineers actually say the names that trip everyone up β and feeds the intended respelling to your OS's text-to-speech engine, so kubectl comes out as koob-control, not whatever your computer guessed from the letters.
Famous moments
Some pronunciations aren't opinions β the creators settled them. The dictionary cites every one:
| Word | Reading | Source |
|---|---|---|
GIF | "jif" (creator says so) | Steve Wilhite, Webby Awards 2013 |
JSON | "jay-son" | Douglas Crockford, RailsConf 2009 |
GNU | "g-noo" (hard G, one syllable) | GNU Project official |
Linux | "LIN-ux" (short i, schwa) | Linus Torvalds himself |
LaTeX | "lay-tek" (or "lah-tek") | Leslie Lamport, official |
Django | "JANG-go" (silent D) | Django FAQ |
Vue | "view" (one syllable) | Evan You, Vue docs |
Vite | "veet" (French for quick) | Vite docs |
Knative | "KAY-native" (the K is voiced) | Knative docs |
etcd | "et-cee-dee" (et-cetera-distributed) | etcd FAQ |
Every dictionary entry includes a source_url. Run say-it --why <word> to see it.
Claude Code integration
You: kubectl ζδΉθ―»οΌ
Claude: π (plays "koob-control" three times)
/ΛkuΛb kΙnΛtroΚl/ β "KOOB-control". Kelsey Hightower says it
this way (KubeCon talk). "Cube-cuddle" is an alternate β
try `say-it --alt kubectl` to hear it.Once installed, the pronounce-word skill auto-triggers on:
X ζδΉθ―»/X ζδΉει³/θ―»δΈδΈ Xhow do you pronounce X/pronounce X/how do you say X
Your AI replies with sound, not just a phonetic guess. Skill file: skills/pronounce-word/SKILL.md.
Not on Claude? Same skill drops into Codex CLI (codex plugin marketplace add anzy-renlab-ai/pronounce) and Kiro (~/.kiro/skills/), and the MCP server covers Claude Desktop, Cursor, Continue, Zed, Cline & friends β full matrix in integrations/.
VS Code extension

Hover over any tech word in any file β see the IPA, hear the pronunciation. Same 1,790-entry dictionary as the CLI, JSON-bundled at build (zero runtime parse cost).
# Cursor / VSCodium / Zed / Gitpod / Theia / code-server (Open VSX)
code --install-extension sayit.pronounce
# or the listing: https://open-vsx.org/extension/sayit/pronounceNow live on Microsoft Marketplace too: ext install sayit.pronounce in VS Code. See marketplace listing.
- Hover over
kubectl,YAML,Ghostty,wagmiβ¦ β tooltip with IPA + π Play + β Star link. - ββ§' β speak selection.
- Status bar
π sayitβ click to speak the current selection. - Welcome walkthrough β 4-step onboarding on first install.
Pronounce: Search dictionaryβ¦β fuzzy-find all 1,790 entries.
Source: integrations/vscode/. Cross-platform as of v0.3 β macOS say, Linux espeak-ng, Windows PowerShell.
Chrome / Edge / Brave extension
Click any tech word on any webpage β popup with IPA + audio. Same 1,790-entry dictionary; same Web Speech API as pronounce.renlab.ai. Sideload only for now (not yet on Chrome Web Store).
Download pronounce-chrome-0.1.0.zip from the latest release β unzip β chrome://extensions/ β Developer mode β Load unpacked.
Source: integrations/chrome/.
How the dictionary works
data/pronunciations.tsv is the single source of truth β tab-separated, 1,790 entries, covering:
- Cloud / DevOps:
kubectl,nginx,Kubernetes,helm,Istio,Envoy,Prometheus,Grafana,Terraform,Argo,Knative,etcd,containerd,runc,Podman, ... - Languages / Frameworks:
Django,Vue,Vite,Pydantic,Bun,Deno,Hugo,Hono,Caddy,Svelte,Astro,Pinia, ... - Databases:
PostgreSQL,Postgres,SQLite,MySQL,MongoDB,Cassandra,Redis,Ceph,ScyllaDB,ClickHouse,DuckDB, ... - CS jargon / acronyms:
GIF,JSON,SQL,GUI,GNU,char,regex,sudo,tmux,chmod,WYSIWYG,ASCII,enum,NaN,SaaS,PaaS, ... - Distros / tools:
Linux,Debian,Ubuntu,Arch,Nix,LaTeX,TeX,emacs,zsh, ...
Each entry has 10 columns: word | ipa | phon_us | alt_ipa | alt_phon_us | source_url | source_label | category | confidence | notes. The phon_us column is Apple's Speech Synthesis phoneme set, injected into say via [[inpt PHON]]β¦[[inpt TEXT]]. This is what gives the intended reading rather than whatever the TTS would have inferred from the letters.
Local override: drop a ~/.config/say-it/pronunciations.local.tsv and it takes precedence.
What works today
- β
macOS β any word, via the built-in
sayengine. Zero dependencies. - β 1,171 of 1,790 entries carry a citable source β the rest are confidence-tagged, no fabricated citations.
- β Audible multi-reading awareness β contested words audibly chain alternates with "or:".
- β
--alt [N],--all,--solo,--why,--json,--md,--no-dict,list,search,quiz,repl,stream,doctor,export,benchmark,badge,cheatsheet. - β Claude Code skill + MCP server for AI-side pronunciation questions.
- β Browser PWA β installable, offline-capable, instant search, voice-mic search, interactive quiz.
- β Editor integrations β Raycast, Alfred, VS Code, Cursor, Codex, Kiro, Continue.
- β π Live site β pronounce.renlab.ai (every word browsable, audio, source citation) + /zh (Chinese landing).
What's coming
See DESIGN.md for the architecture.
- βοΈ Cloud TTS (opt-in ElevenLabs / OpenAI) for the names native TTS still mangles.
- π Anki export for vocabulary drills.
- π Light theme on the v2 homepage (already shipped on word/SEO pages).
Shipped since this list was written: Windows (PowerShell) + Linux (
espeak-ng) backends, andsay-it update(now a fast dictionary refresh;--fullreinstalls the CLI).
β Support β start with a star
The dictionary is free and MIT. The single highest-leverage thing you can do is star the repo β it's the signal that pulls in more contributors, more PRs, more creator-clarified entries.
- β Star on GitHub β β one click, no signup, biggest effect.
Optional, if it's saved you real standup pain:
- β Coffee on Ko-fi β pays for one new entry per cup.
- π Sponsor on GitHub β recurring tier (pending Sponsors approval).
Dollars cover hosting (Vercel/Cloudflare/Open VSX), domain renewals, MiniMax narration credits for promo videos, and time to track down creator citations for new entries.
brew install anzy-renlab-ai/tap/say-it # HomebrewInstall (macOS)
brew install anzy-renlab-ai/tap/say-it # HomebrewOr the "Try it in 30 seconds" block above. ./install.sh drops:
- the CLI at
~/.local/bin/say-it, - the pronunciation dictionary at
~/.local/share/say-it/pronunciations.tsv, - if you use Claude Code, a
pronounce-wordskill at~/.claude/skills/pronounce-word/so any "how do you say X?" prompt to your AI gets answered with audio instead of IPA, - the same skill into
~/.agents/skills/(Codex CLI) and~/.kiro/skills/(Kiro) when those dirs exist β it's the cross-tool Agent Skills standard.
Make sure ~/.local/bin is on your $PATH. Linux also works β install espeak-ng (sudo apt install espeak-ng / brew install espeak-ng). Windows: WSL or git-bash + PowerShell. Or skip install entirely with the browser version at pronounce.renlab.ai.
Usage
say-it kubectl # primary Γ 3, then "or: <alt>" for each alternate
say-it --solo kubectl # primary only β silence the "or:" tail
say-it --alt GIF # focus on the first alternate
say-it --alt 2 GUI # focus on the Nth alternate (1-indexed)
say-it --all SQL # primary AND every alternate, each repeated
say-it --no-dict kubectl # bypass the dictionary entirely
say-it --why JSON # show IPA, source URL, category, confidence
say-it list # every word in the dictionary
say-it search redis # grep the dictionary (case-insensitive)
say-it -n 5 Pydantic # 5 repetitions instead of 3
say-it -r 110 Knative # slower (110 wpm; default is 130)
say-it -o /tmp/word.aiff Postgres # save to file instead of playing
say-it --list # all macOS voicesThe default voice is Samantha (General American). Pass -v <voice> for any other macOS voice β but the dictionary is GenAm-only, by design.
No common issues documented yet. If you hit a problem, the repository's GitHub Issues page is the best place to look.
Licensed under MITβ you can use, modify, and redistribute it under that license's terms.
View the full license file on GitHub β