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.
Déposez un fichier vidéo, ou parcourir
MP4 · MOV (ProRes/HEVC) · WebM · MKV · AVI · M4V - Aucune limite d'envoi serveur
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.Outils populaires d'extraction d'images vidéo
Flux de travail spécialisésExtracteur d'images MP4
Extrayez des images fixes sans perte ou des séquences horodatées à partir de vidéos .mp4 dans le navigateur.
Extracteur d'images MOV
Capturez des photos pleine résolution depuis vos vidéos iPhone, iPad et macOS QuickTime (.mov) sans envoi.
Extracteur d'images vidéo 4K
Extrayez des photos natives de 8,3 mégapixels à partir de vidéos 4K 60fps de drones, caméras d'action et hybrides.
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.
Convertisseur Vidéo vers PNG
Capturez des trames PNG non compressées au pixel près pour miniatures YouTube, captures UI et VFX.
Convertisseur Vidéo vers JPG
Convertissez vos vidéos MP4, MOV et WebM en séquences JPEG légères avec qualité de compression réglable.
Extraire une image chaque seconde
Échantillonnage automatique toutes les 0,25s, 1s, 5s ou N images, téléchargeable dans une archive ZIP numérotée.
Basé sur les standards W3C & WHATWG via le décodage matériel MDN HTMLVideoElement et la sérialisation HTMLCanvasElement.toBlob() au pixel près - 0 octet ne quitte votre appareil.