Open-source project
qsniyg/maxurl avatar
qsniyg/maxurl

Image Max URL: Finding Larger Image and Video Sources

Finds larger/original versions of images and videos

1,647 stars101 forksJavaScriptApache-2.0

At a glance

What is it?
Image Max URL is a JavaScript userscript, browser extension, website, and Node module for finding larger or original media URLs. It relies mainly on site-specific URL rules plus generic engines, so support depends on the source site's URL structure.
Who is it for?
Adopt Image Max URL when you routinely work with galleries, image hosts, or video pages whose media URLs can be transformed by known rules. Do not treat it as a universal downloader, because the website is limited by browser cross-origin restrictions and generic rules cannot guarantee results on every site.
Can I use it commercially?
Yes. Apache-2.0 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 2 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 20, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What Image Max URL Changes

Image Max URL addresses a narrow but recurring problem: a web page may display a resized image or a reduced video variant even though a larger source exists elsewhere. The project attempts to find that source by replacing URL patterns, then presents the resulting URL for use. It is aimed at people who inspect image galleries, download collections of images, or want the highest-resolution media link exposed by a supported page.

The project is not limited to one browser or one distribution format. The README identifies a userscript for most browsers, a Firefox browser extension, sideloadable WebExtensions builds, a hosted website, and a Reddit bot. The JavaScript userscript also functions as a Node module and can be embedded in another website. This makes the same rule collection usable in a page, an automation script, or a browser integration.

Support is broad, but it is not equivalent to universal site support. The repository describes support for more than 10,000 hardcoded websites, with the complete list in `sites.txt`. It also includes generic engines such as WordPress and MediaWiki. Those engines can work on additional sites, but they depend on recognizable site structures. A page can therefore fail even when it contains a larger media file, if its URL does not match a rule or if the required request is unavailable to the selected distribution.

Rule Engines and Media URL Resolution

The visible design is a transformation pipeline. A site-specific rule receives the source URL and proposes alternative URLs, often by changing size, thumbnail, or media path components. Generic engines handle recognizable publishing systems such as WordPress and MediaWiki. The project can also iterate the process, retain objects found in earlier iterations, and filter out problems such as watermarks or possibly broken images.

The Node integration exposes those controls directly. `fill_object` controls whether results remain URL-only when there are no special properties. `iterations` limits how many times the resolver runs, while `include_pastobjs` determines whether earlier iteration results are included. `exclude_videos` can exclude videos, and `allow_thirdparty` enables rules that use third-party websites. The option `force_page` asks the resolver to find an original page even when that requires extra requests.

Some supported sites need HTTP access beyond the original page. The `do_request` callback is described as a helper for those cases, with an expected interface similar to `GM_xmlHTTPRequest`; the README points to `reddit-bot/dourl.js` for an implementation using Node's request module. This callback matters because URL rewriting alone is not enough for every site. It also makes the integration dependent on an HTTP implementation with the behavior expected by the relevant rules.

Userscript and Browser Extension Installation

For most browsers, the README provides a stable userscript and a development userscript. It labels `userscript.user.js` as the recommended development download, while `userscript_smaller.user.js` is the stable option. These are files rather than a package-manager installation. The README does not document a command that installs the userscript into a browser, so the browser's userscript manager must be used with the downloaded file.

For browsers that support WebExtensions but do not offer the extension in an addon store, the documented approach is to download or clone the repository and load it unpacked. In Chromium, open `chrome://extensions`, enable Developer mode, choose "Load unpacked [extension]", and navigate to the repository. In Firefox, open `about:debugging`, select "This Firefox", choose "Load temporary Add-on...", and select `manifest.json` inside the repository.

The first real use is to install the userscript or extension, open a supported image or video page, and invoke the Image Max URL interface. The README does not specify a universal keyboard shortcut, so the exact action should follow the installed userscript or extension interface rather than an assumed command. If the extension is used in Tor Browser, the README requires "Run in Private Windows" in `about:addons`. It also warns that anti-fingerprinting measures can prevent default shortcuts from working, requiring the user to rebind them.

Building the Repository Locally

The repository contains a `package.json` with development dependencies for TypeScript, browser-extension packaging, and concurrent build tasks. The documented package scripts provide a local build path for contributors who want to compile the TypeScript sources and generate the processed userscript. The package version is `2026.6.0`, and the license field is `Apache-2.0`.

The README directs contributors to `CONTRIBUTING.md` for contribution instructions. The repository files expose these build commands:

bash
npm run build

This invokes `build-tsc` and then `build-js`. The underlying commands use `npx tsc` and `node ./tools/remcomments.js`, with the repository's own `tsconfig.json` and source layout. A contributor should expect the build to operate from the repository directory and to use the checked-in scripts rather than substituting a different bundler.

The extension packaging command is separate:

bash
npm run package

That runs `./tools/package_extension.sh`. The repository does not provide a release history through GitHub releases, and the README's downloadable CRX and XPI links are the documented distribution artifacts for sideloading. The build package does not document test commands, so the available verification surface is the build and the browser installation paths described in the README.

Distribution Limits and Failure Cases

The hosted website has a documented browser-security limitation: some URLs that require cross-origin requests cannot be supported there. The browser extension has more privileges than the userscript and consequently offers some extra functionality, but those privileges also make the browser distribution more sensitive to the target site's security model. A result that works in the extension may not be available in the website build.

URL pattern matching also creates a predictable failure mode. A site may change its URL format, serve media through an API that is not represented by a rule, or return a candidate that the project later marks as a watermark or possibly broken image. The default `exclude_problems` behavior removes those candidates, which is useful for avoiding poor downloads but can also make the resolver return nothing when its heuristic is wrong. Setting `exclude_problems` to an empty array disables that exclusion, according to the integration example, but it does not create support for a site that has no usable rule.

The project is also the wrong tool for unrestricted downloading. The README describes finding larger or original versions of media, not bypassing access controls or guaranteeing that every media file is downloadable. The Reddit bot and embedding options are integrations around the resolver, not evidence that every page can be processed.

Comparison With a Direct Media Request

The practical alternative is to inspect the page's own media request and copy the original URL directly. That approach uses the browser's Network panel or the source delivered by the site, without applying a large rule collection or repeated resolver iterations. It can be more precise for one page, especially when the site exposes a clear full-size image URL or a video manifest.

Image Max URL takes a different approach. It applies known URL transformations and generic publishing-system engines, which can save manual inspection across many supported sites. Its `iterations`, cache, problem exclusion, third-party rules, and request callback options support repeated resolution rather than a single manual copy. The trade-off is dependence on rule coverage and the quality of URL heuristics. Direct inspection asks the user to interpret one site's response, while Image Max URL automates matching across many known patterns. Neither method guarantees a result when the site hides the original behind access controls or a request the selected distribution cannot make.

Licensing is permissive under `Apache-2.0`, as recorded in `package.json` and the repository license file. That matters for embedding the module or distributing modified builds, but this review does not interpret the legal terms for a particular deployment.

Maintenance and Release Surface

The repository is not archived, and its last push was on 2026-10-05. The project has no GitHub releases, so there is no release-based upgrade history in the repository metadata. The README points to development and stable userscript files, a Firefox addon listing, downloadable CRX and XPI artifacts, and a hosted website. These are different update paths with different operational consequences.

For a userscript, upgrading means obtaining the newer script through the userscript manager's update process, assuming that the manager supports it. For a sideloaded extension, the repository files must be replaced or reloaded. The README says a Firefox temporary add-on is deleted when Firefox is closed, which makes it unsuitable as a persistent installation without a separate addon-store or signed-add-on workflow. The project does not document a rollback procedure for userscripts or extension upgrades.

The package version and repository version are not presented as a release cadence in the README. Contributors should inspect `CHANGELOG.txt` and `CONTRIBUTING.md` when preparing changes. The concrete maintenance cost is mainly site-rule upkeep: when a supported site changes its URL structure, the corresponding rule needs review and the relevant test or manual verification.

Editorial conclusion

Adopt Image Max URL when you routinely work with galleries, image hosts, or video pages whose media URLs can be transformed by known rules. Do not treat it as a universal downloader, because the website is limited by browser cross-origin restrictions and generic rules cannot guarantee results on every site. Verify first that the target site appears in `sites.txt`, that the chosen installation has the required browser permissions, and whether the site needs a site-specific rule.

Frequently asked questions

How do I install Image Max URL in a browser?

For most browsers, download `userscript_smaller.user.js` for the stable userscript or `userscript.user.js` for the recommended development version, then install it through the browser's userscript workflow. For WebExtensions browsers, the README documents loading the repository as an unpacked extension.

Does Image Max URL support more than 10,000 websites?

Yes. The README states that it contains support for more than 10,000 hardcoded websites and also includes generic engines such as WordPress and MediaWiki. The complete hardcoded-site list is in `sites.txt`.

Can Image Max URL be used as a Node module?

Yes. The README states that `userscript.user.js` functions as a Node module and shows importing it with `require`. The module accepts options for iterations, caching, filtering, third-party rules, and HTTP requests.

Why does the Image Max URL website not work for every image or video?

The README attributes this to browser security constraints and cross-origin requests. Some URLs require requests that the hosted website cannot make, so the browser extension may provide functionality that the website does not.

What happens when a site changes its URL format?

A site-specific URL rule may no longer match, so the resolver may be unable to find the larger source. The repository maintains website support through rules, and contributions or bug reports can be filed through the project's GitHub issue process.

Official sources

  1. Issues
  2. License: Apache-2.0
  3. Project website
  4. qsniyg/maxurl on GitHub
  5. README
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/qsniyg-maxurl.svg)](https://hysenlabs.com/projects/qsniyg-maxurl)