utility

Offline Web Packager

Analyze saved HTML, ZIP, or web-page folders and package supported static pages into one self-contained HTML file.

Local processing
About your filesFiles and content selected in this tool are processed in your browser and are not uploaded to a Browser Kitty backend.
Operation demo See the basic workflow in a short video.

About this tool

Offline Web Packager first analyzes whether a saved web page can actually be combined into one HTML file. When the structure is within the v1 scope, it embeds supported local CSS, classic JavaScript, images, favicon, fonts, and static audio/video into a standalone HTML file. Input can be a single HTML file, a ZIP archive, or a folder containing a saved page.

The tool reports missing files, external resources, and runtime-loading patterns instead of exporting a broken result as success. Input files stay in the browser, input HTML/JavaScript is not executed during analysis, and the generated output is checked again for unresolved local references before normal saving.

Good for

  • Keep a saved web page as one file instead of a folder of HTML, images, and CSS
  • Make a static page set easier to move between computers
  • Check whether a ZIP containing a static web page can be packaged before creating output
  • Analyze and package saved page files in the browser without uploading them to a processing service

What it can do

Key capabilities available in this tool.

How to use

  1. Open the tool and add an HTML file, ZIP archive, or folder containing the saved page. Drag and drop is also supported.
  2. If multiple HTML files are present, review the detected start HTML and change it when necessary.
  3. Review missing files, external references, unsupported structures, filename case mismatches, and other analysis findings.
  4. When the result is Can be combined, choose Create one HTML file.
  5. Review the post-generation verification for unresolved local references or missed embedded dependencies.
  6. When the output passes the supported checks, save the HTML file to the device.

Supported

  • Input: HTML file, ZIP archive, or folder, with default safeguards of 50 MB per file, 100 MB total input, and 2,000 files.
  • Packaging scope: HTML, external local CSS, classic local JavaScript, CSS @import / url(...), HTML srcset, images, WOFF / WOFF2 fonts, favicon, and size-limited static audio/video.
  • Path resolution: ../, root-relative paths, query/fragment suffixes, URL-encoded filenames, and nested CSS references.
  • ZIP: STORE / DEFLATE through browser APIs, rejecting path traversal, absolute paths, symlinks, encryption, unsupported compression, multi-disk archives, ZIP64, duplicate paths, size/CRC inconsistencies, excessive expanded size, and suspicious compression ratios.
  • Browsers: designed for current Chrome, Edge, Firefox, and Safari with capability checks for folder input, drag and drop, DEFLATE extraction, and saving.
  • Runtime networking: the Offline Web Packager app itself uses no third-party runtime libraries, CDN, external API, analytics, or telemetry and uses CSP connect-src 'none'.

Limitations and notes

  • v1 packages supported static page resources; it is not a general JavaScript bundler or a build environment for React, Vue, Svelte, or similar source projects.
  • Runtime file loading through fetch/XMLHttpRequest, ES Modules, dynamic import(), import.meta.url, Web Worker/SharedWorker, WASM loaders, and Service Worker/PWA structures are detected but not automatically converted.
  • Local iframes, merging multi-page sites, npm package resolution, and automatic downloading of external URLs are not supported.
  • Static analysis cannot prove that arbitrary HTML or JavaScript is safe. This tool is not a malware scanner.
  • Runtime networking in the generated HTML depends on the original HTML/JavaScript. Local processing by the packager does not guarantee that generated output will never access the network.
  • Dynamically constructed JavaScript URLs and similar patterns may not be fully determinable through static analysis alone.
  • Large inputs can affect browser memory and responsiveness, and folder input, ZIP extraction, and saving capabilities vary by browser.

Frequently asked questions

Can it turn any web page into one HTML file?

No. v1 targets supported static pages. It can embed local CSS, classic JavaScript, images, fonts, and similar resources, while ES Modules, Workers, WASM loaders, Service Workers, runtime fetches, and other unsupported patterns are reported rather than automatically converted.

Can I load a ZIP or folder instead of a single HTML file?

Yes. You can add an HTML file, ZIP archive, or folder containing a saved web page. When multiple HTML files exist, you can review and change the detected start HTML.

Are the input web-page files uploaded to a server?

No. Added HTML, ZIP archives, images, JavaScript, fonts, and other files are read and analyzed in the browser and are not uploaded by Offline Web Packager for processing.

Does the tool execute the input HTML or JavaScript while analyzing it?

No. Input HTML and JavaScript are treated as data. The app does not automatically preview input in an iframe, call eval, or register an input Service Worker during analysis.

Will the generated HTML always work fully offline?

It depends on the source page. Local dependencies can be embedded, but if the original HTML or JavaScript accesses external URLs, the generated file may still use the network at runtime. The packager's local processing and the generated file's networking behavior are separate.

Is opening a ZIP in the tool safe?

The ZIP structure is checked before extraction and rejects path traversal, absolute paths, symlinks, encryption, ZIP64, duplicate paths, CRC inconsistencies, excessive expanded size, and related hazards. It is not a malware scanner and does not certify the HTML or JavaScript inside a ZIP as safe.

Can I use the saved standalone app offline?

Yes. The root offline-web-packager.html is a standalone file with runtime networking blocked. Save it and open it directly in a supported browser to use the packager itself without a network connection.

Offline version and source code

The root-level offline-web-packager.html is a standalone app with CSP connect-src 'none'. Save it and open it directly in a supported browser to analyze HTML, ZIP archives, or folders and package supported static pages without a network connection.

View source on GitHub