A macOS desktop app for capturing responsive screenshots in bulk.
Built with Tauri v2 + Vue 3 + TypeScript + Rust.
Features · Device frames · Requirements · Build · 日本語
ResponsiveShot launches Chrome, opens a target URL, and saves screenshots for multiple viewport widths in one run.
- Capture multiple viewport widths in one run
- Capture modes:
- Full page
- Viewport
- Selected element
- PNG screenshot output
- GIF recording output
- Device frames: capture at a real device's resolution and composite into official Apple / Google Pixel bezels, with optional drop shadow (PNG only)
- Optional manual interaction before capture
- Configurable capture delay
- Ratio-based viewport height for viewport captures
- 16:9
- 16:10
- 4:3
- 3:2
- 1:1
- 21:9
- 9:16
- Custom ratio
- macOS universal app build support
- 8 UI languages (ja / en / de / es / fr / ko / pt-BR / zh-TW); switch from the header
The UI is available in Japanese, English, German, Spanish, French, Korean, Portuguese (Brazil) and Traditional Chinese. Switch languages from the select in the header. The language follows your saved choice (header selector), otherwise the system language, otherwise English. The manual-interaction overlay injected into Chrome also follows the app language. Messages returned by the capture engine (errors, import results) are always in English, regardless of the UI language. Translations other than Japanese and English are machine-assisted; corrections are welcome.
Select devices in the "Device frames" panel to capture the page at that device's CSS size and pixel ratio and save it composited into the device bezel (capture_<device>_framed.png, or …_framed-shadow.png with the drop-shadow toggle). Frames are applied to PNG output only.
- Google Pixel (Pixel 9 / 9 Pro / 9 Pro XL / 9a / 10 / 10 Pro / 10 Pro XL / 10a / Pixel Tablet) frames are bundled. They are derived from the Android Open Source Project (Apache License 2.0, see
src-tauri/frames/google/NOTICE). Regenerate withscripts/build-pixel-frames.sh(requires ImageMagick). - Apple iPhone 16 family, iPhone 17 / iPhone Air / 17 Pro / 17 Pro Max, iPhone 18 Pro / Pro Max, iPhone Duo (inner and outer display, portrait and landscape), iPad Pro (M5) / iPad Air (M4) / iPad mini (A17 Pro) in portrait and landscape, MacBook Air / MacBook Pro (M5), iMac (M4), Studio Display (2026) bezels are not bundled because Apple's license does not allow redistribution. Download the "Product Bezels" DMG from Apple Design Resources yourself and use "Import DMG / PNG" in the panel; the PNGs are copied to
~/Library/Application Support/com.responsiveshot.app/frames/. Use them under Apple's marketing guidelines at your own responsibility (adding a shadow counts as a modification under those guidelines). If the DMG is already mounted in Finder, eject it first, or use "Import folder" and pick the mounted volume under /Volumes. Each device lists which DMG to download; one DMG import covers every model, color and orientation in it that the catalog supports (iPhone frames are registered in portrait only). - Background: framed output is transparent by default; choose white, black or any
#rrggbbin the panel to bake an opaque background (useful for viewers like Preview.app that render transparency as black). - Optional "Emulate mobile UA / touch" toggle (off by default): captures with the device's user agent (iPhone Safari / Pixel Chrome) and touch events enabled. iPads keep the desktop UA (as real ones do) but get touch; Macs and displays are unaffected. UA Client Hints (
Sec-CH-UA) are not overridden, so sites relying on them may still serve desktop layouts.
- macOS
- Node.js
- pnpm
- Rust
- Tauri prerequisites
- Chrome or Chromium available to
headless_chrome
For universal macOS builds, both Rust targets are required:
rustup target add aarch64-apple-darwin
rustup target add x86_64-apple-darwinpnpm installRun the frontend only:
pnpm run devRun the Tauri app in development mode:
pnpm run tauri:devBuild the frontend:
pnpm run buildBuild the Tauri app for the current architecture:
pnpm run tauri:buildBuild a universal macOS .app bundle:
pnpm run tauri:build:universalThe universal app is generated under:
src-tauri/target/universal-apple-darwin/release/bundle/macos/ResponsiveShot.app
The universal build script currently bundles the macOS .app only. This avoids DMG packaging failures while still producing a universal binary.
You can verify the generated binary with:
lipo -archs src-tauri/target/universal-apple-darwin/release/bundle/macos/ResponsiveShot.app/Contents/MacOS/ResponsiveShotExpected output:
x86_64 arm64
The app is unsigned. On first launch, right-click → Open, or clear the quarantine flag:
xattr -dr com.apple.quarantine ResponsiveShot.app
レスポンシブ確認用のスクリーンショットを一括で撮影する macOS デスクトップアプリ
Tauri v2 + Vue 3 + TypeScript + Rust で構築
主な機能 · デバイスフレーム · 必要なもの · ビルド · English
ResponsiveShot は Chrome を起動して指定した URL を開き、複数のビューポート幅のスクリーンショットを一度にまとめて保存します。
- 複数のビューポート幅を 1 回の実行でまとめて撮影
- キャプチャモード:
- ページ全体
- ビューポート(ファーストビュー)
- 選択した要素
- PNG スクリーンショット出力
- GIF 録画出力
- デバイスフレーム: 実機の解像度で撮影し、Apple / Google Pixel の公式ベゼルに合成(ドロップシャドウは任意、PNG のみ)
- 撮影前の手動操作(任意)
- 撮影前の待機時間を設定可能
- ビューポート撮影時の高さをアスペクト比から設定
- 16:9
- 16:10
- 4:3
- 3:2
- 1:1
- 21:9
- 9:16
- 任意の比率
- macOS ユニバーサルアプリのビルドに対応
- UI は 8 言語(ja / en / de / es / fr / ko / pt-BR / zh-TW)。ヘッダーで切替
UI は日本語 / 英語 / ドイツ語 / スペイン語 / フランス語 / 韓国語 / ポルトガル語(ブラジル)/ 繁体字中国語に対応しています。ヘッダーのセレクトで言語を切り替えられます。言語はヘッダーで保存した選択 → システムの言語 → 英語 の順で決まります。Chrome に注入される手動操作オーバーレイもアプリの言語に追従します。キャプチャエンジンが返すメッセージ(エラー、取り込み結果)は UI の言語に関わらず常に英語です。日本語・英語以外の翻訳は機械翻訳ベースのため、修正歓迎です。
「デバイスフレーム」パネルで端末を選ぶと、その端末の CSS 寸法・ピクセル比で撮影し、ベゼルにはめ込んだ PNG(capture_<device>_framed.png、ドロップシャドウ ON なら …_framed-shadow.png)を保存します。フレームは PNG 出力のみに適用されます。
- Google Pixel(Pixel 9 / 9 Pro / 9 Pro XL / 9a / 10 / 10 Pro / 10 Pro XL / 10a / Pixel Tablet)のフレームは同梱しています。Android Open Source Project 由来(Apache License 2.0、
src-tauri/frames/google/NOTICE参照)。scripts/build-pixel-frames.shで再生成できます(ImageMagick が必要)。 - Apple iPhone 16 系、iPhone 17 / iPhone Air / 17 Pro / 17 Pro Max、iPhone 18 Pro / Pro Max、iPhone Duo(内側・外側画面の縦・横)、iPad Pro (M5) / iPad Air (M4) / iPad mini (A17 Pro) の縦・横、MacBook Air / MacBook Pro (M5)、iMac (M4)、Studio Display (2026) のベゼルは Apple のライセンス上再配布できないため同梱していません。Apple Design Resources から「Product Bezels」の DMG をご自身でダウンロードし、パネルの「DMG / PNG を取り込む」で取り込んでください。PNG は
~/Library/Application Support/com.responsiveshot.app/frames/にコピーされます。Apple のマーケティングガイドラインに従いご自身の責任で使用してください(影の追加はガイドライン上の改変に当たります)。DMG を Finder で既にマウントしている場合は取り出してから取り込むか、「フォルダを取り込む」で /Volumes 内のボリュームを選んでください。各機種の行にダウンロードする DMG が示されます。DMG を 1 つ取り込むと、その中でカタログが対応する機種・色・向きがまとめて取り込まれます(iPhone のフレームは縦のみ登録しています)。 - 背景: フレーム付き出力は既定で透明です。パネルで 白 / 黒 / 任意の
#rrggbbを選ぶと不透明な背景が焼き込まれます(透明を黒く表示するプレビュー.app などで確認する場合に便利です)。 - 「モバイル UA / タッチをエミュレート」トグル(既定 OFF): 機種相応の UA(iPhone Safari / Pixel Chrome)とタッチイベントで撮影します。iPad は実機どおりデスクトップ UA のままタッチのみ有効。Mac・ディスプレイは対象外です。UA Client Hints(
Sec-CH-UA)は上書きしないため、それで判定するサイトには効かないことがあります。
- macOS
- Node.js
- pnpm
- Rust
- Tauri の開発に必要なツール
headless_chromeから起動できる Chrome または Chromium
ユニバーサルビルドには両方の Rust ターゲットが必要です:
rustup target add aarch64-apple-darwin
rustup target add x86_64-apple-darwinpnpm installフロントエンドのみを起動:
pnpm run devTauri アプリを開発モードで起動:
pnpm run tauri:devフロントエンドのビルド:
pnpm run build現在のアーキテクチャ向けに Tauri アプリをビルド:
pnpm run tauri:buildユニバーサル macOS .app バンドルのビルド:
pnpm run tauri:build:universalユニバーサルアプリは次の場所に生成されます:
src-tauri/target/universal-apple-darwin/release/bundle/macos/ResponsiveShot.app
ユニバーサルビルドのスクリプトは現在 macOS の .app のみをバンドルします。DMG パッケージングの失敗を避けつつ、ユニバーサルバイナリを生成するためです。
生成されたバイナリは次のコマンドで確認できます:
lipo -archs src-tauri/target/universal-apple-darwin/release/bundle/macos/ResponsiveShot.app/Contents/MacOS/ResponsiveShot期待される出力:
x86_64 arm64
アプリは未署名です。初回起動時は、アプリを右クリックして「開く」を選ぶか、隔離属性を解除してください:
xattr -dr com.apple.quarantine ResponsiveShot.app