Library / SDK
mika-cn/maoxian-web-clipper avatar
mika-cn/maoxian-web-clipper

MaoXian Web Clipper: save pages to your own disk

A web extension to clip information from web page. Save it to your local machine to avoid information invalidation. Not bored registration, Not charged.

1,225 stars138 forksJavaScriptMIT

At a glance

What is it?
MaoXian Web Clipper is a browser extension that clips a selected region of a web page and saves it as a file on your own machine, with categories, tags and a searchable clipping history, so nothing depends on a server account that can lapse. It suits a reader who wants to keep a personal archive rather than a third-party bookmark service.
Who is it for?
Adopt MaoXian Web Clipper if you want clipped pages kept on your own disk with a local, searchable history, and you are willing to install a third-party extension in both browsers. Skip it if you want the clippings to sync across devices without setting up your own sync, since the extension writes to local storage and leaves synchronisation to you.
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 61 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 the extension does

MaoXian Web Clipper is a browser extension to clip information from a web page and save it to your local machine to avoid information invalidation. The last clause is the reason the project exists. Web content expires. A link rots, a page changes, a forum post gets edited or deleted, and the copy you clipped becomes unreachable, which is the specific failure the extension is designed to prevent. The description adds the two selling points in plain words: no registration to be bored by, and no charge. The primary language is JavaScript, the licence is MIT, the last push was on 2026-08-23, and the released version list holds a single entry, 0.1.52 dated 2020-03-08, while the package manifest in the repository reads 0.8.2, which is a numbering mismatch worth knowing about before you judge the project's currency by either number.

Six features, and the local storage one that matters

The feature list is six items and the first one is the foundation. Local storage, where all files will save on the local hard disk and you can control your data totally, with Dropbox given as an example of how you might sync the files. The rest build on that. Free selection lets you choose which area you want to clip, and adjust selection lets you fine-tune the selection with hotkeys after you have made it. Category and tag means that before clipping you can change the title, input a category and add tags. Clipping history records what you have clipped and supports searching that history through the title, category or tag. And reset history lets you, when you install the extension on a new computer, reset your clipping history. The reset item is the odd one out, and its purpose becomes clear when you read it against the local storage design. If the history lives in the browser profile, moving machines means the history does not come with you, so the extension offers to let you start clean rather than show a list of things that are not there.

Installing on Firefox and on Chrome

The install instructions are two lines and the difference between them is the interesting part. On Firefox, the extension is on the Mozilla add-ons site, so it installs the ordinary way. On Chrome, the instruction is to install by crx, and the link goes to a project page describing how. A crx install is a manual step rather than a store listing. If you would rather build it from source, the package manifest drives a single node script through environment variables, and the firefox development build is invoked like this:

bash
NODE_ENV=development MX_PLATFORM=firefox MX_PLATFORM_ID=$MX_DEV_FIREFOX_ID node build.js

The project also publishes a home page and a screenshots gallery, so the visual behaviour of the clipping can be inspected before installing anything. The extension's own description and the third-party library list in the README tell you what it is doing under the hood, and the library list is unusually revealing for a tool this small.

The library list, and what each one is doing

The acknowledgements name eight libraries, and they map onto the feature list in a way that makes the implementation legible. `turndown` and `turndown-plugin-gfw` are the HTML to Markdown converters, so what you clip arrives as Markdown rather than as a saved copy of the page's markup, and the gfm plugin is what makes GitHub-style Markdown like tables and task lists survive the conversion. `mustache.js` is the template engine, so the output files are rendered from a template rather than assembled by string concatenation. `mathml2latex` converts MathML to LaTeX, which is specialised work for an extension that clips scientific content. `css-selector-generator` generates a CSS selector for the region you selected, which is how the extension records what to clip. `JavaScript-MD5` is a hashing helper, and `awesomplete` and `pikaday` are the autocompletion and date-picker widgets behind the tag and date entry. The combination of a selector generator and a template engine says the design decision plainly, the clip is a stored recipe plus rendered output rather than a full page snapshot.

How the extension is built, and the platform split

The build system in the package manifest is a single script driven by environment variables, and the variables are the interesting part. There are development and production variants for each platform, `build-chromium` and `build-firefox` with their `-production` counterparts, and the chromium development script sets `MX_PLATFORM=chromium` along with a platform id and an update URL for the MV3 build, while the firefox script sets `MX_PLATFORM=firefox` with a platform id. The `MX_DEV_CHROMIUM_ID` and `MX_CHROMIUM_ID` names suggest extension ids used for an update service, so the Chromium build can check for a newer version, and the MV3 update URL suggests a self-hosted update manifest rather than a store. The developer workflow uses `web-ext run` against the `dist/extension/maoxian-web-clipper` directory, with `--no-reload` variants for a run without auto reload and separate targets for chromium and for `firefox-desktop`. The test runner is a plain node script, `node test/runner.js test/*/test-*.js`, with a `test-file` variant for a single file.

The repository layout, and the native app

The tree is small for a browser extension and tells you the scope. There is a `src/` directory for the extension source, a `dist/` directory for build output, a `build.js` build script, a `scripts/` directory, a `test/` directory, an `offline-pages/` directory and, notably, a `native-app/` directory. The native app is the piece that does not fit the usual picture of an extension, and the local storage feature implies what it is for. A browser extension writing arbitrary files to the user's disk needs either a native messaging host or a file system API, and the `native-app/` directory is where a helper for that would live. The `offline-pages/` directory is consistent with a clipping tool, since a copy of a page that renders offline is the point of archiving it against information invalidation. The `README-DEV.md` file, linked from the contribution section, is where the developer setup is documented, and the contribution section also points at a donate and sponsor page.

What the project does not do

Two limits follow from the design and neither is documented as a limitation, so they are worth stating. The first is that there is no account and no server, which is the point, and it also means there is no sync. The feature list mentions Dropbox as a way to sync the files yourself, which puts the burden of keeping two machines in step on a file sync service you configure. The second is that the clipping history lives in the extension, so it travels only with the browser profile, which is why the reset feature exists for a new machine and why there is no import of history from an old installation. A related consequence is that the extension is only as good as the content it can reach. It clips what the browser has rendered, so a page that needs a login the extension does not share will clip whatever the page returns to the extension, and anything behind a paywall or a client-side script is the same problem every clipping tool has.

Editorial conclusion

Adopt MaoXian Web Clipper if you want clipped pages kept on your own disk with a local, searchable history, and you are willing to install a third-party extension in both browsers. Skip it if you want the clippings to sync across devices without setting up your own sync, since the extension writes to local storage and leaves synchronisation to you. Before you install, check the browser support, since the Firefox version comes from the add-ons site and the Chrome version is installed by crx file rather than from a store, and note that the last tagged release is 0.1.52 from 2020 while the package manifest reads 0.8.2, so the version numbering is not a reliable guide to what you get.

Frequently asked questions

What does MaoXian Web Clipper do with the pages I clip?

It saves them to your local hard disk so you control the data, with the README suggesting a file sync service such as Dropbox if you want them on more than one machine. The output is Markdown, converted by turndown.

How do I install MaoXian Web Clipper?

On Firefox it is on the Mozilla add-ons site. On Chrome the documented route is to install by crx file, using the instructions on the project page linked from the README, rather than a store listing.

How do I clip a specific region of a page?

You select which area you want to clip, and after selecting an area you can adjust the selection using hotkeys. Before clipping you can also change the title, set a category and add tags.

Does MaoXian Web Clipper require an account or a subscription?

No. The project's stated position is no registration to be bored by and no charge, and all files are saved on your local disk so you control the data.

Official sources

  1. Issues
  2. License: MIT
  3. mika-cn/maoxian-web-clipper on GitHub
  4. README
  5. Releases
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/mika-cn-maoxian-web-clipper.svg)](https://hysenlabs.com/projects/mika-cn-maoxian-web-clipper)

Was this useful?