SingleFile

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

15731
1018
JavaScript

SingleFile

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. It helps you to save a complete web page into a single HTML
file.

Table of Contents

Demo

https://user-images.githubusercontent.com/396787/156664907-cc458e35-f41b-45ca-91eb-372213812b44.mp4

Install

SingleFile can be installed from the store of:

You can also download the zip file
(https://github.com/gildas-lormeau/SingleFile/archive/master.zip) of the project
and install it manually by unzipping it somewhere on your disk and following
these instructions:

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/master/faq.md

Release notes

See https://addons.mozilla.org/firefox/addon/single-file/versions/

Known Issues

  • All browsers:
    • For security reasons, you cannot save pages hosted on
      https://chrome.google.com, https://addons.mozilla.org and some other Mozilla
      domains. When this happens, 🛇 is displayed on top of the SingleFile icon.
    • For
      security reasons,
      SingleFile is sometimes unable to save the image representation of
      canvas and
      snapshots of
      video elements.
    • The last saved path cannot be remembered by default. To circumvent this
      limitation, disable the option “Misc > save pages in background”.
    • The following characters are replaced by their full-width equivalent
      symbols in file names: ~, +, ?, %, *, :, |, ", <, >, . The
      replacement characters are respectively: ~, +, ?, %, *, :, |, ", <, >, \.
      Other invalid charcaters are replaced by _. This is done to maintain
      compatibility with various OSs and file systems. If you don’t need that
      level of compatibility and know what you are doing, you can change the
      list of forbidden characters and the replacement characters in the Hidden
      options(https://github.com/gildas-lormeau/SingleFile/wiki/Hidden-options).
  • Chromium-based browsers:
    • You must enable the option “Allow access to file URLs” in the extension page
      to display the infobar when viewing a saved page, and to save or to annotate
      a page stored on the filesystem.
    • If the file name of a saved page looks like
      “56833935-156b-4d8c-a00f-19599c6513d3.html”, disable the option “Misc > save
      pages in background”. Reinstalling the browser may also fix this issue. You
      can find more info about this bug
      here.
    • Disabling the option “File name > open the “Save as” dialog to confirm the
      file name” will work if and only if the option “Ask where to save each file
      before downloading” is disabled in chrome://settings/downloads.
  • Firefox:
    • The “File name > file name conflict resolution” option does not work if set
      to “prompt for a name”
    • Sometimes, SingleFile is unable to save the contents of sandboxed iframes
      because of this bug.
    • When processing a page from the filesystem, external resources (e.g. images,
      stylesheets, fonts etc.) will not be embedded into the saved page. You can
      find more info about this bug
      here. This bug has
      been closed by Mozilla as “WontFix”. But there is a simple workaround
      proposed
      here.
  • Waterfox Classic
    • User interface elements displayed in the page (progress bar, logs panel)
      won’t be displayed unless dom.webcomponents.enabled is enabled in
      about:config.
    • When opening pages saved with the option “Images > group duplicate images
      together” enabled, some duplicate images might not displayed. It is
      recommended to disable this option.

Troubleshooting unknown issues

Please follow these steps if you find an unknown issue:

  • Save the page in incognito.
  • If saving page in incognito did not fix the issue, reset SingleFile options.
  • If resetting options did not fix the issue, restart the browser.
  • If restarting the browser did not fix the issue, try to disable all other
    extensions to see if there is a conflict.
  • If there is a conflict then try to determine against which extension(s).
  • Please report the issue with a short description on how to reproduce it here:
    https://github.com/gildas-lormeau/SingleFile/issues.

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

Privacy Policy

See https://github.com/gildas-lormeau/SingleFile/blob/master/privacy.md

Contributors

Code derived from third party projects

Icons

License

SingleFile is licensed under AGPL. Code derived from third-party projects is
licensed under MIT. Please contact me at gildas.lormeau <at> gmail.com if
you are interested in licensing the SingleFile code for a commercial service or
product.

Suggestions are welcome 😃