HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
gildas-lormeau
SingleFile
JavaScript2018–2026
gildas-lormeau / SingleFile

SingleFile

Web Extension for saving a faithful copy of a complete web page in a single HTML file

66Distinct people
113Mentions
1Explicit recommenders
22.9KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Web Extension for saving a faithful copy of a complete web page in a single HTML file

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

Personally, I prefer VimWiki for taking notes during my work. So it is a place to mix ideas, small documentations and snippets of things I found on the web. Since I most of the…

zirkuswurstikus used a recommendation phrase. One indexed comment matches. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year113 dated mentions

Observed mentions: 2018-07-04 16:05:39 UTC to 2026-10-27 01:32:30 UTC.

05101520252018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 4 mentions; 1 submissions, 3 comments20182019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 18 mentions; 3 submissions, 15 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 12 mentions; 1 submissions, 11 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 9 mentions; 0 submissions, 9 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 23 mentions; 1 submissions, 22 comments20222023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 9 mentions; 0 submissions, 9 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 23 mentions; 1 submissions, 22 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 11 mentions; 0 submissions, 11 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC413
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC18315
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC12111
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC909
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC23122
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC909
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC23122
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC11011
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC404

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
SingleFile SingleFile helps you to save a complete web page into a single HTML file. SingleFile is a Web Extension (and a CLI tool) compatible with Chrome, Firefox (Desktop and Mobile), Microsoft Edge, Safari, Vivaldi, Brave, Waterfox, Yandex browser, and Opera. Table of Contents SingleFile Table of Contents Demo Install Getting started Additional notes FAQ Release notes Known Issues and Troubleshooting Command Line Interface (SingleFile CLI) Integration with user scripts File format comparison Projects using/compatible with SingleFile Privacy Policy Contributors Code derived from third party projects Icons License Demo Demo.SingleFile.mp4 Install SingleFile can be installed from the store of: All browsers: https://www.getsinglefile.com Firefox: https://addons.mozilla.org/firefox/addon/single-file Firefox for Android: https://addons.mozilla.org/android/addon/single-file Chrome: https://chromewebstore.google.com/detail/singlefile/mpiodijhokgodhhofbcjdecpffjipkle Safari (macOS and iOS): https://apps.apple.com/us/app/singlefile-for-safari/id6444322545 Microsoft Edge: https://microsoftedge.microsoft.com/addons/detail/efnbkdcfmcmnhlkaijjjmhjjgladedno You can also download the zip file (https://github.com/gildas-lormeau/SingleFile/archive/main.zip) of the project and install it manually by unzipping it somewhere on your disk and following these instructions: Firefox: https://extensionworkshop.com/documentation/develop/temporary-installation-in-firefox Chrome and Microsoft Edge: https://github.com/gildas-lormeau/SingleFile-MV3 Safari: https://github.com/gildas-lormeau/SingleFile-Safari-Extension Getting started Click on the SingleFile button in the extension toolbar to save the page. You can click again on the button to cancel the action when processing a page. Additional notes Open the context menu by right-clicking the SingleFile button in the extension toolbar or on the webpage. It allows you to save: the current tab, the selected content, the selected frame. You can also process multiple tabs in one click and save: the selected tabs, the unpinned tabs, all the tabs. Select "Annotate and save the page..." in the context menu to: highlight text, add notes, remove content. The context menu also allows you to activate the auto-save of: the current tab, the unpinned tabs, all the tabs. With auto-save active, pages are automatically saved every time after being loaded (or before being unloaded if not). Right-click on the SingleFile button and select "Manage extension" (Firefox) / "Options" (Chrome) to open the options page. Enable the option "Destination > save to Google Drive" or "Destination > upload to GitHub" to upload pages to Google Drive or GitHub respectively. Enable the option "Misc. > add proof of existence" to prove the existence of saved pages by linking the SHA256 of the pages into the blockchain. You can use the customizable shortkey Ctrl+Shift+Y to save the current tab or the selected tabs. Go to about:addons and select "Manage extension shortcuts" in the cogwheel menu to change it in Firefox. Go to chrome://extensions/shortcuts to change it in Chrome. The default save folder is the download folder configured in your browser, cf. about:addons in Firefox and chrome://settings in Chrome. See the extension help in the options page for more detailed information about the options and technical notes. FAQ See https://github.com/gildas-lormeau/SingleFile/blob/main/faq.md Release notes See https://addons.mozilla.org/firefox/addon/single-file/versions/ Known Issues and Troubleshooting See https://github.com/gildas-lormeau/SingleFile/blob/main/known-issues.md Command Line Interface (SingleFile CLI) You can save web pages to HTML from the command line interface. See here for more info: https://github.com/gildas-lormeau/single-file-cli. Integration with user scripts You can execute a user script just before (and after) SingleFile saves a page. For more info, see https://github.com/gildas-lormeau/SingleFile/wiki/How-to-execute-a-user-script-before-a-page-is-saved. File format comparison HTML Self-extracting ZIP MHTML Webarchive (Safari) HTML+folder Pages are saved as a single file ✓ ✓ ✓ ✓ HTML and styles are minified ✓ ✓ Unused HTML and styles are removed from files ✓ ✓ Binary resources are not encoded in base 64 ✓ ✓ ✓ Files are compressed ✓ Files can be viewed without installing any extension ✓ ✓¹ ✓² ✓³ ✓ Files can be viewed without running JavaScript ✓ ✓ ✓ ✓ Files can be unzipped to extract page resources ✓ n/a Files contains the text of the page (plain or formatted) which can be indexed ✓ ✓⁴ ✓ ✓ ✓ Footnotes: ¹ When using the "universal" self-extracting file format ² Only in Chromium-based browsers, and Internet Explorer ³ Only in Safari ⁴ An option must be enabled in the extension Projects using/compatible with SingleFile ArchiveBox - Open-source self-hosted web archiving: https://github.com/ArchiveBox/ArchiveBox htmls-to-datasette - Tool to index HTML files into a Sqlite database: https://github.com/pjamar/htmls-to-datasette Karakeep - Self-hostable bookmark-everything app with a touch of AI: https://karakeep.app KOReader - Document viewer primarily aimed at e-ink readers: https://github.com/koreader/koreader linkding - Bookmark manager that you can host yourself. It's designed be to be minimal, fast, and easy to set up using Docker: https://github.com/sissbruecker/linkding Linkwarden - Self-hosted collaborative bookmark manager to collect, read, annotate, and fully preserve what matters, all in one place: https://github.com/linkwarden/linkwarden obsidian-html-plugin - Plugin for reading HTML pages in Obsidian: https://github.com/nuthrash/obsidian-html-plugin Org-Dex.el - Emacs package designed to enhance Org-mode by integrating SingleFile CLI: https://github.com/nitincodery/org-dex.el Petal Cite Web Importer - Browser extension to save PDFs and capture web pages in Petal Cite: https:/
Read the full README on GitHub

What Hacker News says

113 sources
Another very useful project is SingleFile. I was ecstatic when I found out about its existence. https://github.com/gildas-lormeau/SingleFile "SingleFile helps you to save a complete web page into a single HTML file. SingleFile is a Web Extension (and a CLI tool) compatible with Chrome, Firefox (Desktop and Mobile), Microsoft Edge, Safari, Vivaldi, Brave, Waterfox, Yandex browser, and Opera."
In Hister: A private search engine for the pages you visit and the files you keep
I came here to mention https://github.com/gildas-lormeau/singlefile, I couldn't get it to do what I want so I built my own, for watched domains it pushes a copy of the serialized DOM to a local search database. For structured data, either extract and enrich in the browser or enrich on the server side. Would Hister support this basic workflow? I'd love to retire my own software. The next phase was going to move to a recording proxy.
In Hister – A private, full content search index that you control
I find SingleFile [0] to be a much more robust version of this. It strips out all the JavaScript too, but also packs everything into a single HTML file that is easy to transfer. Binary assets (like web fonts and images) are packed as base64 strings. They also offer a CLI powered by Puppeteer. [1] [0]: https://github.com/gildas-lormeau/singlefile [1]: https://github.com/gildas-lormeau/single-file-cli
In Show HN: Kage – Shadow any website to a single binary for offline viewing
I'd say that html+js suggestion of GP still holds, but with caveats. After all these years, HTML has everything needed for this, including images that can be embedded via the data URI scheme [1]. For example, I once adjusted an Object Pascal interactive program (target: Windows/Win32) for the browser target (FreePascal compiler has the JS target). An intermediate result was a bunch of files that worked locally on desktop but struggled on mobile. With a little help from the SingleFile extension [2], I ended up with a single HTML file containing all functionality and content. It worked great, for example, in MiXplorer's internal HTML viewer. I can't recall the exact details, but the file:/// protocol still had issues in Chrome, Firefox, or both. Anyway, preparing a local address correctly with a keyboard is a challenge so let's just assume
Read the rest
that having capable file managers running local html files is enough Sure, to make this manageable, you need good tools that handle all sides of the task. But at least in theory, the format is fully capable. My only global issue was that the state for locally run HTML files is a kind of ephemeral entity, but for interactive multimedia files, you may consider this obstacle small. [1] https://en.wikipedia.org/wiki/Data_URI_scheme [2] https://github.com/gildas-lormeau/SingleFile
In An SVG is all you need
WebRecorder [0] is the best implemention of this that I've tested. It runs as an extension in your browser, intercepting HTTP streams, so as long as you open a page in your browser the data is captured to reproduce it exactly. It outputs WARC files that are (in theory) compatible with the rest of the web archiving ecosystem, and has a WARC explorer interface to browse captured archives. For pages with dynamic content that can't be trivially reproduced by their HTTP streams— E.G., opening the archive triggers GETs with a mismatched timestamp, even if the file it's looking for is in the WARC under a different URI— There's always SingleFile [1], and Chromium's built-in MHTML Ctrl+S export, which "bake" the content into a static page. 0: https://chromewebstore.google.com/detail/webrecorder-archive... 1: https://github.com/gildas-lormeau/Singl
Read the rest
In Perkeep – Personal storage system for life
The provider could create a snapshot at receive and/or open (fetching these potentially mutable asset dependencies within a message), similar to what https://github.com/karakeep-app/karakeep and https://github.com/gildas-lormeau/SingleFile do with url bookmarks, and attach it (or otherwise associate it) to the message. Optional of course. The benefit of this is senders couldn't treat it as a read receipt, because the provider can state "Our infra performs this operation for the user for immutability purposes" similar to other email operations that proxy these requests for privacy purposes.
In Email immutability matters more in a world with AI
OP's workflow might be much more efficient with use of https://github.com/gildas-lormeau/SingleFile/ It can handle most of what they describe for things like private/paywalled pages or media enclosures or completely self-contained archives that live locally or easy to use or editing before saving or ensuring lazy-loaded images are there, you can view it immediately to check for breakage, it automatically works with adblock and NoScript and when you delete stuff in the DOM using the picker so they can clean each page very efficiently (create a bunch of rules in your adblock by picking elements like in ublock, so you never have to do those again, then quickly mouse any remainder), and it stores the final DOM so you can interact with stuff to make sure it is visible or archived. So what I do ( https://gwern.net/archiving#preemptive-local-arc
Read the rest
hiving ) is I have a script which calls SingleFile-CLI in a headless Chrome browser to automatically archive everything, and then opens up the original URL + snapshot in my normal Firefox, and look at the snapshot then original. If the snapshot looks good, I simply close the 2 tabs after a few seconds and I'm done; if the snapshot looks bad, then I look at the original and make edits: use Ublock Origin to define any necessary rules (assuming the page isn't cleaned up by all the rules I previously defined), make any minor tweaks to the DOM, and then SingleFile-browser-extension it manually. If you use enough adblock rules, then you get a similar effect to the 'templates' described, since it looks like OP is mostly just trying to remove as much as possible. But since you're archiving the final DOM, you can do anything you like. Something I've done a few times is opening up multiple pages and copy-pasting the key DOM node from each of them into the first one, to create a single consolidated master page, in a way which is a lot easier & more reliable than messing around with the serialized HTML in Emacs. You can also post-process them. (Because we use these local archives for 'previews' on Gwern.net, and a fully static self-contained HTML page can easily be 100MB+ with all its fonts and images and stuff, we take the SingleFile snapshots and for the large ones, we 'split' them back up, so loading the .html file doesn't necessarily load everything else: https://github.com/gwern/gwern.net/blob/master/build/deconst... And then you can save a lot of space by running standard optimization tools on the split-out files, eg OptiPNG on the revealed PNGs will save gigabytes of space because so many people fail to do the standard image optimizations.) Compared to "it typically takes me a few minutes to save a page", I handle the majority of pages in a few seconds, and even the nastiest page where I have to delete a lot is usually like a minute. And since I do like 10 URLs a day, this is quite manageable at scale. (I'm up to >15k snapshots, although an unknown fraction are from an initial bulk archiving so may not be of high quality.)
In Building a personal archive of the web, the slow way
* I really just want pocket as a bookmarking tool than the web reader. The web reader works, but it's very bad in cases with a lot of embeds/code snippets. If a site is pay-walled, only a small section is available in Pocket. I usually open the actual page in this case than read in pocket. * Some links I added a long time ago are permanently lost because the original page got taken down. It'd be much better if a permanent snapshot was taken(including all the images, this is pretty easy to do with something like https://github.com/gildas-lormeau/SingleFile) of the page and is available even if the original page is lost.
In Ask HN: Good Pocket Alternative

Showing the 15 most recent of 113 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.