> ## Documentation Index
> Fetch the complete documentation index at: https://usefulai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Best Vision LLMs in 2026

export const models = [{
  rank: 1,
  name: "Claude Opus 4.7",
  dev: "Anthropic",
  icon: "/images/icons/anthropic.com.png",
  url: "https://www.anthropic.com/news/claude-opus-4-7",
  bestFor: "High-accuracy document and diagram reading",
  score: "96%",
  price: "$6.70",
  license: "Proprietary",
  custom: "4.32s",
  customLabel: "Vision latency"
}, {
  rank: 2,
  name: "Gemini 3.5 Flash",
  dev: "Google",
  icon: "/images/icons/google.com.png",
  url: "https://deepmind.google/models/model-cards/gemini-3-5-flash/",
  bestFor: "Cheap high-volume image and document work",
  score: "96%",
  price: "$0.84",
  license: "Proprietary",
  custom: "11.24s",
  customLabel: "Vision latency"
}, {
  rank: 3,
  name: "Muse Spark",
  dev: "Meta",
  icon: "/images/icons/meta.ai.png",
  url: "https://ai.meta.com/blog/introducing-muse-spark-msl/",
  bestFor: "Multimodal reasoning and tool use",
  score: "95%",
  price: "Not disclosed",
  license: "Proprietary",
  custom: "Not disclosed",
  customLabel: "Vision latency"
}, {
  rank: 4,
  name: "Gemini 3.1 Pro",
  dev: "Google",
  icon: "/images/icons/google.com.png",
  url: "https://ai.google.dev/gemini-api/docs/models/gemini-3.1-pro-preview",
  bestFor: "Deep visual reasoning and analysis",
  score: "95%",
  price: "$1.12",
  license: "Proprietary",
  custom: "16.42s",
  customLabel: "Vision latency"
}, {
  rank: 5,
  name: "GPT-5.5",
  dev: "OpenAI",
  icon: "/images/icons/openai.com.png",
  url: "https://developers.openai.com/api/docs/models/gpt-5.5",
  bestFor: "Fast document and chart extraction",
  score: "95%",
  price: "$3.83",
  license: "Proprietary",
  custom: "1.87s",
  customLabel: "Vision latency"
}, {
  rank: 6,
  name: "Claude Opus 4.8",
  dev: "Anthropic",
  icon: "/images/icons/anthropic.com.png",
  url: "https://www.anthropic.com/news/claude-opus-4-8",
  bestFor: "Reliable agentic visual workflows",
  score: "94%",
  price: "$6.85",
  license: "Proprietary",
  custom: "Not disclosed",
  customLabel: "Vision latency"
}, {
  rank: 7,
  name: "Grok 4.5",
  dev: "xAI",
  icon: "/images/icons/x.ai.png",
  url: "https://docs.x.ai/developers/models/grok-4.5",
  bestFor: "Long-context multimodal reasoning",
  score: "94%",
  price: "$2.05",
  license: "Proprietary",
  custom: "6.57s",
  customLabel: "Vision latency"
}, {
  rank: 8,
  name: "Qwen3.7 Plus",
  dev: "Alibaba",
  icon: "/images/icons/qwen.ai.png",
  url: "https://qwen.ai/blog?id=qwen3.7-plus",
  bestFor: "Low-cost GUI and screen agents",
  score: "92%",
  price: "$0.41",
  license: "Proprietary",
  custom: "3.25s",
  customLabel: "Vision latency"
}, {
  rank: 9,
  name: "Kimi K2.6",
  dev: "Moonshot AI",
  icon: "/images/icons/kimi.com.png",
  url: "https://www.kimi.com/blog/kimi-k2-6",
  bestFor: "Open-weight agentic vision work",
  score: "91%",
  price: "$1.30",
  license: "Open weight",
  custom: "3.26s",
  customLabel: "Vision latency"
}, {
  rank: 10,
  name: "Claude Sonnet 5",
  dev: "Anthropic",
  icon: "/images/icons/anthropic.com.png",
  url: "https://www.anthropic.com/news/claude-sonnet-5",
  bestFor: "Balanced everyday vision work",
  score: "89%",
  price: "$4.12",
  license: "Proprietary",
  custom: "2.57s",
  customLabel: "Vision latency"
}, {
  rank: 11,
  name: "MiniMax-M3",
  dev: "MiniMax",
  icon: "/images/icons/minimax.io.png",
  url: "https://www.minimax.io/models/text/m3",
  bestFor: "Cheapest capable open-weight vision",
  score: "88%",
  price: "$0.39",
  license: "Open weight",
  custom: "3.22s",
  customLabel: "Vision latency"
}, {
  rank: 12,
  name: "Gemma 4 31B",
  dev: "Google",
  icon: "/images/icons/google.com.png",
  url: "https://huggingface.co/google/gemma-4-31B-it",
  bestFor: "Local vision on a high-end GPU",
  score: "86%",
  price: "$0.00",
  license: "Open weight",
  custom: "2.39s",
  customLabel: "Vision latency"
}, {
  rank: 13,
  name: "GLM-5V Turbo",
  dev: "Z.ai",
  icon: "/images/icons/z.ai.png",
  url: "https://docs.z.ai/guides/vlm/glm-5v-turbo",
  bestFor: "Vision-driven coding and UI work",
  score: "82%",
  price: "$1.23",
  license: "Proprietary",
  custom: "Not disclosed",
  customLabel: "Vision latency"
}, {
  rank: 14,
  name: "Claude Fable 5",
  dev: "Anthropic",
  icon: "/images/icons/anthropic.com.png",
  url: "https://www.anthropic.com/news/claude-fable-5-mythos-5",
  bestFor: "Frontier reasoning on complex documents",
  score: "75%",
  price: "$13.69",
  license: "Proprietary",
  custom: "Not disclosed",
  customLabel: "Vision latency"
}, {
  rank: 15,
  name: "GPT-5.6 Sol",
  dev: "OpenAI",
  icon: "/images/icons/openai.com.png",
  url: "https://openai.com/index/gpt-5-6/",
  bestFor: "Frontier reasoning on hard visuals",
  score: "74%",
  price: "$5.12",
  license: "Proprietary",
  custom: "26.97s",
  customLabel: "Vision latency"
}, {
  rank: 16,
  name: "Qwen3.6 27B",
  dev: "Alibaba",
  icon: "/images/icons/qwen.ai.png",
  url: "https://huggingface.co/Qwen/Qwen3.6-27B",
  bestFor: "Mid-range self-hosted vision",
  score: "68%",
  price: "$0.62",
  license: "Open weight",
  custom: "3.02s",
  customLabel: "Vision latency"
}, {
  rank: 17,
  name: "Qwen3.5 4B",
  dev: "Alibaba",
  icon: "/images/icons/qwen.ai.png",
  url: "https://huggingface.co/Qwen/Qwen3.5-4B",
  bestFor: "Vision on a typical laptop",
  score: "61%",
  price: "$0.03",
  license: "Open weight",
  custom: "0.70s",
  customLabel: "Vision latency"
}];

export const Fav = ({icon, size = "h-4 w-4"}) => <img src={icon} alt="" noZoom className={"relative -top-px mr-1 inline rounded-sm object-contain " + size} />;

export const LicenseBadge = ({license}) => license === "Open weight" ? <span className="inline-flex items-center rounded bg-emerald-50 px-1.5 py-[2px] text-xs font-medium leading-4 text-emerald-700 dark:bg-emerald-500/10 dark:text-emerald-400">Open weight</span> : <span className="inline-flex items-center rounded bg-zinc-100 px-1.5 py-[2px] text-xs font-medium leading-4 text-zinc-600 dark:bg-white/10 dark:text-zinc-300">Proprietary</span>;

export const BestForChip = ({children}) => <span className="inline-flex min-w-0 max-w-full items-center rounded bg-sky-50 px-1.5 py-[2px] dark:bg-sky-500/10">
    <span className="truncate text-xs font-medium leading-4 text-sky-700 dark:text-sky-400">{children}</span>
  </span>;

export const HeaderTip = ({label, tip}) => <span className="inline-flex items-center gap-1.5">
    <span>{label}</span>
    <Tooltip tip={tip}>
      <span className="relative top-0.5 inline-flex cursor-pointer text-zinc-500 transition-opacity hover:opacity-70 dark:text-zinc-400">
        <Icon icon="circle-info" size={12} color="currentColor" />
        <span className="sr-only">About {label.toLowerCase()}</span>
      </span>
    </Tooltip>
  </span>;

export const ModelCard = ({model, children}) => <section className="not-prose my-5 rounded-lg border border-zinc-200 bg-white p-5 shadow-sm dark:border-white/10 dark:bg-white/[0.03]">
    <div className="mb-3"><BestForChip>{model.bestFor}</BestForChip></div>
    <div className="flex items-center gap-3">
      <img src={model.icon} alt={model.dev + " logo"} noZoom className="h-10 w-10 shrink-0 rounded-lg object-contain" />
      <div className="min-w-0 flex-1">
        <h2 className="m-0 max-w-full text-xl font-semibold leading-7 tracking-normal">
          <a href={model.url} target="_blank" rel="noreferrer" className="group inline-flex min-w-0 max-w-full items-center gap-1.5 no-underline text-zinc-950 dark:text-white">
            <span className="min-w-0 break-words"><span className="underline-offset-4 group-hover:underline group-focus-visible:underline">{model.name}</span> <span className="font-normal text-zinc-500 dark:text-zinc-400">({model.dev})</span></span>
            <span aria-hidden="true" className="flex shrink-0 text-zinc-400 transition-colors group-hover:text-zinc-900 group-focus-visible:text-zinc-900 dark:text-zinc-500 dark:group-hover:text-white dark:group-focus-visible:text-white"><Icon icon="arrow-up-right" size={12} color="currentColor" /></span>
          </a>
        </h2>
        <div className="mt-1 flex flex-wrap items-center gap-x-2 gap-y-1 text-[13px] leading-5 uai-ink-muted">
          <LicenseBadge license={model.license} />
          <span aria-hidden="true">∙</span>
          <span>Score <span className="tabular-nums text-zinc-950 dark:text-white">{model.score}</span></span>
          <span aria-hidden="true">∙</span>
          <span>Price <span className="tabular-nums text-zinc-950 dark:text-white">{model.price}</span></span>
          {model.custom && <><span aria-hidden="true">∙</span><span>{model.customLabel} <span className="tabular-nums text-zinc-950 dark:text-white">{model.custom}</span></span></>}
        </div>
      </div>
    </div>
    {children}
  </section>;

export const Take = ({children}) => <div className="not-prose mt-4 text-sm leading-[22px] text-zinc-700 dark:text-zinc-300">{children}</div>;

export const ST = ({label, children}) => <div className="not-prose mt-4">
    <div className="text-sm font-semibold text-zinc-950 dark:text-white">{label}</div>
    <div className="mt-1 flex flex-col gap-2.5 text-sm leading-[22px] text-zinc-700 dark:text-zinc-300">{children}</div>
  </div>;

export const AccessBullets = ({rows}) => <div className="not-prose mt-4 text-sm leading-[22px] text-zinc-700 dark:text-zinc-300">
    <div className="font-semibold text-zinc-950 dark:text-white">How to access</div>
    <div className="mt-1.5 flex flex-col gap-1.5">
      {rows.map(([key, body]) => <span key={key} className="flex items-baseline gap-2.5"><span aria-hidden="true" className="relative -top-0.5 inline-block h-1.5 w-1.5 shrink-0 rounded-full bg-zinc-700 dark:bg-zinc-300" /><span><span className="font-semibold text-zinc-950 dark:text-white">{key}</span> — {body}</span></span>)}
    </div>
  </div>;

export const Alt = ({icon, name, dev, url, children}) => <span className="flex items-baseline gap-2.5">
    <span aria-hidden="true" className="relative -top-0.5 inline-block h-1.5 w-1.5 shrink-0 rounded-full bg-zinc-300 dark:bg-zinc-600" />
    <span><Fav icon={icon} /><a href={url} target="_blank" rel="noreferrer" className="font-medium text-zinc-950 underline underline-offset-2 dark:text-white">{name}</a> <span className="uai-ink-muted">({dev})</span> — {children}</span>
  </span>;

<div className="not-prose -mt-2 mb-8 flex flex-wrap items-center gap-x-2 text-sm text-zinc-800 dark:text-zinc-200 lg:-mt-5" style={{ paddingLeft: "2px" }}>
  <span className="inline-flex items-center gap-1.5"><Icon icon="clock-rotate-left" size={10} color="currentColor" /> Updated <time dateTime="2026-07-12">July 12, 2026</time></span>
</div>

Vision LLMs read images, screenshots, charts, and PDFs, then answer in text. The hard part is matching one to your job: a cheap high-volume reader and a frontier document-reasoner sit far apart on price, speed, and accuracy. These 17 picks cover both ends of that range.

## Best Vision LLMs

<div className="uai-overview-breakout not-prose my-5">
  <input type="checkbox" id="models-more" className="fy-more-toggle sr-only" aria-label={"Show all 17 vision llms models"} />

  <div className="fy-more-table overflow-x-auto rounded-lg border border-zinc-200 bg-white dark:border-white/10 dark:bg-white/[0.03]">
    <div className="table text-sm" style={{ width: "100%" }}>
      <div className="table-header-group bg-zinc-50/60 dark:bg-white/[0.02]">
        <div className="table-row">
          <span className="table-cell whitespace-nowrap px-4 py-2.5 text-left text-[13px] font-medium leading-5 text-zinc-500 dark:text-zinc-400">#</span>
          <span className="table-cell whitespace-nowrap px-4 py-2.5 text-left text-[13px] font-medium leading-5 text-zinc-500 dark:text-zinc-400">Model</span>
          <span className="table-cell whitespace-nowrap px-4 py-2.5 text-left text-[13px] font-medium leading-5 text-zinc-500 dark:text-zinc-400">Best for</span>

          <span className="table-cell whitespace-nowrap px-4 py-2.5 text-right text-[13px] font-medium leading-5 text-zinc-500 dark:text-zinc-400">
            <HeaderTip label="Score" tip={"UsefulAI's 0-100 vision score combines normalized Arena Vision preference and Artificial Analysis MMMU-Pro results. Higher is better."} />
          </span>

          <span className="table-cell whitespace-nowrap px-4 py-2.5 text-right text-[13px] font-medium leading-5 text-zinc-500 dark:text-zinc-400">
            <HeaderTip label="Price" tip={"Comparable USD per 1,000 one-megapixel images for the represented route. Tokenization, resolution, caching, and output can change the real cost."} />
          </span>

          <span className="table-cell whitespace-nowrap px-4 py-2.5 text-left text-[13px] font-medium leading-5 text-zinc-500 dark:text-zinc-400">
            <HeaderTip label="License" tip="Proprietary means no public model weights. Open weight means weights are available, though exact licenses and commercial-use terms vary." />
          </span>
        </div>
      </div>

      <div className="table-row-group">
        {models.map((model, index) => (
                        <a key={model.name} href={model.url} target="_blank" rel="noreferrer" className={"table-row no-underline transition-colors hover:bg-zinc-50/60 dark:hover:bg-white/[0.02]" + (models.length > 9 && index >= 7 ? " fy-more-row" : "")}>
                          <span className="table-cell w-8 whitespace-nowrap border-t border-zinc-100 px-4 py-3 align-middle text-[13px] tabular-nums dark:border-white/5"><span className="sr-only">Rank </span><span className="uai-ink-muted">{model.rank}</span></span>
                          <span className="table-cell whitespace-nowrap border-t border-zinc-100 px-4 py-3 align-middle dark:border-white/5"><span className="flex items-center gap-2.5"><Fav icon={model.icon} /><span className="text-sm font-semibold leading-5 text-zinc-950 dark:text-white">{model.name}</span></span></span>
                          <span className="table-cell whitespace-nowrap border-t border-zinc-100 px-4 py-3 align-middle text-[13px] leading-5 text-zinc-950 dark:border-white/5 dark:text-white"><span className="sr-only">Best for: </span>{model.bestFor}</span>
                          <span className="table-cell whitespace-nowrap border-t border-zinc-100 px-4 py-3 text-right align-middle text-[13px] leading-5 tabular-nums text-zinc-950 dark:border-white/5 dark:text-white"><span className="sr-only">Score: </span>{model.score}</span>
                          <span className="table-cell whitespace-nowrap border-t border-zinc-100 px-4 py-3 text-right align-middle text-[13px] leading-5 tabular-nums dark:border-white/5"><span className="sr-only">Price: </span><span className="uai-ink-muted">{model.price}</span></span>
                          <span className="table-cell whitespace-nowrap border-t border-zinc-100 px-4 py-3 align-middle dark:border-white/5"><span className="sr-only">License: </span><LicenseBadge license={model.license} /></span>
                        </a>
                      ))}
      </div>
    </div>
  </div>

  {models.length > 9 && <div className="fy-more-pill mt-3 flex justify-center">
      <label htmlFor="models-more" className="inline-flex cursor-pointer items-center gap-1.5 rounded-full border border-zinc-200 px-4 py-1.5 text-[13px] font-medium text-zinc-600 transition-colors hover:text-zinc-900 dark:border-white/15 dark:text-zinc-300 dark:hover:text-white">
        <span className="fy-more-open inline-flex items-center gap-1.5">Show {models.length - 7} more <Icon icon="chevron-down" size={13} /></span>
        <span className="fy-more-close items-center gap-1.5">Show less <Icon icon="chevron-up" size={13} /></span>
      </label>
    </div>}
</div>

***

<ModelCard model={models[0]}>
  <Take>The strongest complete benchmark performer here for dense documents, diagrams, and charts, if your work rewards precision over price.</Take>

  <ST label="Strengths:">
    <div>Opus 4.7 reads cluttered PDFs, nested tables, and technical figures with a care that cheaper models miss, and it stays reliable across long, multi-page documents.</div>
    <div>When a misread number is expensive, in finance, legal, or analytics, this is the safe pick.</div>
  </ST>

  <ST label="Tradeoffs:">
    <div>You pay premium rates, and it isn't the fastest to first response. For high-volume extraction where small errors are tolerable, Gemini 3.5 Flash and GPT-5.5 cost far less.</div>
    <div>Opus 4.8 is the newer sibling if you want the current flagship instead.</div>
  </ST>

  <AccessBullets
    rows={[
["App", <span>Available in <a href="https://claude.ai" target="_blank" rel="noreferrer" className="underline underline-offset-2">Claude</a>.</span>],
["API", <span>Accessible via <a href="https://platform.claude.com/docs/en/about-claude/models/overview" target="_blank" rel="noreferrer" className="underline underline-offset-2">Claude API</a>.</span>],
]}
  />
</ModelCard>

<ModelCard model={models[1]}>
  <Take>Google's low-cost workhorse ties for the highest complete score here while costing a fraction of the frontier models, making it the default for volume.</Take>

  <ST label="Strengths:">
    <div>Flash pairs near-top vision accuracy with pricing built for scale, so batch document parsing and screen reading stay affordable.</div>
    <div>It handles layout-heavy documents better than its price suggests, which makes it the sensible default for high-volume pipelines.</div>
  </ST>

  <ST label="Tradeoffs:">
    <div>Time to first token is slow for a Flash model, so it's less suited to snappy interactive use than GPT-5.5. On the hardest single-document reasoning, Opus 4.7 and Gemini 3.1 Pro pull ahead.</div>
    <div>Pick it for volume, not peak accuracy.</div>
  </ST>

  <AccessBullets
    rows={[
["App", <span>Available in <a href="https://gemini.google.com" target="_blank" rel="noreferrer" className="underline underline-offset-2">Gemini</a>.</span>],
["API", <span>Accessible via <a href="https://ai.google.dev/gemini-api/docs/models" target="_blank" rel="noreferrer" className="underline underline-offset-2">Gemini API</a> and <a href="https://docs.cloud.google.com/gemini-enterprise-agent-platform/models/gemini/3-5-flash" target="_blank" rel="noreferrer" className="underline underline-offset-2">Gemini Enterprise Agent Platform</a>.</span>],
]}
  />
</ModelCard>

<ModelCard model={models[2]}>
  <Take>The benchmarked Muse Spark release is a strong natively multimodal reasoner, but its direct route is Meta AI rather than a public API or self-hosting.</Take>

  <ST label="Strengths:">
    <div>Built from the ground up to reason across images, audio, and tools in one model, Muse Spark is a capable option for multimodal help inside Meta AI.</div>
  </ST>

  <ST label="Tradeoffs:">
    <div>The benchmarked version has no public API, local route, image price, or comparable latency. Meta's newer Muse Spark 1.1 has a public-preview API but is not the model scored here.</div>
    <div>Choose Gemini 3.5 Flash or GPT-5.5 if you need a benchmarked API model.</div>
  </ST>

  <AccessBullets
    rows={[
["App", <span>Available in <a href="https://www.meta.ai/" target="_blank" rel="noreferrer" className="underline underline-offset-2">Meta AI</a>.</span>],
]}
  />
</ModelCard>

<ModelCard model={models[3]}>
  <Take>The Pro-tier Gemini for tasks that need careful visual reasoning rather than fast extraction, deeper than Flash and priced close to it.</Take>

  <ST label="Strengths:">
    <div>Gemini 3.1 Pro is designed for multi-step visual reasoning - reading a chart, connecting it to surrounding text, and drawing a conclusion - while staying inexpensive.</div>
    <div>It's a strong middle ground when accuracy matters but frontier prices don't fit.</div>
  </ST>

  <ST label="Tradeoffs:">
    <div>It's a preview model and slow to first token, so it's poor for latency-sensitive or high-volume work where Flash is faster and cheaper.</div>
    <div>On the very hardest documents, Opus 4.7 still edges it. Confirm preview stability before you depend on it.</div>
  </ST>

  <AccessBullets
    rows={[
["App", <span>Available in <a href="https://gemini.google.com" target="_blank" rel="noreferrer" className="underline underline-offset-2">Gemini</a>.</span>],
["API", <span>Accessible via <a href="https://ai.google.dev/gemini-api/docs/models/gemini-3.1-pro-preview" target="_blank" rel="noreferrer" className="underline underline-offset-2">Gemini API</a> and <a href="https://docs.cloud.google.com/gemini-enterprise-agent-platform/models/gemini/3-1-pro" target="_blank" rel="noreferrer" className="underline underline-offset-2">Gemini Enterprise Agent Platform</a>.</span>],
]}
  />
</ModelCard>

<ModelCard model={models[4]}>
  <Take>OpenAI's fastest strong vision model returns a quick first response with excellent document, chart, and layout reading, ideal for interactive tools.</Take>

  <ST label="Strengths:">
    <div>GPT-5.5 returns a first token faster than the other highlighted frontier models while remaining strong on documents, charts, and screenshots.</div>
    <div>That combination makes it the standout for interactive workflows where responsiveness is the point.</div>
  </ST>

  <ST label="Tradeoffs:">
    <div>It costs substantially more than the Gemini tier for a similar overall score, so the premium only makes sense when its much faster first response matters.</div>
    <div>For batch processing, Gemini 3.5 Flash is the better-value option.</div>
  </ST>

  <AccessBullets
    rows={[
["App", <span>Available in <a href="https://chatgpt.com" target="_blank" rel="noreferrer" className="underline underline-offset-2">ChatGPT</a>.</span>],
["API", <span>Accessible via <a href="https://developers.openai.com/api/docs/models/gpt-5.5" target="_blank" rel="noreferrer" className="underline underline-offset-2">OpenAI API</a>.</span>],
]}
  />
</ModelCard>

<ModelCard model={models[5]}>
  <Take>Anthropic's current flagship is tuned to be more honest and reliable than 4.7, making it the pick when a vision agent runs unattended.</Take>

  <ST label="Strengths:">
    <div>Opus 4.8 is Anthropic's current flagship for PDFs, diagrams, messy layouts, and agentic work.</div>
    <div>It is the better default than 4.7 when current model support and unattended workflows matter more than the older version's stronger complete benchmark result.</div>
  </ST>

  <ST label="Tradeoffs:">
    <div>It's among the priciest models here, so for straightforward extraction it's overkill; Gemini 3.5 Flash and Qwen3.7 Plus do that job for far less.</div>
    <div>Reach for 4.8 when reliability under autonomy, not cost, is what you're optimizing for.</div>
  </ST>

  <AccessBullets
    rows={[
["App", <span>Available in <a href="https://claude.ai" target="_blank" rel="noreferrer" className="underline underline-offset-2">Claude</a>.</span>],
["API", <span>Accessible via <a href="https://platform.claude.com/docs/en/about-claude/models/overview" target="_blank" rel="noreferrer" className="underline underline-offset-2">Claude API</a> and <a href="https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-anthropic-claude-opus-4-8.html" target="_blank" rel="noreferrer" className="underline underline-offset-2">Amazon Bedrock</a>.</span>],
]}
  />
</ModelCard>

<ModelCard model={models[6]}>
  <Take>xAI's flagship pairs strong multimodal reasoning with a very large context window, so it can hold many images and long documents at once.</Take>

  <ST label="Strengths:">
    <div>Grok 4.5 keeps many images and long documents in one context, which suits multi-image comparisons and large visual workloads.</div>
    <div>It's priced below the top Claude and GPT tiers for that capability.</div>
  </ST>

  <ST label="Tradeoffs:">
    <div>Independent vision benchmarking is still thin, so treat its standing as less settled than Gemini's or Claude's. For document precision, Opus 4.7 and GPT-5.5 have a longer track record.</div>
    <div>It's at its best when context size is the binding constraint.</div>
  </ST>

  <AccessBullets
    rows={[
["App", <span>Available in <a href="https://grok.com" target="_blank" rel="noreferrer" className="underline underline-offset-2">Grok</a>.</span>],
["API", <span>Accessible via <a href="https://docs.x.ai/developers/models/grok-4.5" target="_blank" rel="noreferrer" className="underline underline-offset-2">xAI API</a>.</span>],
]}
  />
</ModelCard>

<ModelCard model={models[7]}>
  <Take>A cheap, fast multimodal agent model built to read screens and drive interfaces, with strong value for GUI automation and screenshot work.</Take>

  <ST label="Strengths:">
    <div>Qwen3.7 Plus reads screens and images and is tuned for agentic GUI and CLI tasks, all at a fraction of frontier pricing.</div>
    <div>If you're building screen-reading or app-navigating agents at scale, the cost-to-capability ratio here is hard to beat.</div>
  </ST>

  <ST label="Tradeoffs:">
    <div>It's proprietary and API-only, with no first-party app or local route, and on the hardest document reasoning it sits below Opus 4.7 and Gemini 3.1 Pro.</div>
    <div>Great for high-volume agent work, weaker for peak-accuracy analysis.</div>
  </ST>

  <AccessBullets
    rows={[
["API", <span>Accessible via <a href="https://www.alibabacloud.com/help/en/model-studio/models" target="_blank" rel="noreferrer" className="underline underline-offset-2">Alibaba Cloud Model Studio</a>.</span>],
]}
  />
</ModelCard>

<ModelCard model={models[8]}>
  <Take>The strongest open-weight pick here for agentic multimodal work, with a hosted app and API if you'd rather not run it yourself.</Take>

  <ST label="Strengths:">
    <div>Kimi K2.6 brings capable image understanding to a genuinely open-weight model, and it holds up on long-context, agent-style tasks.</div>
    <div>You get a hosted app and API for convenience, plus the option to inspect or self-host the weights when you need control.</div>
  </ST>

  <ST label="Tradeoffs:">
    <div>It's a trillion-parameter model, so "open weight" doesn't mean local; realistic self-hosting needs serious infrastructure, not a workstation.</div>
    <div>For pure document accuracy, Opus 4.7 and Gemini still lead. Choose it when open weights genuinely matter to you.</div>
  </ST>

  <AccessBullets
    rows={[
["App", <span>Available in <a href="https://www.kimi.com" target="_blank" rel="noreferrer" className="underline underline-offset-2">Kimi</a>.</span>],
["API", <span>Accessible via <a href="https://platform.kimi.ai/docs/guide/kimi-k2-6-quickstart" target="_blank" rel="noreferrer" className="underline underline-offset-2">Kimi Platform</a> and <a href="https://openrouter.ai/moonshotai/kimi-k2.6" target="_blank" rel="noreferrer" className="underline underline-offset-2">OpenRouter</a>.</span>],
["Run locally", <span>Open weights are available from <a href="https://huggingface.co/moonshotai/Kimi-K2.6" target="_blank" rel="noreferrer" className="underline underline-offset-2">Hugging Face</a>, but in practice this needs self-hosting infrastructure, not a local machine.</span>],
]}
  />
</ModelCard>

<ModelCard model={models[9]}>
  <Take>Anthropic's balanced daily driver delivers fast, reliable vision that covers most everyday document and image tasks without paying Opus prices.</Take>

  <ST label="Strengths:">
    <div>Sonnet 5 handles the bulk of real vision work - reading documents, screenshots, and charts - quickly and dependably, with the same careful behavior as the Opus line.</div>
    <div>For most teams it hits the sweet spot of speed, accuracy, and cost.</div>
  </ST>

  <ST label="Tradeoffs:">
    <div>On the hardest, densest documents it gives up ground to Opus 4.7 and 4.8, and cheaper models like Gemini 3.5 Flash undercut it on price.</div>
    <div>Step up to Opus when precision is critical, step down when volume rules.</div>
  </ST>

  <AccessBullets
    rows={[
["App", <span>Available in <a href="https://claude.ai" target="_blank" rel="noreferrer" className="underline underline-offset-2">Claude</a>.</span>],
["API", <span>Accessible via <a href="https://platform.claude.com/docs/en/about-claude/models/overview" target="_blank" rel="noreferrer" className="underline underline-offset-2">Claude API</a>.</span>],
]}
  />
</ModelCard>

<ModelCard model={models[10]}>
  <Take>About the cheapest way to get solid open-weight vision through an API, and a strong value if raw cost is your main driver.</Take>

  <ST label="Strengths:">
    <div>MiniMax-M3 delivers competent image and document understanding at rock-bottom hosted pricing, and its open weights let you route it through whichever host is cheapest.</div>
    <div>For high-volume, cost-sensitive vision where you don't need frontier accuracy, it's a smart budget option.</div>
  </ST>

  <ST label="Tradeoffs:">
    <div>Despite open weights, it's too large for practical local use, so you're on a hosted API anyway. It trails Kimi K2.6 and the proprietary leaders on hard reasoning.</div>
    <div>Pick it for price, and look elsewhere for peak accuracy.</div>
  </ST>

  <AccessBullets
    rows={[
["API", <span>Accessible via <a href="https://platform.minimax.io/docs/guides/models-intro" target="_blank" rel="noreferrer" className="underline underline-offset-2">MiniMax API</a> and <a href="https://openrouter.ai/minimax/minimax-m3" target="_blank" rel="noreferrer" className="underline underline-offset-2">OpenRouter</a>.</span>],
["Run locally", <span>Open weights are available from <a href="https://huggingface.co/MiniMaxAI/MiniMax-M3" target="_blank" rel="noreferrer" className="underline underline-offset-2">Hugging Face</a>, but in practice this needs self-hosting infrastructure, not a local machine.</span>],
]}
  />
</ModelCard>

<ModelCard model={models[11]}>
  <Take>The best genuinely self-hostable vision model here: with a strong GPU you get capable image understanding without a mandatory metered API fee.</Take>

  <ST label="Strengths:">
    <div>Gemma 4 31B runs locally on a high-end machine, giving you private, offline vision without a model-usage fee. It's also currently free through a hosted route if you'd rather not manage hardware.</div>
    <div>That makes it useful for privacy-sensitive work, although local hardware still has a cost.</div>
  </ST>

  <ST label="Tradeoffs:">
    <div>You need a serious GPU and enough memory to run it well, and it trails the proprietary leaders on the hardest documents.</div>
    <div>If you can use the cloud, Gemini 3.5 Flash is stronger and still cheap. Choose it for control and privacy.</div>
  </ST>

  <AccessBullets
    rows={[
["API", <span>Accessible via <a href="https://openrouter.ai/google/gemma-4-31b-it:free" target="_blank" rel="noreferrer" className="underline underline-offset-2">OpenRouter</a>.</span>],
["Run locally", <span>If you have a high-end machine, you can run it with <a href="https://ollama.com/library/gemma4:31b" target="_blank" rel="noreferrer" className="underline underline-offset-2">Ollama</a> after downloading weights from <a href="https://huggingface.co/google/gemma-4-31B-it" target="_blank" rel="noreferrer" className="underline underline-offset-2">Hugging Face</a>.</span>],
]}
  />
</ModelCard>

<ModelCard model={models[12]}>
  <Take>A native multimodal model tuned to turn what it sees - screenshots, design drafts, layouts - into working code and UI actions.</Take>

  <ST label="Strengths:">
    <div>GLM-5V Turbo is built to fuse visual perception with code, so screenshot-to-code, design-to-UI, and layout-driven agent tasks land better than on general vision models.</div>
    <div>If your vision work ends in code or interface actions, this is a purpose-built option.</div>
  </ST>

  <ST label="Tradeoffs:">
    <div>It's narrower than the generalist leaders and weaker on open-ended document reasoning, where Opus 4.7 and Gemini 3.1 Pro do more, and its latency isn't published.</div>
    <div>Reach for it for vision-to-code specifically, not broad visual analysis.</div>
  </ST>

  <AccessBullets
    rows={[
["API", <span>Accessible via <a href="https://docs.z.ai/guides/vlm/glm-5v-turbo" target="_blank" rel="noreferrer" className="underline underline-offset-2">Z.ai API</a>.</span>],
]}
  />
</ModelCard>

<ModelCard model={models[13]}>
  <Take>Anthropic's new premium model targets deeply nested diagrams and tables, but at the highest price here it's overkill for routine vision.</Take>

  <ST label="Strengths:">
    <div>Fable 5 excels at the hardest, most document-heavy reasoning - untangling diagrams, charts, and tables buried inside long PDFs - and it can carry demanding, long-horizon analysis further than lighter models.</div>
    <div>When a problem genuinely needs frontier reasoning over visuals, it delivers.</div>
  </ST>

  <ST label="Tradeoffs:">
    <div>The price is the dealbreaker for everyday vision; it's the most expensive model here by a wide margin, and its standardized vision-benchmark coverage is thin.</div>
    <div>For most document work, Opus 4.7 and Sonnet 5 give you most of the value for far less.</div>
  </ST>

  <AccessBullets
    rows={[
["App", <span>Available in <a href="https://claude.ai" target="_blank" rel="noreferrer" className="underline underline-offset-2">Claude</a>.</span>],
["API", <span>Accessible via <a href="https://platform.claude.com/docs/en/about-claude/models/overview" target="_blank" rel="noreferrer" className="underline underline-offset-2">Claude API</a>.</span>],
]}
  />
</ModelCard>

<ModelCard model={models[14]}>
  <Take>OpenAI's newest frontier model brings heavy reasoning to visual problems, but very high latency makes it a deliberate choice, not an interactive one.</Take>

  <ST label="Strengths:">
    <div>GPT-5.6 Sol applies top-tier reasoning to hard visual and document problems, and when a task rewards slow, careful analysis over speed, that depth shows.</div>
    <div>It's a serious option for complex, high-stakes visual reasoning where you can afford to wait for the answer.</div>
  </ST>

  <ST label="Tradeoffs:">
    <div>First-token latency is the highest here by far and it's expensive, so it's wrong for interactive or high-volume vision. As a new release its vision-benchmark standing is still thin.</div>
    <div>For fast document work, GPT-5.5 is far quicker and cheaper.</div>
  </ST>

  <AccessBullets
    rows={[
["App", <span>Available in <a href="https://chatgpt.com" target="_blank" rel="noreferrer" className="underline underline-offset-2">ChatGPT</a>.</span>],
["API", <span>Accessible via <a href="https://developers.openai.com/api/docs/models/gpt-5.6-sol" target="_blank" rel="noreferrer" className="underline underline-offset-2">OpenAI API</a>.</span>],
]}
  />
</ModelCard>

<ModelCard model={models[15]}>
  <Take>A mid-tier open-weight model you can self-host on strong hardware or call cheaply through an API, with decent rather than leading vision.</Take>

  <ST label="Strengths:">
    <div>Qwen3.6 27B gives you open weights and a real self-hosting path on a high-end machine, plus cheap hosted access if you prefer.</div>
    <div>For private, moderate-stakes vision work where you want control without the largest models' footprint, it's a reasonable middle option.</div>
  </ST>

  <ST label="Tradeoffs:">
    <div>Accuracy sits well behind the leaders, so it's not for demanding analysis.</div>
    <div>Gemma 4 31B is a stronger open-weight pick at a similar size, making Qwen3.6 27B hard to choose unless its deployment profile fits your constraints better.</div>
  </ST>

  <AccessBullets
    rows={[
["API", <span>Accessible via <a href="https://www.alibabacloud.com/help/en/model-studio/vision" target="_blank" rel="noreferrer" className="underline underline-offset-2">Alibaba Cloud Model Studio</a> and <a href="https://openrouter.ai/qwen/qwen3.6-27b" target="_blank" rel="noreferrer" className="underline underline-offset-2">OpenRouter</a>.</span>],
["Run locally", <span>If you have a high-end machine, you can run it with <a href="https://huggingface.co/docs/transformers/index" target="_blank" rel="noreferrer" className="underline underline-offset-2">Transformers</a> after downloading weights from <a href="https://huggingface.co/Qwen/Qwen3.6-27B" target="_blank" rel="noreferrer" className="underline underline-offset-2">Hugging Face</a>.</span>],
]}
  />
</ModelCard>

<ModelCard model={models[16]}>
  <Take>The one model here that genuinely runs on a normal laptop: small and limited, but private and practical for light vision.</Take>

  <ST label="Strengths:">
    <div>Qwen3.5 4B is small enough to run on a typical machine, giving you offline, private image understanding without a model-usage fee.</div>
    <div>For simple captioning, basic document reading, and on-device prototyping, it's a genuinely useful small model; actual speed depends on your hardware and quantization.</div>
  </ST>

  <ST label="Tradeoffs:">
    <div>It has the lowest accuracy here, so it struggles with anything complex or detail-critical; don't trust it on dense documents.</div>
    <div>For real analysis, almost everything above it is far stronger. Use it for light, local, low-stakes tasks only.</div>
  </ST>

  <AccessBullets
    rows={[
["API", <span>Accessible via <a href="https://huggingface.co/Qwen/Qwen3.5-4B" target="_blank" rel="noreferrer" className="underline underline-offset-2">Hugging Face Inference Providers</a>.</span>],
["Run locally", <span>You can run it locally with <a href="https://ollama.com/library/qwen3.5:4b" target="_blank" rel="noreferrer" className="underline underline-offset-2">Ollama</a> after downloading weights from <a href="https://huggingface.co/Qwen/Qwen3.5-4B" target="_blank" rel="noreferrer" className="underline underline-offset-2">Hugging Face</a>.</span>],
]}
  />
</ModelCard>

***

## How to Choose

When choosing between these models, consider:

* **Access:** Decide first whether you'll use the model in an app, call it through an API, or run it locally, because that single choice drives cost, privacy, latency, and setup work more than small score differences do. Qwen3.5 4B runs on a typical laptop; Gemma 4 31B and Qwen3.6 27B need high-end local hardware. Open-weight leaders like Kimi K2.6 and MiniMax-M3 need self-hosting infrastructure, not a workstation.
* **Quality:** We use a vision score that blends Arena's vision arena (human preference, style-controlled) with Artificial Analysis's MMMU-Pro visual reasoning, normalized to a percentage. Two caveats matter. Claude Opus 4.8 and Grok 4.5 carry observed-only scores that aren't directly comparable to the fully benchmarked models above them, and the newest premium models, Claude Fable 5 and GPT-5.6 Sol, rank lower than their reputations suggest mainly because standardized vision coverage lags their release.
* **Price:** We compare USD per 1,000 one-megapixel images at 1024x1024, image input only. It's the cleanest way to line up costs, though your real bill also depends on the text tokens each request generates.
* **Vision Latency:** Time to first token for one image plus roughly 1,000 input tokens, where lower is better. It captures responsiveness, not throughput. Gemini 3.5 Flash is slow to first token but built for high-volume batches, so match the metric to how you'll actually use the model.

***

## Other Models We Considered

<div className="not-prose my-4 flex flex-col gap-1.5 text-sm text-zinc-700 dark:text-zinc-300">
  <Alt icon={"/images/icons/qwen.ai.png"} name={"Qwen3.5 397B A17B"} dev={"Alibaba"} url={"https://huggingface.co/Qwen/Qwen3.5-397B-A17B"}>Tops the Qwen3.5 line on quality, but far too large for local use.</Alt>
  <Alt icon={"/images/icons/google.com.png"} name={"Gemini 3 Pro"} dev={"Google"} url={"https://ai.google.dev/gemini-api/docs/models/gemini-3-pro-preview"}>Excellent in its day, now retired in favor of Gemini 3.1 Pro.</Alt>
  <Alt icon={"/images/icons/qwen.ai.png"} name={"Qwen3-VL 235B A22B"} dev={"Alibaba"} url={"https://huggingface.co/Qwen/Qwen3-VL-235B-A22B-Instruct"}>Popular incumbent with mature tooling, now superseded by newer Qwen models.</Alt>
  <Alt icon={"/images/icons/huggingface.co.png"} name={"Moondream 3.1 9B A2B"} dev={"Moondream"} url={"https://moondream.ai/models/moondream_3-1_9B_A2B"}>Tiny local specialist for captioning, detection, and pointing on edge hardware.</Alt>
  <Alt icon={"/images/icons/openai.com.png"} name={"GPT-4o"} dev={"OpenAI"} url={"https://openai.com/index/hello-gpt-4o/"}>The multimodal baseline everyone knew, but the app and API route is retired.</Alt>
  <Alt icon={"/images/icons/qwen.ai.png"} name={"Qwen2.5-VL 72B"} dev={"Alibaba"} url={"https://huggingface.co/Qwen/Qwen2.5-VL-72B-Instruct"}>Familiar predecessor still in existing deployments, since surpassed by newer models.</Alt>
  <Alt icon={"/images/icons/huggingface.co.png"} name={"LLaVA-OneVision 72B"} dev={"LLaVA contributors"} url={"https://huggingface.co/lmms-lab/llava-onevision-qwen2-72b-ov-sft"}>A recognizable open baseline, now well behind current vision models.</Alt>
</div>

***

## Frequently Asked Questions

<AccordionGroup>
  <Accordion title={"What is the best vision LLM right now?"}>
    For peak document and diagram accuracy, Claude Opus 4.7 leads. For the best mix of accuracy and price, Gemini 3.5 Flash is the default recommendation; choose GPT-5.5 when first-response latency matters more.
  </Accordion>

  <Accordion title={"What is the best vision LLM for most people?"}>
    Gemini 3.5 Flash covers the widest range of everyday image and document work cheaply and well. If you want Anthropic's careful reading at a moderate price, Claude Sonnet 5 is the close alternative.
  </Accordion>

  <Accordion title={"What is the best cheap or free vision LLM?"}>
    Gemma 4 31B has no model-usage fee when run locally on a high-end machine and is currently free through a hosted route. Qwen3.5 4B costs almost nothing and runs on a normal laptop, while MiniMax-M3 is the cheapest capable paid hosted option.
  </Accordion>

  <Accordion title={"What is the best vision LLM you can run locally?"}>
    Qwen3.5 4B is the only pick here that runs on a typical laptop. If you have a high-end GPU, Gemma 4 31B is the stronger local choice.
  </Accordion>

  <Accordion title={"What is the best open-weight vision LLM?"}>
    Kimi K2.6 is the strongest open-weight model on this list, though it's large enough that most people will use it hosted rather than self-hosted.
  </Accordion>

  <Accordion title={"Is Gemini 3.5 Flash better than GPT-5.5?"}>
    It depends on the job. Flash is much cheaper and is the better-value batch option; GPT-5.5 returns a much faster first response. For interactive tools, GPT-5.5; for high-volume pipelines, Flash.
  </Accordion>

  <Accordion title={"Do vision benchmarks match real-world use?"}>
    Roughly. They track document reading and visual reasoning well, but they don't capture your exact images, latency needs, or task mix. Test the top two or three candidates on your own inputs before committing.
  </Accordion>

  <Accordion title={"What should I use instead of GPT-4o?"}>
    GPT-5.5 is the direct upgrade for fast, high-detail document reading. If cost and volume matter more, Gemini 3.5 Flash is the better move.
  </Accordion>
</AccordionGroup>
