utility

Offline Web Packager

保存したHTML・ZIP・Webページ一式を解析し、対応範囲の静的ページを1つの自己完結HTMLへまとめます。

ローカル処理
ファイルについてこのツールで選択したファイルや入力内容は、Browser Kittyのバックエンドへアップロードせずブラウザ内で処理します。
操作デモ 実際の操作の流れを短い動画で確認できます。

このツールについて

Offline Web Packagerは、保存したWebページを「本当に1つのHTMLへまとめられるか」先に解析し、v1の対応範囲であればローカルCSS、通常JavaScript、画像、favicon、フォント、静的音声・動画などを埋め込んだ単一HTMLを作成するツールです。HTML単体だけでなく、ZIPやWebページ一式のフォルダも読み込めます。

必要ファイルの不足や外部リソース、実行時に別ファイルを読む構成などを検出し、無理に壊れたHTMLを書き出さない設計です。入力ファイルはブラウザ内で扱い、解析中に入力HTMLやJavaScriptを実行しません。生成後もローカル参照の取り込み漏れを再検査してから保存できます。

こんなときに便利

  • 保存したWebページを画像やCSSのフォルダごとではなく1ファイルで保管したい
  • HTMLと関連ファイル一式を他のPCへ持ち運びやすい形にまとめたい
  • ZIPでもらった静的Webページが単一HTML化できる構成か先に確認したい
  • 外部サービスへWebページ一式をアップロードせずブラウザだけで解析・変換したい

できること

このツールで利用できる主な機能です。

使い方

  1. ツールを開き、HTMLファイル、ZIP、またはWebページ一式のフォルダを追加します。Drag & Dropも利用できます。
  2. HTMLが複数ある場合は、自動検出された開始HTMLを確認し、必要なら変更します。
  3. 解析結果で、必要ファイルの不足、外部参照、非対応構成、大文字小文字の不一致などを確認します。
  4. 「1つのHTMLにまとめられます」と判定された場合は「1つのHTMLを作成」を実行します。
  5. 生成後の再検査で未解決のローカル参照や取り込み漏れがないか確認します。
  6. 問題がなければ「HTMLを保存」で端末へ保存します。

対応範囲

  • 入力: HTMLファイル、ZIP、フォルダ。1ファイル50MB、入力合計100MB、最大2,000ファイルを初期上限とします。
  • 埋め込み対象: HTML、外部ローカルCSS、通常のローカルJavaScript、CSS @import / url(...)、HTML srcset、画像、WOFF / WOFF2フォント、favicon、サイズ上限内の静的音声・動画。
  • パス解決: ../、ルート相対、query / fragment、URLエンコード、CSSの階層参照など。
  • ZIP: STORE / DEFLATEをブラウザ標準APIで処理し、path traversal、絶対パス、シンボリックリンク、暗号化、未対応圧縮、分割ZIP、ZIP64、重複パス、サイズ / CRC不整合、展開後サイズ超過、極端な圧縮率を拒否します。
  • ブラウザ: 現行Chrome、Edge、Firefox、Safariを主対象とし、フォルダ入力、Drag & Drop、DEFLATE展開、保存機能は利用可能なブラウザ機能を確認して動作します。
  • 実行時通信: Offline Web Packager本体は第三者ランタイムライブラリ、CDN、外部API、Analytics、Telemetryを使わず、CSPはconnect-src 'none'です。

制限・注意点

  • v1は対応範囲の静的ページをまとめるツールで、汎用JavaScript BundlerやReact / Vue / Svelte等のビルド環境ではありません。
  • fetch / XMLHttpRequestによる実行時ファイル読み込み、ES Modules、dynamic import()、import.meta.url、Web Worker / SharedWorker、WASM loader、Service Worker / PWAは検出しますが自動変換しません。
  • local iframeや複数ページサイトの統合、npm package resolution、外部URLからの自動ダウンロードには対応しません。
  • 静的解析だけで任意のHTML / JavaScriptが安全であることは保証できません。このツールはマルウェアスキャナーではありません。
  • 生成HTMLの実行時通信は元のHTML / JavaScriptに依存します。Offline Web Packager本体がローカル処理でも、生成物が外部通信しないことを保証するものではありません。
  • JavaScriptが動的にURLを組み立てる場合など、静的解析だけでは断定できない構成があります。
  • 大きな入力はブラウザメモリや応答性に影響し、フォルダ入力・ZIP展開・保存の対応状況はブラウザによって異なります。

よくある質問

どんなWebページでも1つのHTMLにできますか?

いいえ。v1は対応範囲の静的ページ向けです。ローカルCSS、通常JavaScript、画像、フォントなどは埋め込めますが、ES Modules、Worker、WASM loader、Service Worker、実行時fetchなどは検出して理由を表示し、自動変換しません。

HTMLだけでなくZIPやフォルダも読み込めますか?

はい。HTMLファイル、ZIP、Webページ一式のフォルダを追加できます。複数HTMLがある場合は開始HTMLを確認・変更できます。

入力したWebページはサーバーへ送信されますか?

いいえ。追加したHTML、ZIP、画像、JavaScript、フォントなどはブラウザ内で読み込み・解析し、Offline Web Packagerから処理のために外部サーバーへ送信しません。

入力したHTMLやJavaScriptは解析中に実行されますか?

実行しません。入力HTMLやJavaScriptはデータとして扱い、解析中にiframe表示、eval、入力側Service Workerの登録などは行いません。

生成したHTMLは完全オフラインで動きますか?

元ページの構成によります。ローカル依存を取り込めても、元のHTML / JavaScriptが外部URLへアクセスする処理を含む場合、生成HTMLも実行時に通信する可能性があります。生成物の通信可否とOffline Web Packager本体のローカル処理は別です。

ZIPを開いても安全ですか?

ZIPは展開前に構造を確認し、path traversal、絶対パス、シンボリックリンク、暗号化、ZIP64、重複パス、CRC不整合、展開後サイズ超過などを拒否します。ただし、ZIP内のHTMLやJavaScriptが安全であることを保証するマルウェア検査ではありません。

保存した単一HTML版はオフラインで使えますか?

はい。ルートのoffline-web-packager.htmlは単一HTMLで、実行時外部通信を行わない構成です。保存して対応ブラウザで直接開けば、アプリ本体はネット接続なしで利用できます。

オフライン版・ソースコード

リポジトリ直下のoffline-web-packager.htmlは単一HTMLとして利用でき、CSPはconnect-src 'none'です。保存して対応ブラウザで直接開けば、HTML・ZIP・フォルダの解析と対応静的ページの単一HTML化をネットワークなしで実行できます。

GitHubでソースを見る