Skip to content
Geld

FAQ

Questions, answered.

Short answers about how Geld works and what it does not do.

Does Geld use the GitHub API?

Not for anything it shows you. When a page renders per-file diffs, the counts are read straight from the page. When it does not (the pull request conversation tab, pull request lists, large pull requests that GitHub loads progressively), the background script fetches the same .diff file you get by appending .diff to a pull request URL. That is a normal page request to GitHub, not an API call, so there is no token and no API quota involved.

Parsed diffs are cached in extension storage keyed by the pull request's head commit, so a pull request you have already looked at costs no request until it gets a new commit. List rows are fetched only when scrolled near the viewport, at most four at a time, and fetching pauses for a minute if GitHub ever answers 429.

The one exception is the optional Sign in with GitHub for settings sync (see below), which talks to GitHub's Gist API on your behalf, and only once you have signed in.

What does Geld collect or send?

Nothing. There is no analytics, no error reporting and no server of ours. The only network requests Geld makes are to GitHub (github.com plus any Enterprise hosts you add): to fetch diffs GitHub would serve you anyway and, if you opt into sign-in, to read and write a secret gist on your own account. Settings live in your browser's sync storage. See the privacy policy.

Are the test files removed from the page?

No. Geld never deletes or moves GitHub's DOM nodes, which would break the React-based view. Hidden entries are given a higher flex order and a data attribute that hides them; a Show test files row at the bottom (and a panel in the file tree) brings them back in place. Header numbers are rewritten while the originals are remembered, so switching Geld off restores the page exactly.

Why does *.spec.* only match code extensions?

Because OpenAPI and AsyncAPI documents are commonly named api.spec.yaml, and silently hiding a schema change would be far worse than showing a test. *.spec.*, *_spec.* and their relatives are therefore restricted to source-code extensions (JavaScript, TypeScript, Python, Go, Rust, Java, …). *.test.* stays open because the only non-test files it catches are configuration for a “test” environment. The full list is on the patterns page.

How do I turn Geld off for one repository or organisation?

Open the toolbar popup on any page of that repository and use Turn off for this repo or Turn off for this org. Those actions append a repository rule for you. You can also edit the rules directly in the options; they read like a .gitignore:

acme/widgets    # off in this repository
acme            # off in the whole organisation
!acme/widgets   # …except here (last match wins)

To hide the tests on a single page for the rest of your visit without changing anything, press AltShiftT.

How do I use Geld with GitHub Enterprise Server?

Open the options page and add your server's hostname (for example github.example.com) under Enterprise hosts. Your browser will ask you to allow Geld on that host; once granted, the content script is registered there. Geld never contacts any host you have not listed. GHES runs GitHub's interface a few versions behind github.com, so if something looks off please open an issue (opens in a new tab) with a screenshot.

Can it hide more than tests?

Yes. Generated files (lockfiles, build output), vendored code, AI agent configuration, docs, tooling & CI and fixtures are each a switch in the popup or options, off by default. Every category can be tuned — untick built-in pattern groups or add your own patterns, optionally scoped to a repository with [owner/repo] headers — and you can create categories of your own with a name, an icon and patterns.

Does “hide whitespace” re-implement GitHub’s diff?

No. It flips GitHub's own Hide whitespace changes setting the way you would, and only if it is not already on. GitHub remembers the preference for signed-in users, so this happens once; signed-out users get the ?w=1 URL.

Do my settings follow me between devices?

Within one browser, yes: settings are stored in browser.storage.sync, so they follow your browser profile wherever it syncs, and apply instantly to open tabs. You can also export and import them as JSON from the options page.

Across browsers, optionally: Sign in with GitHub (top right of the popup or options) uses GitHub's OAuth device flow, so you confirm a short code on github.com and no secret is involved. The only scope is gist. Your settings are kept in a secret gist on your own account (geld-settings.json); there is no Geld server or database, and the token stays on the device that signed in. Changes push within a couple of seconds and pull when the popup or options open or the browser starts.

You can also edit the same gist from any browser on geld.sh/settings. That sign-in uses the same OAuth App and scope; the token lives only in an encrypted cookie in your browser, and the site has no database. A change made there reaches the extension the next time it pulls.

Is it open source?

Yes, MIT licensed at github.com/brandonmcconnell/geld (opens in a new tab). The extension is built with WXT from one codebase for Chrome, Edge, Firefox and Safari, and this website is in the same repository.