A single-file local image/video viewer and converter with HEIC, PDF, and ICO support — built for browsing and converting iPhone photo exports.
HEIC etc Viewer is a single HTML file that runs entirely in your browser. No data is sent to any server — all file processing happens locally between your browser and your local storage. This means it works equally well whether hosted on the web or run locally. The UI is available in English and Japanese.
- Images: HEIC/HEIF, JPEG, JFIF, PNG, WebP, GIF, AVIF, SVG, BMP, TIFF, ICO
- Videos: MP4, WebM, MOV, WMV
- Documents: PDF
- WAI-ARIA APG-compliant folder tree (fully keyboard operable) and folder drag & drop
- Two gallery layouts: the default grid, and a justified tile view that packs thumbnails edge-to-edge row by row while preserving their aspect ratios — thumbnail size is adjustable in both
- Thumbnail caching; video thumbnails automatically pick a representative frame, skipping dark or fade-in openings
- Video thumbnails play muted, at thumbnail size, while the pointer or keyboard focus rests on them — switchable in Settings, and off by default when the system asks for reduced motion
- Files whose extension doesn't match their content (e.g. a
.heicfile that is really a JPEG) are detected and handled by their real format
- Images and videos open "as large as possible" by default, with an actual-size (1:1) toggle and scrolling for media that doesn't fit
- Drag-to-select zoom, 90° rotation, checker background (for checking transparency and frame boundaries), video loop, and slideshow mode
- Image diff: open a parent folder containing two subfolders with matching filenames to compare both versions with a mouse-driven divider
- WMV is converted to MP4 in your browser on demand and then played
- Keyboard shortcuts for all major operations
- Images → WebP, PNG, JPEG (normal or high compression), or PDF — one file at a time, or in bulk as a zip. Lossy conversions can be previewed against the original before downloading
- Videos → audio track extraction (without re-encoding where possible) and thumbnail image export
- PDFs → split into one PDF per page
- Alt text generation for images using Chrome's built-in on-device AI (Prompt API / Gemini Nano) — per image in the lightbox, or in bulk as a JSON file. Nothing is sent off your device
Built as a single HTML file with no build tools or package dependencies.
- Vanilla HTML / CSS / JavaScript — no frameworks
- libheif.js — HEIC/HEIF decoding via WebAssembly, run in a Web Worker (loaded from CDN)
- UTIF.js — TIFF decoding, run in a Web Worker (loaded from CDN)
- ffmpeg.wasm — MP4 conversion for WMV playback, and WMV thumbnails (loaded from CDN)
- PDF.js — PDF thumbnail rendering (loaded from CDN)
- jsPDF — PDF generation for the convert-to-PDF feature (loaded from CDN)
- pdf-lib — per-page PDF splitting (loaded from CDN)
- mediabunny — audio track extraction from videos (loaded from CDN)
- client-zip — zip generation for bulk downloads (loaded from CDN)
- Prompt API (Gemini Nano) — Chrome's built-in on-device AI, used for alt text generation
- Canvas API — video frame thumbnails, zoom region rendering, and image re-encoding for conversion
- File System API (
webkitdirectory,DataTransferItem.webkitGetAsEntry) — local folder access and directory tree traversal
HeV Sender is a Chrome extension that collects images, videos, and PDFs from the page you are viewing and sends them to HEIC etc Viewer. See its own README for details.
The easiest way is to open the hosted version on GitHub Pages:
https://securecat.github.io/heic-etc-viewer/
Your files never leave your device.
Alternatively, download heic-etc-viewer.html and open it directly in Chrome.
Opening via file:// disables folder drag & drop due to browser security restrictions. To enable it, run a local server in the same folder:
npx serve .
# or
python -m http.server 8080
Then open http://localhost:3000/heic-etc-viewer.html in Chrome.
- Recolored gallery thumbnail badges: video files now get green (freed up from ICO, which now uses the plain default badge style instead), and "can't play this in this browser" moves from red (previously shared with PDF, which was misleading) to orange. A video badge for a file that needs converting before it can play (currently WMV) also shows in black text, to flag that it isn't a normal ready-to-play video
- Gallery thumbnail badges (the small file-type label in the corner) used semi-transparent white text, which pushed the effective contrast below the required minimum against every colored badge (HEIC, video, PDF, and "can't play this in this browser") — all were failing. Text is now fully opaque
See CHANGELOG.md for full history.
HEIC、PDF、ICOに対応した、単一ファイルで動作するローカル画像・動画ビューアー&コンバーター。iPhoneから書き出した写真の閲覧・変換に最適化されています。
「HEIC etc Viewer」は、ブラウザ上で完全に動作する単一のHTMLファイルです。データがサーバーに送信されることはなく、すべてのファイル処理はブラウザとローカルストレージの間で完結します。そのため、Web上でホストする場合でもローカルで実行する場合でも、同様に利用可能です。UIは英語・日本語に対応しています。
- 画像:HEIC/HEIF、JPEG、JFIF、PNG、WebP、GIF、AVIF、SVG、BMP、TIFF、ICO
- 動画:MP4、WebM、MOV、WMV
- ドキュメント:PDF
- WAI-ARIA APG準拠のフォルダツリー(キーボード操作に完全対応)と、フォルダのドラッグ&ドロップ
- ギャラリーは通常のグリッド表示に加え、縦横比を保ったままサムネイルを行ごとに隙間なく敷き詰めるタイル表示に切り替え可能。サムネイルサイズはどちらの表示でも調整できる
- サムネイルのキャッシュ。動画のサムネイルは冒頭の暗転やフェードインを避けて代表フレームを自動選択
- 動画のサムネイルは、マウスカーソルまたはキーボードフォーカスがある間、サムネイルのサイズのまま無音で再生。設定で切り替え可能(OSのモーション低減設定が有効な場合は初期値OFF)
- 拡張子と中身が食い違うファイル(例:中身がJPEGの
.heic)は、実際の形式を検出して扱う
- 静止画・動画とも「できるだけ大きく」表示がデフォルト。原寸表示(1:1)への切り替えと、収まらない場合のスクロールに対応
- ドラッグで範囲選択するズーム、90度回転、市松模様背景(透過や画角の確認に)、動画のループ再生、スライドショーモード
- 画像Diff:同名ファイルを持つ2つのサブフォルダの親フォルダを開くと、マウス追従の境界線で両バージョンを重ねて比較できる
- WMVは都度ブラウザ内でMP4に変換して再生
- 主要な操作はキーボードショートカットに対応
- 画像 → WebP・PNG・JPEG(通常・高圧縮)・PDF。1ファイルずつでも、まとめてzipでも保存可能。非可逆形式は変換前に元画像と重ねてプレビュー比較できる
- 動画 → 音声トラックの抽出(可能な限り再エンコードなし)、サムネイル画像の書き出し
- PDF → 1ページずつのPDFに分割
- Chrome内蔵のオンデバイスAI(Prompt API / Gemini Nano)で画像の代替テキストを生成。ライトボックスで1枚ずつ、または一括でJSONファイルに書き出し。データが端末の外に送信されることはない
ビルドツールやパッケージの依存関係を使用せず、単一のHTMLファイルとして構築されています。
- Vanilla HTML / CSS / JavaScript — フレームワーク不使用
- libheif.js — WebAssemblyによるHEIC/HEIFデコード。Web Worker上で実行(CDNから読み込み)
- UTIF.js — TIFFデコード。Web Worker上で実行(CDNから読み込み)
- ffmpeg.wasm — WMV再生のためのMP4変換とサムネ表示(CDNから読み込み)
- PDF.js — PDFサムネイルのレンダリング(CDNから読み込み)
- jsPDF — PDF変換保存機能のPDF生成(CDNから読み込み)
- pdf-lib — PDFのページごと分割(CDNから読み込み)
- mediabunny — 動画からの音声トラック抽出(CDNから読み込み)
- client-zip — 一括ダウンロード時のzip生成(CDNから読み込み)
- Prompt API(Gemini Nano) — 代替テキスト生成に使うChrome内蔵のオンデバイスAI
- Canvas API — 動画フレームのサムネイル生成・ズーム領域のレンダリング・変換機能での画像再エンコード
- File System API (
webkitdirectory,DataTransferItem.webkitGetAsEntry) — ローカルフォルダへのアクセスおよびディレクトリツリーの走査
HeV Sender は、表示中のページの画像・動画・PDFを収集して HEIC etc Viewer へ送出するChrome拡張です。詳細は拡張側のREADMEを参照してください。
最も簡単な方法は、GitHub Pagesでホストされているバージョンを開くことです:
https://securecat.github.io/heic-etc-viewer/
サーバーへデータが送信されることはありません。ファイルの処理はすべて、ブラウザとローカルストレージの間でローカルに行われます。
あるいは、heic-etc-viewer.html をダウンロードし、Chrome で直接開いてください。
file:// 経由で開くと、ブラウザのセキュリティ制限により、フォルダのドラッグ&ドロップが無効になります。これを有効にするには、同じフォルダ内でローカルサーバーを起動してください:
npx serve .
# または
python -m http.server 8080
ローカルサーバー起動後、Chromeで http://localhost:3000/heic-etc-viewer.html を開きます。
- ギャラリーサムネイルのバッジの配色を変更。動画は緑に(ICO用だった色を転用。ICOは通常画像と同じ既定のバッジ見た目になったため空いた)、「このブラウザで再生不可」は赤(従来PDFと共用で紛らわしかった)からオレンジに。再生前に変換が必要な動画(現状WMVのみ)のバッジは、通常の動画バッジと区別するため文字色を黒にした
- ギャラリーサムネイルのバッジ(角に出るファイル種別ラベル)の文字色が半透明の白になっており、色付きバッジ(HEIC・動画・PDF・「このブラウザで再生不可」)すべてで実効コントラスト比が基準を下回っていた問題を修正。文字を完全に不透明にした
全履歴は CHANGELOG.md を参照。