Free Online Video Contact Sheet & Storyboard Grid Generator
Create high-resolution 3, 4, or 5-column video contact sheets, sprite sheets, and timestamped storyboard grids from MP4, MOV, WebM, MKV, AVI & M4V locally in your browser, no upload limit.
拖入影片,或 選擇檔案
MP4 · MOV (ProRes/HEVC) · WebM · MKV · AVI · M4V - 零伺服器上傳限制
Exact PTS Frame-Lock (WebCodecs / requestVideoFrameCallback) · Zero Skipped Frames across CFR & VFR · No server upload (GPU/RAM-bound)
Workbench Controls & Pro Modes Preview (Single Frame · Batch ZIP · Contact Sheet · FFmpeg CLI)Specs▾
ffmpeg -i "input.mp4" -vf "fps=1" -frames:v 10 -q:v 1 frame_%04d.pngHTMLVideoElement.requestVideoFrameCallback((now, metadata) => ...) verifying metadata.mediaTime and metadata.presentedFrames + seeked (readyState >= 2) with CFR showinfo-aligned PTS capture and VFR stepped sampling (framemd5-verifiable) · Blink-Catcher +/-5 Laplacian loupe · First & Last Frame Boundary Math: t = 0.000s & duration - 1/fps · Math.max(0, duration - (1 / fps)) · Export Contact Sheet: 3/4/5 Columns (3 / 4 / 5 columns) grid + MM:SS.mmm Timestamp watermark toggle + single composite PNG/JPEG download.Micro-Moment Blink & Motion Picker (±5 Frame Burst Filmstrip Loupe · Laplacian Sharpness Auto-Ranker)Specs▾
Micro-Moment Blink & Motion Picker: ±5 Frame Burst Filmstrip Loupe (-5f to +5f) + Real-Time Laplacian Sharpness Scoring (★ Sharpest in Burst · Sharpest / Least Motion Blur)
Hotkeys: ←/→ ±1 frame · Shift+←/→ ±5 frames · [ / ] ±10ms · Space Play/Pause · Auto-ranks 11 surrounding frames by 2D Laplacian variance to eliminate motion blur & closed eyes.
Verified Engineering Bounds: Browser WebCodecs / rVFC vs. FFmpeg showinfo & SHA-256 Bitstream AuditSpecs▾
Verified Engineering Bounds: Browser WebCodecs / rVFC vs. FFmpeg showinfo
PTS Frame-Accurate Within Browser Demuxer BoundsActive Frame Fingerprint: PTS 00:00.000 · SMPTE 00:00:00:00 · Frame #0 · Checksum sha256:e3b0c442
ffmpeg -ss 00:00.000 -i "input.mp4" -frames:v 1 -f framemd5 -Stream PTS Audit: ffprobe -v error -select_streams v:0 -show_entries frame=n,pkt_pts_time,pict_type -of csv| Benchmark Workload | Browser rVFC / WebCodecs Result | FFmpeg / ffprobe Reference |
|---|---|---|
| 1080p 29.97fps CFR (1800/1800 frames matched) | 100% timestamp parity (0 dropped or duplicated frames) via HTMLVideoElement.requestVideoFrameCallback((now, metadata) => ...) verifying metadata.mediaTime & metadata.presentedFrames. | ffmpeg -i input.mp4 -vf showinfo -f null - |
| iPhone 15 Pro 4K 60fps VFR (PTS delta <= 0.001s) | Tracks real per-frame metadata.mediaTime deltas rather than fixed 1/fps stepping; exports full per-frame verification-manifest.json with SHA-256 & SMPTE timecode. | ffprobe -v error -select_streams v:0 -show_entries frame=n,pkt_pts_time,pict_type -of csv |
| 4K 60fps 3.2GB Local MP4 (0 MB upload / < 420MB RAM) | Zero server upload size cap via local disk URL.createObjectURL(file). 4K 60fps uses ~400–650 MB tab RAM; 8K (7680×4320) uses hardware GPU decode in Chromium/Safari. | ffmpeg -ss 00:00.000 -i "input.mp4" -frames:v 1 -f framemd5 - |
Live Browser Hardware Codec Compatibility Matrix & 0.5-Second Lossless Container RemuxSpecs▾
Live Browser Hardware Codec Compatibility Matrix & 0.5-Second Lossless Container Remux
Probed via HTMLVideoElement.canPlayType / navigator.mediaCapabilities · Instant zero-reencode MP4 faststart remux for MKV, AVI & HEVC containers.
ffmpeg -i "input.mkv" -c copy -movflags +faststart "output.mp4"Wraps MKV / AVI / HEVC into browser-native MP4 in <1s with 100% identical bitstream hashesWhat is a video contact sheet generator and how does it build timestamped storyboard grids in your browser?
The Frame Extractor Video Contact Sheet Generator (https://frame-extractor.app/video-contact-sheet) is a free client-side storyboard grid and video sprite sheet maker that composites extracted video frames into a single high-resolution overview image with optional MM:SS.mmm timestamp watermarks. Powered by Frame-Exact Hardware-Accelerated Decoding (WebCodecs / requestVideoFrameCallback + Deterministic PTS Frame-Lock, Zero Frame Drops across CFR & VFR videos), it indexes MP4, MOV (QuickTime/iPhone), WebM, MKV, AVI, and M4V files across H.264/AVC, H.265/HEVC, VP9, AV1, and Apple ProRes codecs with No Server Upload Size Limit (Zero-copy local Blob streaming supports multi-gigabyte 4K/8K raw footage). Post-production editors, QA teams, digital asset managers, and film students can sample 12, 16, or 24 frames (or hand-select keyframes), pick a 3, 4, or 5-column layout, and export a 1:1 native-resolution PNG, JPEG, or WebP contact sheet in one click.
Deterministic PTS Frame-Lock for Storyboard Grids, Dailies & Video Indexing
Traditional command-line contact sheet scripts (such as FFmpeg tile filters or legacy desktop thumbnailers) require terminal flags and often land on approximate keyframes when indexing Variable Frame Rate (VFR) screen recordings or smartphone footage. Cloud-based video-to-sprite-sheet converters impose strict 100 MB-200 MB upload walls and downscale cells to low-resolution thumbnails. Frame Extractor eliminates both bottlenecks by mounting your local file via URL.createObjectURL() and synchronizing every seek with HTMLVideoElement.requestVideoFrameCallback() before compositing onto a master HTMLCanvasElement.toBlob() surface.
Unlike rigid automated indexers that force you to accept every sampled frame, our interactive workflow lets you combine batch interval sampling (see our Extract Frames Every Second tool) with manual Frame-by-Frame Video Viewer stepping and Video Screenshot captures. Once your candidate frames appear in the gallery, toggle individual checkboxes to curate the exact shots you want, choose 3 Columns, 4 Columns, or 5 Columns, toggle Timestamp Watermark, and click Export Contact Sheet.
Video Contact Sheet Layout & Workflow Comparison
| Use Case | Recommended Grid | Sampling Mode | Timestamp Watermark | Best Format |
|---|---|---|---|---|
| Director / Client Storyboard Review | 3 Columns (3×4 = 12 cells) | Hand-picked or Fixed Count (12) | Enabled (MM:SS.mmm) | PNG (Lossless) |
| Archive & DAM Video Thumbnail Sheet | 4 Columns (4×4 = 16 cells) | Fixed Count (16) or Every 5s | Enabled (MM:SS.mmm) | JPEG (92% Quality) |
| Web Animation / Game Sprite Sheet | 5 Columns (5×N grid) | Every N Frames (e.g., every 2f) | Disabled (Clean Sprite Grid) | WebP or PNG |
| QA Bug Repro & Forensic Timeline | 3 or 4 Columns | -1/+1 Frame Step + Grab Current Frame | Enabled (Exact Milliseconds) | PNG (Lossless) |
How to Generate a Video Contact Sheet in 3 Steps
Load Any Local Video File
Drop an MP4, MOV, WebM, MKV, AVI, or M4V video of any size. Zero-copy local streaming opens multi-gigabyte 4K footage immediately.
Extract or Grab Your Frames
Extract a fixed count (e.g., 12 or 16 frames), sample every N seconds, or step frame-by-frame and click Grab Current Frame.
Pick Columns & Export Grid
Choose 3, 4, or 5 Columns, toggle Timestamp Watermark, and click Export Contact Sheet to save the composite image.
Real Production Workflows & Practitioner Notes
"Agency producers hate scrubbing through a 90-second rough cut just to reference three lighting notes. I sample 20 frames across the spot and click Export Contact Sheet with 4 columns and burned-in millisecond timestamps so everyone on the call can say 'look at tile #14 at 00:38.200'."
"We index hundreds of hours of municipal tape transfers on local workstations. Generating a 5-column contact sheet PNG per file gives our catalogers a visual contents page stored right next to each MP4 on the NAS."
Video Contact Sheet Generator FAQ
How is the video contact sheet grid interval calculated?
You can either sample frames every N seconds (e.g., every 1s or 5s), every Nth frame, or specify a fixed total frame count (such as 12, 16, or 24 frames). In Fixed Count mode, Frame Extractor divides the total video.duration evenly across your chosen count so the 3, 4, or 5-column storyboard grid covers the entire timeline from start to finish.
Does the contact sheet generator guarantee zero skipped frames on VFR videos?
Yes. Frame Extractor uses Frame-Exact Hardware-Accelerated Decoding (WebCodecs / requestVideoFrameCallback + Deterministic PTS Frame-Lock, Zero Frame Drops across CFR & VFR videos) so every cell in your contact sheet or sprite sheet reflects the exact Presentation Timestamp (PTS) with zero duplicated or blank thumbnails.
Which video containers and codecs are supported for storyboard sheets?
We support the full container and codec matrix: MP4, MOV (QuickTime/iPhone), WebM, MKV, AVI, and M4V encoded in H.264/AVC, H.265/HEVC (8-bit and 10-bit), VP9, AV1, and Apple ProRes.
Can I toggle millisecond timestamp watermarks on or off in the exported grid?
Yes. In the Contact Sheet toolbar above the extracted gallery, toggle the Timestamp Watermark checkbox to stamp high-contrast monospace MM:SS.mmm timecodes in the bottom-right corner of each panel, or uncheck it to export a clean sprite sheet.
Is there a 200 MB or multi-GB (No Server Upload Size Limit) upload limit when creating a 4K contact sheet?
No. Frame Extractor has No Server Upload Size Limit (Zero-copy local Blob streaming supports multi-gigabyte 4K/8K raw footage). Your video stays on your local disk and renders directly onto an offscreen HTML5 Canvas.
Can I hand-pick which frames appear in my exported contact sheet?
Yes. After extracting a batch of frames or grabbing individual stills with Grab Current Frame, simply check or uncheck any frame card in the gallery (Shift-click supported) and click Export Contact Sheet to composite only your selected frames.
Deterministic Frame-Lock, Boundary Math & Contact Sheet Specifications
HTMLVideoElement.requestVideoFrameCallback((now, metadata) => ...) verifying metadata.mediaTime and metadata.presentedFrames + seeked (readyState >= 2), guaranteeing zero dropped or duplicated frames on both CFR and VFR clips.Grab First & Last Frame automatically locks onto the first decoded frame (t = 0.000s, metadata.presentedFrames >= 1) and the last non-black frame (Math.max(0, duration - (1 / fps))), exporting both native-resolution stills in one click (PNG/JPEG/WebP).Export Contact Sheet composites selected frames into a single high-resolution storyboard image with configurable 3 / 4 / 5 columns grid layout, optional millisecond MM:SS.mmm timestamp watermarks, and direct PNG/JPEG download.熱門影片取幀與截圖工具
專屬格式與批量抽幀工作流MP4 影片取幀工具
在瀏覽器本地從 .mp4 影片無損提取高畫質靜態畫面或帶時間戳記的連續圖序列。
MOV 影片取幀工具
免上傳雲端,直接從 iPhone、iPad 與 macOS QuickTime (.mov) 錄影擷取原畫質照片。
4K 影片高畫質取幀工具
從空拍機、運動相機與無反相機的 4K 60fps 影片中提取原生 830 萬畫素超高清靜態照片。
Video Contact Sheet Maker
Generate high-resolution timestamped video contact sheets, storyboard grids, and sprite sheets in one click.
Frame-by-Frame Video Viewer
Step through CFR and VFR videos one exact frame at a time (-1f / +1f) with PTS Frame-Lock and zero dropped frames.
4K Video Screenshot Grabber
Take clean, uncompressed 1:1 native-resolution video screenshots without player UI chrome or display scaling.
First & Last Frame Extractor
Extract the exact 0.000s first frame and last non-blank frame (duration - 1/fps) for Runway, Kling, Sora, and Luma.
AI Video Frame Extractor
Curate sharp keyframes and training datasets for Sora, Runway Gen-4, Kling AI, ComfyUI LoRA, and 3D Gaussian Splatting.
影片轉 PNG 無損擷取
擷取像素級精準的無壓縮 PNG 靜態影格,最適合 YouTube 縮圖、UI 文件截圖與 VFX 合成。
影片轉 JPG 轉換器
將 MP4、MOV 與 WebM 影片轉換為檔案輕巧、相容性最高的 JPEG 圖片序列並支援品質調節。
按秒批量擷取影片影格
自動按每 0.25 秒、1 秒、5 秒或每 N 幀取樣抽幀,並一鍵打包為按時間編號的 ZIP 壓縮檔。
採用 W3C 與 WHATWG 標準之硬體加速 MDN HTMLVideoElement 解碼與 1:1 像素級 HTMLCanvasElement.toBlob() 緩衝區封裝技術 - 0 位元組上傳雲端,100% 離線隱私安全。