Contact Sheet From a Video

Turn a clip into one image of evenly spaced frames — a storyboard for scrubbing a long file without scrubbing it.

🔒 100% Private — no upload🗂 One JPG sheet📐 Spaced across the clip
🎬

Drag & drop your video here, or click to browse

Max file size: ~2 GB (memory permitting)

How to Use — Contact Sheet From a Video

1

Drop in your video

FFmpeg reads MP4, MOV, WebM, MKV, and AVI here. Spacing the frames across the clip needs its length, which the tool asks the browser for: Chrome reads it from MP4, MOV and WebM, but often not from MKV or AVI, and those then fall back to one frame a second over the opening seconds. The file stays on your device either way.

2

Pick the grid

Each option shows how many frames it holds and how far apart they land in this particular clip, so you can see the spacing before you commit.

3

Build and download

The frames are tiled into one JPG. It appears below the button at full quality, scaled down only to fit the page.

Popular task presets

Best for / not for

Best for

  • Seeing the shape of a whole clip at a glance: where the scenes change, where the b-roll sits, where it drags.
  • Sending one image that stands in for a rush, instead of making someone download the footage.
  • Finding the rough timestamp of a half-remembered shot, then trimming or extracting that frame.

Not for

  • Shot detection. Frames are sampled at fixed intervals, so a cut that falls between two samples never appears on the sheet.
  • Publishable stills. Cells are 320 pixels wide; a frame you intend to use should come from the Frame Extractor at full resolution.
  • Long files in a hurry. FFmpeg decodes the clip end to end to reach the sampled moments, so a feature-length source takes minutes in the tab.

When to build a contact sheet

  • Reviewing an interview or a rush before editing — nine to twenty frames say what is in the file faster than scrubbing does.
  • Attaching one picture to a message instead of a multi-gigabyte clip when someone just has to pick a take.
  • Locating a shot: the position of a cell in the grid tells you roughly where in the clip it came from.
  • Archiving footage, where a sheet stored next to the file is a human-readable index of what it actually contains.

Supported formats & limits

Input containersMP4, MOV, WebM, MKV, AVI — anything this FFmpeg build reads
Input codecsH.264, H.265/HEVC, VP8, VP9, MPEG-4, MJPEG. Not AV1 — this build has no software AV1 decoder.
OutputOne JPEG (mjpeg). No video file and no audio: the source audio is discarded because the result is a still image.
Output size9 frames on 3 × 3, 16 on 4 × 4, 20 on 5 × 4, at 320-pixel-wide cells — from a 1920 × 1080 source that is 960 × 540, 1280 × 720 and 1600 × 720.
SamplingThe clip length divided by the cell count, so the frames span the whole file. Fixed intervals, never scene detection.
Clip lengthRead from the browser, not from FFmpeg. A container the browser cannot open — AVI, most MKV, ProRes MOV — falls back to one frame a second across the opening seconds.
SpeedMeasured in this build: a 3 × 3 sheet of an 8-second 720p clip is 26 KB in 0.56 s. The wait grows with the length of the source, not with the size of the sheet.
Max file sizeUp to ~2 GB (limited by browser memory)
CostFree for any use. No signup. No watermark.

Storyboard Sheet vs. the usual alternatives

FeatureThis toolVEED (free)Kapwing (free)CapCut Online
Processing modelRuns locally in your browserUpload-based project editorUpload-based project editorUpload-based online editor
File limitsNo upload cap; practical limit is browser memoryPlan-specific upload limitsPlan-specific upload and export limitsFeature- and account-specific limits
Watermark on outputNo watermark addedFree exports include a VEED watermarkFree exports include a Kapwing watermarkStandard edits can be watermark-free; templates/assets may add branding
Signup / accountNo account for toolsWorkspace/account flowWorkspace/account flowCapCut account flow
Works offlineYes after cache, subject to browser supportNoNoNo
Best forPrivate one-step file operationsFull editor, templates, AI toolsCollaboration, templates, AI toolsSocial templates and timeline editing

Vendor plan limits were checked on April 29, 2026 and can change by region, account state, and export option. Verify critical limits on the vendor pricing/help page before relying on them.

Why use this contact sheet generator

  • The sampling rate is the clip length divided by the number of cells, so the sheet covers the whole file — a fixed fps=1 command gives you the opening seconds and nothing else.
  • It prints the exact output size and the gap between frames before you build, and greys out any grid the clip is too short to fill with distinct frames.
  • It states the limit rather than hiding it: frames are spaced by time, so a short cut between two samples will not show up.
  • 100% private — the clip is decoded by FFmpeg compiled to WebAssembly inside your browser and never uploaded.

Frequently Asked Questions

How does it decide which frames to show?

It divides the clip length by the number of cells and samples at that rate, so the frames land evenly across the whole file. A 90-second clip on a 3 × 3 grid gives one frame every 10 seconds; the same clip on a 5 × 4 grid gives one every 4.5 seconds. That is the difference between a storyboard of the film and nine frames of the opening title. There is no shot detection — the sampler only counts time, so a cut that lives between two samples is missed entirely.

How big is the sheet?

Each cell is 320 pixels wide and keeps the source aspect ratio, so a 1920 × 1080 clip produces 320 × 180 cells: 960 × 540 for 3 × 3, 1280 × 720 for 4 × 4, and 1600 × 720 for 5 × 4. The tool prints the exact output size next to the grid picker before you build it.

Why can I not pick a bigger grid on a short clip?

A 5 × 4 sheet needs 20 distinct frames. A one-second clip does not contain 20 frames at any ordinary frame rate, so the sampler would hand the same picture to several cells. The tool assumes 24 frames a second — the lowest rate real footage is shot at — and greys out any grid the clip cannot fill.

Why is a long video slow?

FFmpeg has to decode the clip from end to end to reach the sampled moments; it cannot jump straight to nine timestamps. The output is tiny either way, but the wait grows with the length of the source, not with the size of the sheet. Trimming first is faster if you only care about one section.

What comes out, an image or a video?

A single JPG. The frames are scaled and tiled by FFmpeg into one picture, which is why the result is shown as an image rather than a player and downloads with a .jpg extension.

Does the file upload anywhere?

No. The clip is decoded by FFmpeg compiled to WebAssembly inside this tab. Open DevTools and watch the Network panel while you build a sheet: nothing leaves your device.

Related Tools