Repo Colors is a Chrome extension that gives pinned repositories on GitHub accessible palettes based on their primary programming language.
Install Repo Colors from the Chrome Web Store
- Language-inspired gradients for pinned repositories and gists
- Reliable updates after GitHub soft navigation and dynamic page changes
- More than 50 recognized GitHub Linguist language names and aliases
- Automatic WCAG AA text-color selection for every built-in or custom palette
- Options to disable coloring, remove visual effects, or keep GitHub's native contrast
- Per-language primary-color overrides synchronized by Chrome
- Support for light, dark, dark-dimmed, increased-contrast, and reduced-motion preferences
- No analytics, remote code, advertisements, or application server
| GitHub theme | Preview |
|---|---|
| Dark default | ![]() |
| Dark dimmed | ![]() |
| Light default | ![]() |
Open the extension popup to enable or disable coloring, toggle hover effects, or preserve GitHub's native surfaces with language-colored borders. Select Customize palettes to set a primary color for any recognized language; Repo Colors chooses an accessible foreground automatically.
Settings use Chrome's synchronized extension storage. See the complete privacy policy.
- Download or clone this repository.
- Run
npm ci,npx playwright install chromium, andnpm run package. - Open
chrome://extensions. - Enable Developer mode.
- Extract
Repo-Colors.zip, select Load unpacked, and choose the extracted directory.
The ZIP is rooted at manifest.json and contains only runtime files.
Requires Node.js 20.19 or newer.
| Command | Purpose |
|---|---|
npm test |
Run DOM, language, contrast, and manifest tests |
npm run test:browser |
Exercise GitHub navigation plus popup/options UI in Chromium |
npx playwright install chromium |
Install Chromium once for browser tests |
npm run lint |
Check extension and tooling JavaScript |
npm run audit |
Check development dependencies for high-severity advisories |
npm run check |
Run linting, tests, and the dependency audit |
npm run package |
Validate and create a deterministic Repo-Colors.zip |
data/languages.js Shared language aliases and palette definitions
shared/settings.js Validated Chrome storage settings
foreground.js GitHub DOM integration and navigation observer
html/ Popup and options interfaces
styles/ Card styling, contrast, and motion behavior
tests/ DOM fixtures and release regression checks
scripts/package.mjs Reproducible Chrome Web Store package
The runtime remains framework-free and dependency-free. Development dependencies are used only for tests, linting, and packaging.
Repo Colors requests only:
storageto save extension settings and palette overrides- Content-script access to
https://github.com/*so it can style repository cards
It does not request tab history, broad host access, or background execution.
Built-in palettes cover JavaScript, Vue, Java, TypeScript, Python, Go, HTML, C++, C#, CSS, SCSS/Sass, Jupyter Notebook, Vim Script, TeX, Swift, Svelte, Kotlin, Dart, Gherkin, Objective-C, R, PowerShell, Shell, Cuda, Lua, PHP, Ruby, CoffeeScript, Rust, Dockerfile, AutoHotkey, Zig, Haskell, Elixir, Scala, Perl, Julia, Clojure, Erlang, Nim, Assembly, MATLAB, Groovy, HCL, TSQL, Emacs Lisp, OCaml, Jsonnet, Rebol, C, PureBasic, Makefile, Visual Basic .NET, D, and Common Lisp. Unknown languages receive a neutral accessible palette.
Every pull request runs the same validation and packaging workflow used for releases. See the changelog for release history. Bug reports—especially GitHub layout changes—are welcome in GitHub Issues.
Licensed under the MIT License.
Made with 🦔 by @TheRoro.


