Video Moment Search

Describe a scene in a short MP4, rank sampled visual frames, inspect the original, and download a compact JSON report.

Choose MP4 → build a visual index → describe a scene in English → inspect the original → copy or download JSON.

Choose a video. No model download starts until you build an index.

Find a scene in a short video

Select one local MP4. Describe what you can see, then inspect the matching moments in the original.

50 MB per file · up to 1920 pixels per side · 20 sampled frames

Requires WebGPU and sufficient memory

First use downloads a 484.6 MB public model plus about 22–35 MB of runtime resources. Loading also needs working memory. Recent desktop Chrome is the tested browser; low-memory phones may not work. There is no CPU fallback.

Downloads, storage and privacy

After you click Build visual index, fixed public resources are downloaded from jsDelivr and Hugging Face (including its download CDN). Providers see ordinary connection information such as your IP address. The video and search description remain in your browser. Verified public model parts are cached for reuse; videos and queries are not stored. Cancel clears the video, query and results but retains completed model parts. Browser settings can remove this site’s cached data. No account or paid API is needed.

5 seconds: up to 100 seconds of video; 2 seconds: 40 seconds; 1 second: 20 seconds; 0.5 seconds: 10 seconds. Short events between samples can be missed.

1–200 characters (UTF-16 units). A 256-unit single-chunk limit is also checked after inference. Only sampled visual frames are searched; audio is excluded. Other query languages have not been accepted.

How to use

What is video moment search?

Video moment search compares an English description with sampled video frames and ranks the closest candidates. It helps you find places to inspect in a short local clip. A match is a suggestion, including when the scene is absent; audio and moments between samples are outside the search.

Step by step

  1. Choose one intact, browser-supported MP4. The tool checks file size, source timing, dimensions and the sampling plan before downloading model resources.
  2. Keep the 5-second default for clips up to 100 seconds, or explicitly choose a denser interval for a shorter clip. Click Build visual index. The first use downloads public model/runtime resources; the video stays on your device.
  3. Describe what is visible in simple English, such as “A red car on a city street”. Click Find moments or press Enter. Shorter, concrete descriptions are easier to compare with a frame.
  4. Choose Inspect original at the candidate’s time. The browser re-decodes the source and compares its file bytes, presentation time and PNG bytes with the index. Play the original to decide whether the scene fits your task.
  5. Copy or download the current JSON report. It contains the actual query, source fingerprint, sampling coverage, candidate times, similarity and any completed frame checks. Save the original video separately; the report contains no images.

Choosing the settings

OptionWhat changes
5-second interval (default)Up to 100 seconds, with no more than 20 samples. Uses fewer frames but can miss brief events.
2 seconds / 1 second / 0.5 secondsUp to 40 / 20 / 10 seconds respectively. Denser sampling uses more local resources. The tool refuses a plan over 20 samples rather than changing your choice.
SimilarityCosine similarity orders candidates. It is not a confidence percentage, an object detector verdict, or proof that the scene exists.
Original-frame checkChecks source SHA-256, decoded presentation time and PNG-byte identity for the chosen frame. It does not validate your description or every frame.
JSON reportA bounded report of the current query and browser checks. Caller-provided descriptors are not an independently authenticated certificate.

Example and expected result

In an owned 2-second synthetic clip, 0.5-second sampling produced requested times 0, 0.5, 1 and 1.5 seconds. Two held source frames were actually presented at 0 and 1.2 seconds, so the index retained four sample positions and two unique frames. Searching “A red rectangle” returned both as candidates. Inspecting 0 seconds matched the source fingerprint, decoded time and PNG bytes. The downloaded 1,825-byte JSON matched the copied report. This is a functional check on that clip, not a prediction of accuracy or report size for your video.

If it is not working

  • If the plan exceeds 20 samples, choose a larger interval or shorten a copy of the video. Changing the interval discards the old index. There is no automatic interval relaxation.
  • If the file cannot be read or a frame check fails, use an intact supported MP4 and build a new index. No unchecked or partial index is presented as complete.
  • If model storage is unavailable/full, free this site’s storage through browser settings, then explicitly retry. A failed cached-part fingerprint removes that part; a retry replaces it and reuses the other verified parts.
  • A query error keeps a valid source index so you can shorten and retry the description. Editing the description clears the old candidates and report. A timeout or engine failure requires a new index; Clear and Cancel also empty the file and query.
  • If clipboard access is blocked, select the JSON text manually or use Download JSON report. Check its query and source fingerprint before using it elsewhere.

Reference and resource limits

SettingBound
InputOne MP4; 50,000,000 bytes; parsed duration at most 120 seconds, also subject to the chosen 20-sample limit.
DimensionsAt most 1920 pixels per side and 2,073,600 pixels total.
Decoded imagesAt most 20 sampled frames; 2,000,000 bytes per PNG and 24,000,000 bytes total. No partial index is accepted.
Text query1–200 UTF-16 units; a 256 model-input-unit, single-chunk limit is checked after inference.
ModelEmbeddingGemma 2 740M LiteRT-LM; fixed public revision, 484,622,336 bytes. Downloaded parts and the full model are fingerprint checked.
DeadlinesTiming-parser loading: 15 seconds. After it is ready, 4 seconds per timing/native-frame wait; 360 seconds engine preparation; 120 seconds frame indexing; 15 seconds query. These are operation limits, not a total startup-time guarantee.
ExportJSON up to 100,000 bytes, with at most 5 candidate frames in this interface. No PNG data or embedding vectors.

Formats and limits

Only one browser-supported MP4 is accepted. MP4 is a container: a codec your browser cannot decode will fail even with a .mp4 extension. Empty, multi-segment or rate-changing edit lists, ambiguous timing and more than 7,200 timing packets are rejected. The original file is unchanged.

A WebGPU adapter and sufficient working memory are required. The tested path is recent desktop Chrome; other browsers and low-memory phones have not been accepted. No Python, NVIDIA-specific installation or CPU fallback is provided. First use downloads 484.6 MB of model data plus about 22–35 MB of runtime resources. The browser also needs memory to assemble and load the model.

No video or query is uploaded. Clicking Build visual index starts ordinary connections to jsDelivr and Hugging Face, including its download CDN, for fixed public resources. Providers receive normal connection information such as your IP address. Only verified public model parts are cached; files and queries remain in page memory. Clear, Cancel or leaving the page releases those inputs and results. Completed model parts remain for reuse; browser site-data settings can remove them.

Frequently asked questions

What can this tool find?

It ranks sampled visual frames against an English description. Use the candidate times to inspect your original video. It does not search speech, identify every event, or guarantee that the description is present.

Which sampling interval should I choose?

Start with 5 seconds for up to 100 seconds of video. Use 2 seconds for at most 40 seconds, 1 second for 20 seconds, or 0.5 seconds for 10 seconds. Denser sampling can catch shorter changes, but anything between samples can still be missed.

Does a high score prove the scene is there?

No. Similarity ranks the closest frames, even when every frame is a poor match. The original-frame check proves only that this browser re-decoded the same source frame; you still need to inspect its content.

Why does my video or model fail to load?

Check the file/codec, 50 MB and pixel limits, and the 20-sample plan. Use a recent desktop Chrome with WebGPU and enough free memory/storage. Resource download or cache errors need an explicit retry; there is no CPU or upload fallback.

Is my video or description uploaded?

No. Video decoding, embeddings, ranking and source checks run in your browser. Public model/runtime downloads go to the named providers, which receive normal connection information. Only those public model parts are cached; your file and query are not saved.