A whole shoot, at a glance

Footage Contact Sheet

Turn a pile of clips into a review-ready sheet. Pick one frame for each clip, add a short note and hand over a clear PDF, JPEG sheets and a searchable clip list.

One chosen frame per clipVideos stay in your browserNo signup

1Bring in your footage

Drop local video clips here

Choose several clips, or add a folder. Files are added in the order provided by your browser; every failed file stays visible.

24 clips · 250 MiB per file · 1 GiB total · 20 min per clip · 120 min total · up to 4K display size

Videos, extracted frames, filenames and notes stay local. The PDF library loads from jsDelivr when needed; Google Analytics records canonical page visits. This is not a fully offline page.

Choose clips or try the samples to get started.

2Arrange the clip list

0 clips
Your shoot starts here

Import clips to choose one poster for each.

    Keep every file accounted for. Failed or cancelled clips block export until you retry successfully or explicitly uncheck Include. Excluded rows stay in the CSV and JSON manifest. Use arrows to reorder.

    3Choose the representative frame

    Select a ready clip to preview it and choose a poster.

    4Make the review packet

    Prefixes an apostrophe to text cells that could be interpreted as spreadsheet formulas. This changes those CSV values; the JSON manifest always retains exact filenames, paths and notes.

    12 clips per sheet, up to 2 sheets. Download a PDF, one JPEG per sheet, CSV and a JSON manifest. Excluded files remain in the manifest with their status. Downloads appear only after the whole packet succeeds.

    Import at least one clip to build a packet.

    Review images only: browser decoding and JPEG output are not HDR / color-accurate proofing. Keep your source footage. Portrait frames fit inside their tile without cropping.

    From local clips to a review packet

    1. Import MP4, WebM or a browser-compatible MOV. The file extension alone does not guarantee that your browser can decode its video codec.
    2. Check the status of every clip. Failed and cancelled clips stay in the list. Retry them, or explicitly exclude them before exporting.
    3. Select a ready clip and scrub the muted native video player. Use the current frame, or choose from eight evenly spaced suggestions. Each clip has exactly one chosen poster.
    4. Add a short note, put the clips in order and choose which to include. Review the filenames, durations, display dimensions and elapsed frame times.
    5. Build the complete packet, then download the PDF, JPEG sheets, CSV and JSON. Any later edit removes old download links so that an outdated packet is not mistaken for the current selection.

    Real browser decoding, with clear limits

    H.264 MP4 and VP8 / VP9 WebM are the preferred starting points. MOV and HEVC are best effort and depend on the browser and operating system. RAW cinema formats are not supported, and this tool does not transcode video. An unsupported or damaged clip gets a visible error rather than disappearing.

    The workspace holds up to 24 files, 250 MiB per file and 1 GiB total. Each decoded clip must be at most 20 minutes; total decoded duration is at most 120 minutes. Display dimensions must fit 4096 pixels per side and a 4096 × 2160 pixel area, including portrait orientation. Excluding a clip does not remove its source from these workspace limits.

    Local media, honest network disclosure

    Your video bytes, extracted pixels, filenames, paths and notes are processed in this browser session. Local videos use Blob URLs rather than whole-file ArrayBuffers. There is no media upload endpoint, no cloud workspace and no autosave. Reloading, clearing or leaving can lose your selection.

    The page and sample clips load from this website. PDF export loads pinned pdf-lib 1.17.1 from jsDelivr. Google Analytics receives a canonical page-view URL with the query string and referrer omitted; tool actions, names, paths, notes and media are not sent as analytics events. Network requests still occur, so full offline operation is not promised.

    Questions before you start

    Can I export when one clip fails?

    Only after you explicitly exclude the failed clip, or retry it successfully. Every chosen input remains visible, including unsupported files. Excluded rows are preserved in CSV and JSON so the handoff accounts for them.

    Is the chosen timestamp frame-exact?

    No. The manifest records requested elapsed seconds, decoded-frame time when available or a browser timeline estimate otherwise, plus the timing source. Browser seeking, variable-frame-rate footage and the currentTime fallback can be approximate. This is a visual review aid, not an editing decision list.

    Will it preserve HDR, rotation or color perfectly?

    The player uses your browser’s decoded display dimensions and orientation. JPEG posters are for review, and can differ from source HDR or color-managed editing software. Check a sample in your own browser before relying on the packet.

    Why offer both CSV and JSON?

    CSV is convenient for spreadsheets. The optional spreadsheet-safe mode visibly changes formula-like text by prefixing an apostrophe. JSON keeps the exact filename, relative path, note, inclusion and timing fields for unambiguous records.

    Can I import a folder?

    The folder picker is available where the browser supports it. Relative paths are retained when supplied by the browser. Folder drag-and-drop is not supported; use the folder button or select the files directly.

    Will a large batch work on a phone?

    It depends on available memory and codec support. The tool uses one video decoder at a time and bounded poster images. Start with a few short clips; a browser can still reject a file within the published limits.