• Stars
    star
    14,584
  • Rank 2,045 (Top 0.05 %)
  • Language
    JavaScript
  • License
    GNU Affero Genera...
  • Created over 14 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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

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

Demo.SingleFile.mp4

Install

SingleFile can be installed on:

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 with _ in file names: ~, +, \, ?, %, *, :, |, ", <, >
  • 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.

SingleFileZ

SingleFileZ is a fork of SingleFile that allows you to save a webpage as a self-extracting HTML file. This HTML file is also a valid ZIP file which contains the resources (images, fonts, stylesheets and frames) of the saved page. This ZIP file can be unzipped on the filesystem in order, for example, to view the page in a browser that would not support pages saved with SingleFileZ.

More info here: https://github.com/gildas-lormeau/SingleFileZ

File format comparison

HTML (SingleFile) HTML (SingleFileZ) MAFF 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 resources and view pages n/a
Files contains the text of the page (plain or formatted) which can be indexed ✓⁴

Footnotes:

¹ A switch must be passed from the command line in Chromium-based browsers, and an option must be enabled in Safari.

² 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 :)

More Repositories

1

zip.js

JavaScript library to zip and unzip files supporting multi-core compression, compression streams, zip64, split files and encryption.
JavaScript
3,360
star
2

SingleFileZ

Web Extension to save a faithful copy of an entire web page in a self-extracting ZIP file
JavaScript
1,813
star
3

JSONVue

Fork of JSONView for Chromium-based browsers
JavaScript
1,586
star
4

single-file-cli

CLI tool for saving a faithful copy of a complete web page in a single HTML file (based on SingleFile)
JavaScript
571
star
5

SingleFile-MV3

SingleFile version compatible with Manifest V3. The future, right now!
JavaScript
319
star
6

single-file-companion

JavaScript
116
star
7

Scrapbook-for-SingleFile

PageArchiver (previously called "Scrapbook for SingleFile") is a Chrome extension that helps to archive pages for offline reading
JavaScript
87
star
8

single-file-companion-lite

SingleFile Companion Lite
TypeScript
66
star
9

single-filez-cli

JavaScript
37
star
10

zip-manager

Progressive Web App for creating, reading, and editing zip files
JavaScript
37
star
11

single-file-export-chat

Extension to export MS Teams chats
JavaScript
33
star
12

PageEdit

WYSIWYG HTML editor chrome extension
JavaScript
29
star
13

SingleFile-Safari-Extension

Source code of SingleFile for Safari
JavaScript
28
star
14

LazyLoadify

Web Extension to force the lazy loading of non-displayed resources (i.e. image, frame, video and audio contents)
JavaScript
28
star
15

PrettyPrint

A chrome extension to pretty print JavaScript and CSS
JavaScript
24
star
16

single-file-core

JavaScript
23
star
17

BugMeNot-Lite

Fill automatically login and password fields when a registration form is displayed using bugmenot accounts.
JavaScript
14
star
18

Polyglot-HTML-ZIP-PNG

Learn how to create HTML/ZIP/PNG polyglot files in JavaScript!
JavaScript
14
star
19

SingleFile-MAFF2HTML

Convert MAFF to HTML with SingleFile
JavaScript
13
star
20

ZipTabs

Chrome extension to archive opened tabs in a zip file
JavaScript
12
star
21

yabson

YaBSON is a library allowing schemaless binary-encoded parsing/serialization of JavaScript data with a generator-based implementation
JavaScript
12
star
22

simple-cdp

Lightweight JavaScript library to interact with Chromium-based browsers via the Chrome DevTools Protocol
JavaScript
10
star
23

SingleFile-Archives

Pages saved with SingleFile
HTML
7
star
24

SingleFile-tools

JavaScript
5
star
25

single-filez-core

JavaScript
5
star
26

Chrome-extensions-presentation

Slides et exemple d'extension de la présentation donnée au BreizhCamp 2011 (Slides and sample extension from presentation I gave at BreizhCamp 2011) - http://www.breizhcamp.org/
JavaScript
5
star
27

CKEditor-extension-demo

Simple demo of CKEditor integration in a chrome extension
JavaScript
4
star
28

SingleFile-Demos

Demos of SingleFile and SingleFileZ
4
star
29

gildas-lormeau.github.io

https://gildas-lormeau.github.io/
HTML
2
star
30

misc-demos

2
star