Open-source project
SteamDatabase/BrowserExtension avatar
SteamDatabase/BrowserExtension

The SteamDB extension: links, prices and the fixes Valve never shipped

💻 SteamDB's extension for Steam websites

1,250 stars98 forksJavaScriptBSD-3-Clause

At a glance

What is it?
The SteamDB browser extension adds SteamDB links across the Steam store and community, highlights the games you own or want on steamdb.info, and adds the things Steam itself does not do, like skipping the age gate, selling from the inventory quickly and showing market prices in other inventories. It ships for Chrome, Firefox and Edge, has no build step, and can be loaded straight from the folder.
Who is it for?
The SteamDB extension fits a Steam player who lives in the store pages, wants the deeper data without leaving them, and is comfortable granting a third party extension access to pages where they are logged in. It does not fit a browser that is not Chrome, Firefox or Edge, since there is no Safari support because of Apple's policies.
Can I use it commercially?
Yes. BSD-3-Clause is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 65 days ago.
What is it written in?
Mainly JavaScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

Links first, then the rest

The extension's own summary is short. It adds SteamDB links on various pages in the Steam Community and Store, and also highlights owned and wished products on steamdb.info.

The major features list expands on that. There are SteamDB links across most Steam store and community pages. There is highlighting of owned, wished and in cart games and packages on steamdb.info, and the README notes that this works by fetching info from the Steam store, which is a detail worth knowing because it means the feature depends on a request the extension makes on your behalf.

Then there is the category that makes the extension more than a link generator: new features on Steam sites, with the age gate skip, quick sell in inventory and market prices in other inventories given as examples. And a fourth category the README describes as fixing stuff that Valve hasn't, with properly centring the Steam store on big screens as the example.

That last category is the one that changes the character of the extension. A link is additive and harmless. An age gate skip, a quick sell button and market prices in an inventory are modifications to pages Valve serves, and they are the sort of feature that a change on Valve's side can break at any time.

The full list of options and features is not in the README but on the project's own site, at steamdb.info/extension, and the README points there for it. A privacy policy is published separately as well, which is the right way to find out what the extension does with your session before you hand it one.

Three browsers, and no Safari

The extension is published for the three major browsers, and the badges in the README point at each store listing.

There is a Chrome Web Store listing, a Mozilla Add-ons listing for Firefox, and a Microsoft Edge add-on listing, with the Edge badge pulling its install count from the Edge add-ons API.

The absence is stated in one line, and it is a policy decision rather than a technical one. There are no plans to support Safari at this time due to Apple's policies.

That constraint matters more for the extension's future than its present. The extension works by injecting into the pages Steam serves, which means it lives in the same category of software as the many other extensions that modify those pages, and the reasons those exist in Chrome and Firefox do not extend to Safari. The author of a Steam-focused extension that also reads your inventory is exactly the kind of extension Safari's extension model discourages, so the absence is unlikely to change.

The project is BSD-3-Clause licensed, written in JavaScript, and the repository was last pushed to on 2026-08-19. There are no GitHub releases, because the release channel is the browser stores rather than the repository, and the README describes a release process that produces a zip rather than a tagged artefact.

No build step, which changes how you contribute

The contributing section is short and unusual, and it explains itself in one sentence. This extension does not have any build steps, and you can simply load the folder on the extensions page of your browser.

That is a real design decision rather than an accident of a small project. Most extensions are written in TypeScript, compiled to a bundle, and the contributors never run the bundle. Here the source that is in the repository is the source that runs, and a contributor can load the folder into Chrome or Firefox with the Load unpacked option and see their change immediately.

The trade is that there is no bundler, so the code has to be written in a form browsers run directly, and the toolchain reflects that. The package scripts use web-ext to launch a browser against the source directory, once for Chrome and twice for Firefox, the second time against the Firefox developer edition build.

bash
npm run start:chrome
npm run start:firefox

The scripts confirm it. start:chrome runs web-ext against the target chromium with the source directory as the extension, and start:firefox does the same for Firefox, with start:firefoxdev pointing at the Firefox developer edition.

For anyone who wants to try a change without touching the repository at all, the same trick works with the published extension, because there is nothing to build.

The lint script is a CSS linter and a type checker too

The contributor instructions are three steps, and they are worth copying because they describe a common gap in browser extension projects, which is that the styles get no attention at all.

Run npm install to install eslint, run npm test which should report warnings, and run npm run fix which should automatically fix most of the reported warnings.

The test script is more than a JavaScript lint.

bash
npm test

Looking at what it actually runs, it is eslint over the project, then stylelint over the CSS, then prettier checking the CSS, then tsc for the type check. The fix script does the same three with their fix flags, eslint --fix, stylelint --fix and prettier --write.

The type check is worth a note, because the project is written in JavaScript and the tsconfig is there for checking rather than for emitting. The dev dependencies include the TypeScript compiler itself and the type packages for the Chrome and Firefox extension APIs, so the check catches a mistyped browser API call, which in an extension is usually a runtime failure on one browser only.

There is also a separate script for the extension manifest itself, test:ext, which runs web-ext lint, and the manifest is versioned by the same tooling that builds the zip.

Localisation rules that encode how Steam words things

The localisation section is a short list of rules, and they are the most project-specific content in the README.

Do not localize SteamDB. Keep the HTML codes intact. If there is whitespace in the strings, keep it. If there are words that are used by Steam itself, such as the discovery queue, match them. And substitution tokens like $1, and strings instead of code tags, should be kept.

Each of those rules exists because of a specific failure mode. The extension inserts text into Steam's own pages, so a string that Valve translates becomes a string that the extension must translate identically, and a mismatch shows as a visibly broken page. The whitespace rule is the same idea for layout. The substitution token rule exists because the strings are templates, and a token that loses its dollar sign is not a translation issue, it is a broken function.

Translations are managed on Crowdin, with a project linked from the README, and the instructions for testing a specific language in Chrome point at the browser's own documentation for setting the locale, which is the standard way to check a translation without changing your system language.

The repository carries the pieces this implies, with a _locales/ directory for the message catalogues and a crowdin.yml at the top level.

The trade offer deep link parameters

The last feature in the README is the most specific, and it is a small piece of URL handling that saves a lot of clicking.

The extension adds support for for_item and my_item parameters in trade offer URLs, and these parameters automatically add items to the trade window upon page load. The for_item parameter specifies an item in the partner's inventory, and my_item specifies an item in your own inventory.

Multiple parameters can be specified, and a single parameter takes the format of appid_contextid_assetid.

code
https://steamcommunity.com/tradeoffer/new?partner=[steamid]&for_item=753_6_1234
https://steamcommunity.com/tradeoffer/new?partner=[steamid]&for_item=753_6_1234&for_item=753_6_5678
https://steamcommunity.com/tradeoffer/new?partner=[steamid]&my_item=753_6_1234

The examples show the combinations, with one item, two items from the partner, one item from yourself, and a mix. The three part identifier is the app, the context and the asset, which is Steam's own way of naming a specific inventory item, and the extension is essentially a URL builder that opens the trade window already populated.

It is a small feature and it is a good example of what the extension is for in general. Steam's own trade page is functional and the flow is a series of clicks, and the extension removes them.

Releasing is a version script and a build script

The release process is two npm scripts, and the README describes them as one step.

Run npm run version 3.0.0, which updates the manifest.json, creates a commit, creates a tag, and runs npm run build, which creates a zip file with the release.

The scripts behind those two commands are visible in the package manifest. The build script runs a Node script, build.js, and the version script runs version.js. The dev dependencies include yazl, which is a zip library, which tells you that the zip is assembled by a small script rather than by a general purpose archive tool, and the release zip is then uploaded to each of the three browser stores by hand.

That is a coherent pipeline for a project of this size, and it depends on the fact that there is no compilation step. There is no transpiled bundle to rebuild, so the artefact that ships is the repository minus the development files, zipped, and the version number lives in one place, the manifest, which the version script keeps in step with the tag.

The extension also publishes a privacy policy and a features page on the project site, both linked from the README, and those are the two documents to read before installing.

Editorial conclusion

The SteamDB extension fits a Steam player who lives in the store pages, wants the deeper data without leaving them, and is comfortable granting a third party extension access to pages where they are logged in. It does not fit a browser that is not Chrome, Firefox or Edge, since there is no Safari support because of Apple's policies. Verify three things before you install it: what the extension fetches and from where, since the privacy policy is a separate document and the highlight feature works by fetching store information, that you are not relying on it for anything Valve might change and break, since the extension patches pages Valve controls, and that the feature you want is actually enabled, because the project ships a long options list on its own site rather than in the README, and the defaults are not necessarily the ones you want.

Frequently asked questions

What does the SteamDB browser extension actually do?

It adds SteamDB links across most Steam store and community pages, highlights owned, wished and in cart games and packages on steamdb.info by fetching store information, adds features Steam sites lack such as an automatic age gate skip, quick sell in inventory and market prices in other inventories, and fixes layout issues such as centring the store on big screens.

Which browsers support the SteamDB extension?

It is published on the Chrome Web Store, on Mozilla Add-ons for Firefox and as a Microsoft Edge add-on, with install counts shown for each. There are no plans to support Safari at this time due to Apple's policies, according to the README.

How do I contribute to the SteamDB extension?

There are no build steps, so you can load the folder on the extensions page of your browser and see the change immediately. Run npm install to install eslint, npm test to see the reported warnings, which cover JavaScript, CSS and the type check, and npm run fix to correct most of them automatically.

What are the for_item and my_item parameters in trade offer links?

The extension adds support for them in tradeoffer/new URLs, and they automatically add items to the trade window on page load. for_item specifies an item in the partner's inventory and my_item an item in your own, multiple parameters are allowed, and a single parameter takes the format appid_contextid_assetid.

How is a new version of the extension released?

Run npm run version 3.0.0, which updates the manifest.json, creates a commit, creates a tag and runs npm run build, which creates a zip file of the release. The scripts are a small Node build script and a small Node version script, and the resulting zip is uploaded to the browser stores.

Official sources

  1. Issues
  2. License: BSD-3-Clause
  3. Project website
  4. README
  5. SteamDatabase/BrowserExtension on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/steamdatabase-browserextension.svg)](https://hysenlabs.com/projects/steamdatabase-browserextension)

Was this useful?