仕組み

ファイルは、いま使っているブラウザが開きます。どこにも送られません。

実際に走っているものを、走る順に。最後に、一分もかからない確認方法を書いています。

ファイルは読み込むだけ、送信はしない

ファイルを置くと、ページは File オブジェクトを受け取り、File API でこのタブのメモリに読み込みます。それを運ぶ通信はありません。行き先が無いからです。このサイトは CDN 上の静的ファイルだけで、受け取るサーバー側のコードがありません。

  • バイト列は File と Blob、読み取りは FileReader と arrayBuffer
  • ドラッグ&ドロップ、ファイル選択、貼り付け、どれも同じオブジェクトを渡す
  • fetch・アップロード・form action・API パスがページに現れた時点でビルドが落ちる

デコードはタブの中

カメラやデザインソフトが書き出す形式は、ブラウザ単体では開けません。だからデコーダーをページと一緒に配り、その場で動かします。

  • HEIC・HEIF:libheif の JavaScript ビルドを、当サイト自身が配信
  • PDF:PDF.js。PDF 内の一部の画像コーデックで WebAssembly を使います
  • SVG 化は ImageTracer、QR の読み取りは jsQR、PDF の書き出しは pdf-lib
  • どのライブラリもビルド時に取得してこのドメインから配るので、外部 CDN に訪問が見えることはありません

処理は canvas で、しかも worker の中で

リサイズ・圧縮・変換はすべて canvas の処理です。Web Worker の中で走らせているので、大きな写真でも目の前のページは固まりません。

  • worker 内の OffscreenCanvas が一枚ずつ描画し、書き直す
  • convertToBlob が JPG・PNG・WebP を作る。画質はあなたが決める
  • PNG の圧縮は、当サイト用に書いた median cut のパレット処理。既存ライブラリではありません
  • ファイルに関するもの — 名前・サイズ・中身・そこから導けるもの — は一切計測も送信もしません

結果もここで作られる

ダウンロードされるのは、このタブで組み立てた Blob を object URL としてブラウザに渡したものです。他のどこにも存在したことがありません。

  • 一つずつ、またはタブの中で作った ZIP でまとめて
  • タブを閉じれば結果は消えます。後から取りに戻れる形では何も保存しません

自分で確かめる

このページの言い分を信じる必要はありません。方法は二つ、どちらも一分かかりません。

  • DevTools の Network タブを開いてから変換する。ファイルを運ぶ通信は出て行きません。
  • ページを読み込んだあとネットワークを切り、そのまま使う。問題なく動きます。
  • ソースを読む。ここで動いているものは、そのまま開いて読める素のファイルです。

端末内で処理する道具と、アップロードする道具

どちらも普通にあるもので、どちらも正当です。違いはファイルがどこへ行くか。そしてその違いが、何を信じる必要があるかを決めます。

端末の中サーバーへ送る
ファイルの行き先タブの中に留まるサーバーへ渡る
保存期間保存するものが無い多くは一定時間後に削除
オフラインで使えるか読み込み後なら使える使えない
サイズの上限端末のメモリサービスが許す範囲
何を信じることになるかページの挙動。自分で見られるサービスの説明

どの道具も、同じ決まり

すべてこの仕組みで動きます。有料版もアカウントも、出ていくファイルもありません。

画像PDF変換テキストQRコード計算時間日付カラー開発金融健康すべての道具