需手动下载 zip 并解压后以「加载已解压的扩展程序」方式安装,不能直接从商店安装;README 未说明具体功能细节,需参考主项目 SingleFile 文档
SingleFile-MV3
gildas-lormeauAGPL-3.0活跃维护把网页完整保存成单个 HTML 文件的浏览器扩展,兼容 Manifest V3,适合离线阅读、存档和 OSINT 取证。
SingleFile version compatible with Manifest V3
v1.36.0发布于 2026-11-06 22:09 UTC614star +2 / 7 天67fork同步于 2026-11-10 17:57 UTC
下载 https://github.com/gildas-lormeau/SingleFile-MV3/archive/master.zip 并解压到本地磁盘,然后在 Chrome 或 Edge 中按官方文档加载已解压的扩展 硬件要求按 README 说明
README 未说明
SingleFile 的 Manifest V3 兼容版本,用于把完整网页保存成单个 HTML 文件
把网页完整保存成单个 HTML 文件的浏览器扩展,兼容 Manifest V3,适合离线阅读、存档和 OSINT 取证。
核心能力
- 兼容 Manifest V3 的浏览器扩展版本
- 手动加载解压后的扩展目录即可安装
- 支持 Chrome 与 Microsoft Edge 浏览器
容易踩的坑
内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README
- v1.36.0最新正式版2026-11-06 · 2026-11-06 22:09 UTC
Changes
- Added the option "Deferred content > keep the emulated screen size during the capture" (
loadDeferredContentKeepEmulatedScreenSize, off by default). While loading the deferred content, SingleFile makes the page believe the screen is as tall as the whole document and restores the real size before reading the page. With this option, the emulated size is kept until the page has been saved, so pages that unmount the content scrolled out of view (e.g. the timelines of x.com) are saved whole, at the cost of saving elements sized from the screen height (e.g. full-screen covers) at the emulated size (#2048) - The tooltips of the two cut buttons of the annotation editor now say what the buttons do: "Remove the element under the mouse (red outline)" and "Keep the element under the mouse and remove everything else (green outline)"; the new option label and the tooltips are translated in all the languages
- The default
Acceptheader of image requests starts withimage/jxl, like the one of browsers supporting JPEG XL
Fixes
- Saving a selection on pages laid out with CSS grids using
autorows (e.g. the job pages of LinkedIn) no longer produces an empty page showing only the background color: the elements located before the selection are hidden withvisibility: hiddenand an empty box instead ofdisplay: none, so the selected content keeps its place in the layout (#1932, single-file-core 1.10.1) - SVG sprite fragments referenced from CSS
url()values (e.g.mask-image: url(sprite.svg#icon)) and from image attributes (e.g.<img src="sprite.svg#icon">) are cut out of the sprite and saved on their own, like the ones referenced from<use href>; the whole sprite used to be saved in their place and displayed as a grid of every icon (single-file-core 1.10.0) - The
sandboxattribute of saved frames no longer carries theallow-presentationtoken, which Safari rejects with a console warning, nor a duplicatedallow-popupstoken (single-file-core 1.10.0) - The
xmlnsattribute of extracted sprite fragments is declared in the XMLNS namespace, so an XML serializer accepts it (single-file-core 1.10.0) - Updated single-file-core to 1.10.1
- Added the option "Deferred content > keep the emulated screen size during the capture" (
- v1.35.02026-11-04 · 2026-11-04 18:07 UTC
查看更新说明
Changes
- Vietnamese translation (#2045 by @dinhkarate)
- Help page: the paragraph about removing contents in the annotation editor explains the red and green dotted outlines (the element that will be removed, or the element that will be kept while everything else is removed) and that the Tab key moves the outline to the enclosing element without moving the mouse
- Core 1.9.1: the HTML serializer writes processing instructions as
<?target data?>and CDATA sections as text instead of the word "undefined"
Fixes
- Two startup races in the background script, visible as
TypeError: undefined is not an object (evaluating 'de.get')and(evaluating 'e[n]')in Safari's extension pane (#2047 by @aqres): a content script initializing while the background was still reading its settings left that tab without auto-save until its next navigation, and a tab replaced before the first save threw in the tab data handler - Safari and MV2 builds: the options page could not read or save the external capture permissions ("Unauthorized sender" errors), because the browser polyfill did not expose
runtime.id(#2047) - The localized help page is chosen from the list of available translations instead of probing the extension resources, which Safari reported as "Unable to find help_xx.html" errors (#2047)
- Core 1.9.1:
groupDuplicateStylesheetsalso replaces the first occurrence of a repeated inline stylesheet with a placeholder; the origin of each group was kept in full next to the shared copy in the head, so a page built from components that all adopt the same stylesheet carried it twice - Core 1.9.1:
removeUnusedGlyphskeeps the outlines of "X" and "x" in every subset font; CoreText derives the alignment zones it snaps small text to from these two glyphs, so a font without them rendered every character slightly lower and lighter on non-Retina screens on macOS
- v1.34.02026-11-02 · 2026-11-02 20:32 UTC
查看更新说明
Changes
- The options page displays a warning when the extension is not allowed to access local files, with the steps to allow it: "Access local files on your computer" in the permissions of the extension since Firefox 153, where it is off by default, and "Allow access to file URLs" in Chromium-based browsers. Without it, the infobar is not displayed on saved pages and pages opened from the filesystem cannot be saved. The help page and the FAQ describe it too (#2014)
- New hidden option
embeddedScript(core 1.9.0), set from the options editor: JavaScript code inserted at the end of the saved page, kept even though the scripts of the page are removed. Combined with a custom stylesheet that keeps hidden elements, it lets a user restore the tabs of a saved page, for example - Help page: the examples of the time template variables use ":" instead of "_" (#2041 by @lstngr), and the ISO variables are documented as UTC (#2042)
- Translations: Russian reviewed (#2039 by @solokot), Swedish reviewed (#2040 by @NickWick13), German label of the proof of existence option fixed, missing translations and spelling mistakes fixed in several locales
Fixes
- Filename templates (core 1.8.1): the spaces written in the template are kept instead of being collapsed into a single space; tabs, line breaks and other whitespace characters are still replaced with spaces, one for one (#2042)
- Filename templates (core 1.8.1): a substitution rule that removes characters, and the "replace emojis with text" option, no longer leave two spaces around the removed character or a space before the file extension
- Filename templates (core 1.8.1): a folder name ending with a dot no longer loses its separator ("docs./file" was saved as "docs._file"), a ".." segment is removed as a whole segment instead of wherever "../" appears ("Loading.../page" was saved as "Loading.page"), and trailing dots and spaces are removed from every folder name; the filename preview on the options page follows the same rules
- A missing image is no longer requested a second time when its
currentSrcis the same URL as itssrc, which doubled the network wait on slow or unavailable images (gildas-lormeau/single-file-core#11 by @pirate)
- v1.33.02026-10-28 · 2026-10-28 13:25 UTC
查看更新说明
Changes
- Options synchronization: a profile larger than the 8 KB per-item limit of the browser's sync storage is now split over several items and reassembled on read, so a long filename replacement table no longer prevents importing or synchronizing settings (#2038)
- Filename templates (core 1.8.0): the page text variables decode HTML character references a second time, so a site that escapes its title twice no longer leaves
&in the filename (#2036)
Fixes
- Importing settings or enabling synchronization no longer deletes the current settings when the write to sync storage fails; the error is now shown on the options page and the synchronization box is left unticked (#2038)
- The proof of existence hash (Woleet) is computed on the final file when the self-extracting archive is enabled, so the saved file can be verified; it used to be computed on the HTML before packaging and never matched the file on disk (#2028)
- Filename templates (core 1.8.0):
[Nch]now keeps N characters, counted by code point, instead of behaving like[N](#2037)
Notes
- A profile split over several sync items is read as empty by an older version of the extension on another device until that device updates
- v1.32.02026-10-27 · 2026-10-27 15:30 UTC
查看更新说明
Changes
- New option "remove unused glyphs" in the Fonts section (experimental, off by default): the glyphs the page does not draw are removed from the embedded TrueType, WOFF and WOFF2 fonts. The characters kept are those the page text, the CSS-generated content, the list markers and the
text-transformvalues draw, plus their canonical decompositions and compositions, their bidi mirrors and their variation selectors, so a font that shapes them with ligatures or marks keeps the glyphs it needs. A font is left untouched when it is a CFF or a variable font, when it declares aMATHtable, when the rewritten font is not smaller, or when the browser fails to load it. WOFF2 fonts need Brotli in the browser's Compression Streams, available in Firefox 147 and later; in Chrome they are kept as they are. On the sites tested the saved page shrinks by 3% to 30%. - New
%titlecasetemplate function for filenames: the first letter of every word is uppercased, the other letters are left as typed (#2026). - Whitespace runs in a filename are collapsed to a single space after the replacement rules are applied, so a removed character no longer leaves a double space behind (#2025).
- The labels of the options page start with a capital letter (#2013).
Fixes
- The filename replacement rules now match characters outside the Basic Multilingual Plane, so a rule written to remove emojis removes every one of them (#2025).
- The repair of invalid nesting no longer drops the text between displaced siblings: a sentence built as
<div>blocks inside a<p>, one per word, separated by spaces, was saved without its spaces (#1935). - A page holding a very large amount of text no longer fails with
RangeError: Invalid array lengthin the "remove unused fonts" step (#2029). - A stylesheet holding large embedded resources no longer costs a multiple of their size in memory: the
url()codec of the vendored css-tree built every value one character at a time, and the syntax tree kept every intermediate node alive. Contributed by @pirate in single-file-core#10. - A stylesheet modified by the page's scripts no longer loses the rules under a media or container query whose value Firefox serializes as
infinity * 1px, the way styled-components writes an open-ended last breakpoint. - A styled XML document no longer hangs the capture.
- Text can be selected again in the options page on Firefox (#2027).
- The editor configures the path of its zip worker explicitly, so the zip.js 2.8 update no longer makes it fall back to the main thread.
- New option "remove unused glyphs" in the Fonts section (experimental, off by default): the glyphs the page does not draw are removed from the embedded TrueType, WOFF and WOFF2 fonts. The characters kept are those the page text, the CSS-generated content, the list markers and the
用户点评
登录用户的真实使用记录,可按版本和硬件筛选共 0 条
还没有人点评。第一个说出真实体验的人最有价值。
SingleFile MV3
This is the new version of SingleFile compatible with the Manifest V3.
Manual install
Download the zip file (https://github.com/gildas-lormeau/SingleFile-MV3/archive/master.zip) of the project and install it manually by unzipping it somewhere on your disk and following these instructions: