Useful Script: a Chrome extension of small per-site JavaScript utilities
Chrome extension that provides a lot of useful scripts
At a glance
- What is it?
- Useful Script is a Manifest V3 Chrome extension that bundles a set of small JavaScript utilities for popular websites, shipped as one installable package with a popup UI, per-site scripts and a build step that extracts script metadata. It suits someone who wants a handful of conveniences in one place, and it is a collection of site-specific scripts that will each break at different times as the sites change.
- Who is it for?
- Adopt Useful Script if you want a single install that adds a few small conveniences to the social and video sites you already use, and you are willing to treat it as a collection of small scripts rather than a maintained product. Do not adopt it if you need guarantees, since the changelog shows the release line has been irregular and each script depends on the internals of a site you do not control.
- Can I use it commercially?
- Yes. MIT 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 101 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
One extension, many small scripts
The project describes itself as a Chrome extension that provides a lot of useful scripts, and the Vietnamese README gives the framing in one line: one extension containing a very large number of small features, to make life easier.
That is the honest description of what this is, and it sets expectations properly. It is not a product with a coherent feature set. It is a bag of conveniences, each of which does one narrow thing on one particular website, bundled together so you install once instead of installing a dozen separate extensions.
The subject list in the repository metadata makes the scope concrete: douyin, downloader, facebook, facebook-graph-api, github, instagram, javascript, open-source, scripting, tiktok, tools, useful-scripts and youtube, with automation and chrome-extension as the mechanism tags.
So the extension covers short video platforms, social networks, a video site, a code host, and adds download helpers and some Facebook Graph API related functionality. Each of those areas is a separate scraper of a different website, written by someone who looked at what that site was doing at the time.
The primary language is JavaScript, the licence is MIT, and the author is HoangTran0410. The README is bilingual, with the Vietnamese `README.md` and an English `README-en.md` side by side, and the project also maintains a Facebook group and a donation link.
There is a planned direction too. The README says the useful-script extension is expected to include the functionality of RevealDeletedFBMessages and FBMediaDownloader, two other projects by the same author, and the Star History chart tracks all three repositories together.
The repository layout, and what the scripts directory holds
The top level of the repository describes the architecture of the extension more clearly than the README does.
There is `manifest.json`, which is the extension manifest, and `index.html` and `popup/`, which is the popup interface the user interacts with. The `scripts/` directory is where the individual site scripts live, and `templates/` holds templates used to generate or scaffold those scripts. There is `config.js` at the root, and `pages/` which likely holds the pages the extension injects into sites.
Two build artefacts are worth noticing. `assets/` holds the icon and the screenshots, and `md/` holds the Markdown documents, since the changelog is at `md/CHANGELOGS.md` and the contribution guide at `md/CONTRIBUTE.md`.
There are also `AGENTS.md` and `CLAUDE.md` at the root, the instruction files that AI coding assistants read to learn a codebase's conventions. A project that keeps both, alongside a `.github/` directory, is set up for contributions from tools as well as from people.
The `package.json` is minimal, and the minimalism is itself informative:
{
"name": "useful-scripts",
"version": "1.8.0",
"description": "Chrome extension with useful scripts for various websites",
"type": "module",
"scripts": {
"build:metadata": "node scripts/build/extractMetadata.js"
},
"repository": {
"type": "git",
"url": "https://github.com/Useful-Scripts-Extension/useful-script"
},
"author": "HoangTran0410",
"license": "MIT"
}There is one script, `build:metadata`, which runs `node scripts/build/extractMetadata.js`. No dependencies are declared at all, and the project is marked as an ES module. So the build step is a single Node script that extracts metadata from the per-site scripts, and the extension itself ships without a bundler and without a framework.
Installing: a manual install with a video walkthrough
The installation section is short and points at a video rather than a command.
The README lists manual installation with a link to a YouTube guide, and embeds the video thumbnail as the instruction. There is no package on a registry, no store listing and no build-and-install script in the repository, so installing the extension means obtaining the source or a packaged copy, loading it into the browser as an unpacked extension, and turning it on.
There is an online demo, hosted as a static page on the project's GitHub Pages site, which the README links as a way to try it before installing anything into a browser. That is a useful distinction: a demo page and a browser extension are not the same thing, and a demo running in a hosted page cannot do what an extension with page access can.
For developers there is a separate demo section with its own video tutorial, and a playlist link.
The absence of a documented install command is worth stating plainly rather than glossing over. The repository does not describe a build pipeline that produces a loadable directory, a zip, or a store submission, only the metadata extraction script and the manual install path. If you want to run this yourself from source, you will be working from the repository structure directly rather than from a documented release artefact.
The version history is a record of chasing other people's websites
The README's version list is the most informative thing in the document, because it shows what the project actually spends its effort on.
The current version is v2.2, and the release notes for it are about going viral on Threads, updating the group link, and redirecting to FB AIO. The earlier entries, listed under a collapsed details block, read as a maintenance log for the individual site scripts: v2.1 was a fix to an optimisation problem, specifically removing an import of `@allScripts` from `storageScripts.js`; v2.0 was a hotfix for a popup crash; v1.9 optimised the script so the popup loaded a hundred times faster, with a note that it was broken; v1.8 and v1.7 were douyin, facebook, youtube and tiktok updates on specific dates in 2024; and before that a run of facebook-heavy releases and hotfixes.
So the release cadence is not driven by new functionality in the extension itself. It is driven by the sites it hooks into changing, and by bugs in the injection and storage logic.
The tagged releases tell the same story at a coarser level: release-v2.2 on 2026-07-14, release-v2.1 on 2025-11-26 and release-v2.0 on 2025-11-08. The last push to the default branch was on 2026-07-14, the same day as the newest release. The repository is not archived.
One inconsistency is worth noting for anyone tracking versions. The `package.json` says version 1.8.0, while the extension's own changelog is at v2.2. The package manifest is clearly not where the extension version is tracked, which is normal for a project where the manifest file carries the version the browser reads, but it does mean there are two version numbers in the tree and only one of them is the user-facing one.
Where Useful Script is the wrong tool
The first wrong-tool case is anything that needs a guarantee. Every script in this extension works by interacting with a website the author does not control, and those websites change. The changelog is a long record of that, with entries that are dates and platform names rather than features. A script that worked in June may not work in August, and when it breaks there is nothing to fall back on but turning the script off.
The second is a team that needs to audit what runs on their browser. An extension of this kind injects code into pages and reads and writes browser storage, and the whole point of the per-site approach is that the code has to poke at the site's own internals. The MIT licence means the source is available to read, and the repository is public, which is the mitigation, but the mitigation is manual review of a large body of JavaScript.
The third is anyone who needs a single capability done properly. If you want one downloader done well, with documented options and a support path, a dedicated extension for that is a better bet than one entry in a bundle where nobody has committed to maintaining that particular script.
The fourth is a browser other than Chrome. The project is a Chrome extension, and the packaging and manifest are Chrome's, so running it elsewhere means the browser's extension model has to be compatible.
The alternative worth naming is a single-purpose extension for the one thing you want, or a user script manager with a small set of scripts you install individually. The difference in approach is that a bundle gives you one permission grant and one thing to keep updated, while individual extensions give you exactly the functionality you want and nothing else, at the cost of more permissions granted to more separate publishers. The bundle trades granularity for convenience, and that is a reasonable trade for a personal tool and a poor one for a machine whose browsing you care about.
Maintenance, licence and the shape of the community
The last push was on 2026-07-14, which is a little over three months ago, and the newest release is the same date. The repository is not archived, and the presence of `AGENTS.md` and `CLAUDE.md` alongside a `.github/` directory suggests the maintainer expects outside contributions.
The licence is MIT, with a `LICENSE` file in the tree and the same licence recorded in the package metadata. For a browser extension that injects code into other people's sites, a permissive licence is a reasonable choice, and it means anyone can read the source, fork it, or run a modified version.
The community is arranged around Facebook. The README asks readers to join the extension's Facebook group, the author runs a Facebook page for updates, and the release notes for v2.2 mention updating the group link and redirecting to FB AIO. The star history chart tracks the extension alongside the two other repositories the extension is expected to absorb, RevealDeletedFBMessages and FBMediaDownloader, which is a sign of a consolidation plan rather than three separate tools.
The documentation is thin, and that is the honest state of it. The English README covers the introduction, the demo, the version list, the screenshots, the install video and the contribution link, and points at two separate Markdown documents for the changelog and the contributing guide. There is no architecture document, no per-script documentation, and no statement about what the scripts do on each site. For a project whose value is a large number of small behaviours, that is a real gap, and it means a user has to read the source to know what a given script actually does to their session.
Editorial conclusion
Adopt Useful Script if you want a single install that adds a few small conveniences to the social and video sites you already use, and you are willing to treat it as a collection of small scripts rather than a maintained product. Do not adopt it if you need guarantees, since the changelog shows the release line has been irregular and each script depends on the internals of a site you do not control. Before you install it, read the current changelog at `md/CHANGELOGS.md`, check which scripts are relevant to you against the site you visit, and remember that the extension runs with full access to the pages it modifies, so the MIT licence and the visible source are the only things standing between you and whatever a script does on your account.
Frequently asked questions
What is the Useful Script Chrome extension?
It is a Chrome extension that bundles a large number of small JavaScript utilities for popular websites, covering platforms such as Facebook, Instagram, TikTok, Douyin, YouTube and GitHub, plus download helpers and Facebook Graph API related functionality. The project is MIT licensed and written in JavaScript.
How do I install the Useful Script extension?
The README gives a manual installation path with a YouTube walkthrough, and there is no package on a registry or a store listing. An online demo is hosted on the project's GitHub Pages site so you can try the interface before installing, and developers have a separate demo video and playlist.
What is the current version of Useful Script?
The README lists v2.2 as the current version, with release-v2.2 tagged on 2026-07-14. The package manifest in the repository still carries version 1.8.0, and the changelog itself is kept at `md/CHANGELOGS.md`.
What build step does the Useful Script repository have?
One script, `build:metadata`, which runs `node scripts/build/extractMetadata.js` to extract metadata from the per-site scripts. The `package.json` declares no dependencies at all and the project is marked as an ES module, so there is no bundler and no framework in the build.
What is the relationship between Useful Script and FBMediaDownloader?
The README says the useful-script extension is expected to include the functionality of RevealDeletedFBMessages and FBMediaDownloader, two other projects by the same author. The star history chart tracks all three repositories together, which points to a consolidation into one extension.
Official sources
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.
[](https://hysenlabs.com/projects/useful-scripts-extension-useful-script)Was this useful?