vlm.fyi Get the data
Methodology

How we measure

Every number on this site comes from requests we sent to the provider's OpenAI-compatible chat completions API. The current data was measured on 2026-10-31.

One limit at a time

A real video request can hit several limits at once: the image count, the request size, the decoded pixels, the context window. To tell them apart, each probe sends a minimal request ("Reply with OK", 16 output tokens) carrying synthetic media designed to stress only one of them:

For each limit we double the size until a request fails, then bisect between the last pass and the first failure. We also check which request fields are accepted, and whether tool results for parallel tool calls must directly follow the assistant message.

Video density: how much of a video the model sees

Sending a video doesn't tell you how much of it reaches the model. Providers sample frames themselves, and for the same model id the amount differs by more than 100×. To measure it we send one real reference clip (5 minutes 8 seconds) as a video_url, twice, and read the provider's own billing:

OpenRouter upstreams

OpenRouter serves one model id from many upstream providers and picks one per request. We pin each upstream in turn (provider.order with fallbacks off) and measure it separately. When a pinned upstream can't take a request, OpenRouter answers "no endpoints found"; after smaller requests passed, we treat that as the upstream's limit.

Evidence

Every request and response is recorded: the request body (images replaced by their SHA-256 and size), the status, headers and body, timings, and the provider's request id (OpenRouter's X-Generation-Id, or x-request-id / cf-ray). That lets a provider look up the exact request behind any number here.

Reading a value

Caveats

What's not here

Self-hosted deployments (for example your own vLLM server) are left out: their limits are set by your configuration, such as --limit-mm-per-prompt and VLLM_MAX_MEDIA_REQUEST_DECODE_BYTES.

Corrections

Found a limit that's wrong or out of date? Open an issue with the request you sent and the error you got.