Comprehensive comparison table showcasing leading AI models with detailed performance metrics, pricing analysis, and capability assessments. Features interactive filtering, sorting capabilities, and side-by-side comparisons for informed model selection and evaluation.
Files
"use client"
import { SVGProps, useState } from "react"
import { Check, X } from "lucide-react"
const GeminiIcon = (props: SVGProps<SVGSVGElement>) => (
<svg
height="1em"
preserveAspectRatio="xMidYMid"
viewBox="0 0 256 258"
width="1em"
xmlns="http://www.w3.org/2000/svg"
{...props}
>
<defs>
<radialGradient
cx="78.302%"
cy="55.52%"
fx="78.302%"
fy="55.52%"
gradientTransform="scale(.99947 1) rotate(78.858 .783 .555)"
id="gemini-gradient-primary"
r="78.115%"
>
<stop offset="0%" stopColor="#1BA1E3" />
<stop offset=".01%" stopColor="#1BA1E3" />
<stop offset="30.022%" stopColor="#5489D6" />
<stop offset="54.552%" stopColor="#9B72CB" />
<stop offset="82.537%" stopColor="#D96570" />
<stop offset="100%" stopColor="#F49C46" />
</radialGradient>
<radialGradient
cx="-3.409%"
cy="-54.219%"
fx="-3.409%"
fy="-54.219%"
gradientTransform="scale(.99946 1) rotate(78.858 -.034 -.542)"
id="gemini-gradient-secondary"
r="169.363%"
>
<stop offset="0%" stopColor="#1BA1E3" />
<stop offset=".01%" stopColor="#1BA1E3" />
<stop offset="30.022%" stopColor="#5489D6" />
<stop offset="54.552%" stopColor="#9B72CB" />
<stop offset="82.537%" stopColor="#D96570" />
<stop offset="100%" stopColor="#F49C46" />
</radialGradient>
</defs>
<path
d="m122.062 172.77-10.27 23.52c-3.947 9.042-16.459 9.042-20.406 0l-10.27-23.52c-9.14-20.933-25.59-37.595-46.108-46.703L6.74 113.52c-8.987-3.99-8.987-17.064 0-21.053l27.385-12.156C55.172 70.97 71.917 53.69 80.9 32.043L91.303 6.977c3.86-9.303 16.712-9.303 20.573 0l10.403 25.066c8.983 21.646 25.728 38.926 46.775 48.268l27.384 12.156c8.987 3.99 8.987 17.063 0 21.053l-28.267 12.547c-20.52 9.108-36.97 25.77-46.109 46.703Z"
fill="url(#gemini-gradient-primary)"
/>
<path
d="m217.5 246.937-2.888 6.62c-2.114 4.845-8.824 4.845-10.937 0l-2.889-6.62c-5.148-11.803-14.42-21.2-25.992-26.34l-8.898-3.954c-4.811-2.137-4.811-9.131 0-11.269l8.4-3.733c11.87-5.273 21.308-15.017 26.368-27.22l2.966-7.154c2.067-4.985 8.96-4.985 11.027 0l2.966 7.153c5.06 12.204 14.499 21.948 26.368 27.221l8.4 3.733c4.812 2.138 4.812 9.132 0 11.27l-8.898 3.953c-11.571 5.14-20.844 14.537-25.992 26.34Z"
fill="url(#gemini-gradient-secondary)"
/>
</svg>
)
const OpenAIIcon = (props: SVGProps<SVGSVGElement>) => (
<svg
height="1em"
preserveAspectRatio="xMidYMid"
viewBox="0 0 256 260"
width="1em"
xmlns="http://www.w3.org/2000/svg"
{...props}
>
<path d="M239.184 106.203a64.716 64.716 0 0 0-5.576-53.103C219.452 28.459 191 15.784 163.213 21.74A65.586 65.586 0 0 0 52.096 45.22a64.716 64.716 0 0 0-43.23 31.36c-14.31 24.602-11.061 55.634 8.033 76.74a64.665 64.665 0 0 0 5.525 53.102c14.174 24.65 42.644 37.324 70.446 31.36a64.72 64.72 0 0 0 48.754 21.744c28.481.025 53.714-18.361 62.414-45.481a64.767 64.767 0 0 0 43.229-31.36c14.137-24.558 10.875-55.423-8.083-76.483Zm-97.56 136.338a48.397 48.397 0 0 1-31.105-11.255l1.535-.87 51.67-29.825a8.595 8.595 0 0 0 4.247-7.367v-72.85l21.845 12.636c.218.111.37.32.409.563v60.367c-.056 26.818-21.783 48.545-48.601 48.601Zm-104.466-44.61a48.345 48.345 0 0 1-5.781-32.589l1.534.921 51.722 29.826a8.339 8.339 0 0 0 8.441 0l63.181-36.425v25.221a.87.87 0 0 1-.358.665l-52.335 30.184c-23.257 13.398-52.97 5.431-66.404-17.803ZM23.549 85.38a48.499 48.499 0 0 1 25.58-21.333v61.39a8.288 8.288 0 0 0 4.195 7.316l62.874 36.272-21.845 12.636a.819.819 0 0 1-.767 0L41.353 151.53c-23.211-13.454-31.171-43.144-17.804-66.405v.256Zm179.466 41.695-63.08-36.63L161.73 77.86a.819.819 0 0 1 .768 0l52.233 30.184a48.6 48.6 0 0 1-7.316 87.635v-61.391a8.544 8.544 0 0 0-4.4-7.213Zm21.742-32.69-1.535-.922-51.619-30.081a8.39 8.39 0 0 0-8.492 0L99.98 99.808V74.587a.716.716 0 0 1 .307-.665l52.233-30.133a48.652 48.652 0 0 1 72.236 50.391v.205ZM88.061 139.097l-21.845-12.585a.87.87 0 0 1-.41-.614V65.685a48.652 48.652 0 0 1 79.757-37.346l-1.535.87-51.67 29.825a8.595 8.595 0 0 0-4.246 7.367l-.051 72.697Zm11.868-25.58 28.138-16.217 28.188 16.218v32.434l-28.086 16.218-28.188-16.218-.052-32.434Z" />
</svg>
)
const ClaudeAIIcon = (props: SVGProps<SVGSVGElement>) => (
<svg
height="1em"
preserveAspectRatio="xMidYMid"
viewBox="0 0 256 257"
width="1em"
xmlns="http://www.w3.org/2000/svg"
{...props}
>
<path
d="m50.228 170.321 50.357-28.257.843-2.463-.843-1.361h-2.462l-8.426-.518-28.775-.778-24.952-1.037-24.175-1.296-6.092-1.297L0 125.796l.583-3.759 5.12-3.434 7.324.648 16.202 1.101 24.304 1.685 17.629 1.037 26.118 2.722h4.148l.583-1.685-1.426-1.037-1.101-1.037-25.147-17.045-27.22-18.017-14.258-10.37-7.713-5.25-3.888-4.925-1.685-10.758 7-7.713 9.397.649 2.398.648 9.527 7.323 20.35 15.75L94.817 91.9l3.889 3.24 1.555-1.102.195-.777-1.75-2.917-14.453-26.118-15.425-26.572-6.87-11.018-1.814-6.61c-.648-2.723-1.102-4.991-1.102-7.778l7.972-10.823L71.42 0 82.05 1.426l4.472 3.888 6.61 15.101 10.694 23.786 16.591 32.34 4.861 9.592 2.592 8.879.973 2.722h1.685v-1.556l1.36-18.211 2.528-22.36 2.463-28.776.843-8.1 4.018-9.722 7.971-5.25 6.222 2.981 5.12 7.324-.713 4.73-3.046 19.768-5.962 30.98-3.889 20.739h2.268l2.593-2.593 10.499-13.934 17.628-22.036 7.778-8.749 9.073-9.657 5.833-4.601h11.018l8.1 12.055-3.628 12.443-11.342 14.388-9.398 12.184-13.48 18.147-8.426 14.518.778 1.166 2.01-.194 30.46-6.481 16.462-2.982 19.637-3.37 8.88 4.148.971 4.213-3.5 8.62-20.998 5.184-24.628 4.926-36.682 8.685-.454.324.519.648 16.526 1.555 7.065.389h17.304l32.21 2.398 8.426 5.574 5.055 6.805-.843 5.184-12.962 6.611-17.498-4.148-40.83-9.721-14-3.5h-1.944v1.167l11.666 11.406 21.387 19.314 26.767 24.887 1.36 6.157-3.434 4.86-3.63-.518-23.526-17.693-9.073-7.972-20.545-17.304h-1.36v1.814l4.73 6.935 25.017 37.59 1.296 11.536-1.814 3.76-6.481 2.268-7.13-1.297-14.647-20.544-15.1-23.138-12.185-20.739-1.49.843-7.194 77.448-3.37 3.953-7.778 2.981-6.48-4.925-3.436-7.972 3.435-15.749 4.148-20.544 3.37-16.333 3.046-20.285 1.815-6.74-.13-.454-1.49.194-15.295 20.999-23.267 31.433-18.406 19.702-4.407 1.75-7.648-3.954.713-7.064 4.277-6.286 25.47-32.405 15.36-20.092 9.917-11.6-.065-1.686h-.583L44.07 198.125l-12.055 1.555-5.185-4.86.648-7.972 2.463-2.593 20.35-13.999-.064.065Z"
fill="#D97757"
/>
</svg>
)
const DeepSeekIcon = (props: SVGProps<SVGSVGElement>) => (
<svg
height="1em"
viewBox="0 0 256 256"
width="1em"
xmlns="http://www.w3.org/2000/svg"
{...props}
>
<rect fill="#1E88E5" height="256" rx="32" width="256" />
<path
d="M128 64L64 128l64 64 64-64-64-64zm0 24l40 40-40 40-40-40 40-40z"
fill="white"
/>
</svg>
)
const XAIIcon = (props: SVGProps<SVGSVGElement>) => (
<svg
height="1em"
viewBox="0 0 256 256"
width="1em"
xmlns="http://www.w3.org/2000/svg"
{...props}
>
<rect fill="#000000" height="256" width="256" />
<path
d="M64 64l64 64-64 64m64-128l64 64-64 64"
fill="none"
stroke="white"
strokeLinecap="round"
strokeWidth="24"
/>
</svg>
)
const MetaIcon = (props: SVGProps<SVGSVGElement>) => (
<svg
height="1em"
viewBox="0 0 256 256"
width="1em"
xmlns="http://www.w3.org/2000/svg"
{...props}
>
<defs>
<linearGradient id="meta-gradient" x1="0%" x2="100%" y1="0%" y2="100%">
<stop offset="0%" stopColor="#0081FB" />
<stop offset="100%" stopColor="#0064E0" />
</linearGradient>
</defs>
<path
d="M128 0C57.3 0 0 57.3 0 128s57.3 128 128 128 128-57.3 128-128S198.7 0 128 0zm35.5 178.5c-9.6 0-18.9-4.8-27.5-14.2-8.6 9.4-17.9 14.2-27.5 14.2-19.1 0-35.5-21.4-35.5-46.5 0-16.9 7.6-32.1 19.2-38.2 6.4-3.4 13.5-5.1 20.8-5.1 13.5 0 26.2 7.6 35.5 21.4 9.3-13.8 22-21.4 35.5-21.4 7.3 0 14.4 1.7 20.8 5.1 11.6 6.1 19.2 21.3 19.2 38.2 0 25.1-16.4 46.5-35.5 46.5z"
fill="url(#meta-gradient)"
/>
</svg>
)
const MistralIcon = (props: SVGProps<SVGSVGElement>) => (
<svg
height="1em"
viewBox="0 0 256 256"
width="1em"
xmlns="http://www.w3.org/2000/svg"
{...props}
>
<rect fill="#FF7000" height="64" width="64" x="0" y="0" />
<rect fill="#FF7000" height="64" width="64" x="0" y="128" />
<rect fill="#FF7000" height="64" width="64" x="128" y="0" />
<rect fill="#FF7000" height="64" width="64" x="128" y="128" />
<rect fill="#FF7000" height="64" width="64" x="192" y="192" />
</svg>
)
const PerplexityIcon = (props: SVGProps<SVGSVGElement>) => (
<svg
height="1em"
viewBox="0 0 256 256"
width="1em"
xmlns="http://www.w3.org/2000/svg"
{...props}
>
<rect fill="#20808D" height="256" rx="32" width="256" />
<path
d="M128 48v160M48 128h160M88 88l80 80M168 88l-80 80"
stroke="white"
strokeLinecap="round"
strokeWidth="16"
/>
</svg>
)
const AmazonIcon = (props: SVGProps<SVGSVGElement>) => (
<svg
height="1em"
viewBox="0 0 256 256"
width="1em"
xmlns="http://www.w3.org/2000/svg"
{...props}
>
<path
d="M160 180c-20 15-49 23-74 23-35 0-67-13-91-35-2-2 0-4 2-3 28 16 63 26 99 26 24 0 51-5 75-15 4-2 7 2 3 5zm8-9c-3-3-18-2-25-1-2 0-2-2 0-3 17-12 44-9 47-4 3 4-1 32-17 45-2 2-4 1-3-1 3-7 9-23 6-27z"
fill="#FF9900"
/>
<path
d="M145 110v-8c0-1 1-2 2-2h32c1 0 2 1 2 2v7c0 1-1 2-2 3l-17 24c6 0 13 1 19 4 1 1 2 2 2 3v8c0 1-1 2-2 2-8-4-19-5-28-1-1 0-2-1-2-2v-8c0-1 0-3 1-4l19-28h-17c-1 0-2-1-2-2zm-50 30h-10c-1 0-2-1-2-2V92c0-1 1-2 2-2h9c1 0 2 1 2 2v6h0c3-6 8-9 15-9 7 0 12 3 15 9 3-6 9-9 16-9 5 0 10 2 13 6 4 4 3 10 3 15v37c0 1-1 2-2 2h-10c-1 0-2-1-2-2v-31c0-2 0-7-1-9 0-3-2-4-5-4-2 0-4 1-5 3-1 2-1 6-1 9v32c0 1-1 2-2 2h-10c-1 0-2-1-2-2v-31c0-7-1-11-5-11-5 0-5 5-5 11v31c0 1-1 2-2 2z"
fill="#232F3E"
/>
</svg>
)
const ZhipuIcon = (props: SVGProps<SVGSVGElement>) => (
<svg
height="1em"
viewBox="0 0 256 256"
width="1em"
xmlns="http://www.w3.org/2000/svg"
{...props}
>
<rect fill="#4A90E2" height="256" rx="32" width="256" />
<path d="M64 96h128v16H64zm0 32h128v16H64zm0 32h96v16H64z" fill="white" />
</svg>
)
const AlibabaIcon = (props: SVGProps<SVGSVGElement>) => (
<svg
height="1em"
viewBox="0 0 256 256"
width="1em"
xmlns="http://www.w3.org/2000/svg"
{...props}
>
<rect fill="#FF6A00" height="256" width="256" />
<path
d="M128 48c-44.2 0-80 35.8-80 80s35.8 80 80 80 80-35.8 80-80-35.8-80-80-80zm0 136c-30.9 0-56-25.1-56-56s25.1-56 56-56 56 25.1 56 56-25.1 56-56 56z"
fill="white"
/>
</svg>
)
const MoonshotIcon = (props: SVGProps<SVGSVGElement>) => (
<svg
height="1em"
viewBox="0 0 256 256"
width="1em"
xmlns="http://www.w3.org/2000/svg"
{...props}
>
<defs>
<linearGradient
id="moonshot-gradient"
x1="0%"
x2="100%"
y1="0%"
y2="100%"
>
<stop offset="0%" stopColor="#667EEA" />
<stop offset="100%" stopColor="#764BA2" />
</linearGradient>
</defs>
<rect fill="url(#moonshot-gradient)" height="256" rx="32" width="256" />
<path d="M128 64l32 64h-64l32-64zm0 128l-32-64h64l-32 64z" fill="white" />
</svg>
)
type AIModel = {
id: string
name: string
provider: string
category:
| "flagship"
| "balanced"
| "fast"
| "balanced / default"
| "fast / cost-efficient"
| "deep-reasoning / heavy tasks"
| "balanced reasoning"
| "fast reasoning nano"
| "pro / high-end reasoning"
| "flagship / reasoning"
| "balanced / general"
| "fast / low-cost"
| "reasoning"
| "embedding"
| "code-specialized"
| "image-generation"
| "open-source"
contextWindow: number
pricing: {
input: number
output: number
cached?: number
batch?: number
}
capabilities: string[]
performance: {
reasoning: number
speed: number
accuracy: number
creativity: number
}
releaseDate: string
icon: React.ComponentType<{ className?: string }>
}
const models: AIModel[] = [
// OpenAI / GPT-5 family
{
id: "gpt-5-main",
name: "GPT-5 Main",
provider: "OpenAI",
category: "balanced / default",
contextWindow: 1_000_000, // GPT-5 supports a million-token context window in many cases (unified system) :contentReference[oaicite:0]{index=0}
pricing: { input: 2.0, output: 8.0 }, // approximate “$/million tokens” for default reasoning, placeholder (not publicly confirmed)
capabilities: [
"Text & vision",
"Agentic reasoning",
"Smart routing (fast vs think)",
"Customizable style / verbosity",
],
performance: { reasoning: 98, speed: 80, accuracy: 97, creativity: 95 },
releaseDate: "2025-08",
icon: OpenAIIcon,
},
{
id: "gpt-5-main-mini",
name: "GPT-5 Main Mini",
provider: "OpenAI",
category: "fast / cost-efficient",
contextWindow: 1_000_000, // same as main, but lighter
pricing: { input: 1.0, output: 4.0 }, // speculative
capabilities: ["Text & vision", "Low-latency mode", "Smart routing"],
performance: { reasoning: 94, speed: 90, accuracy: 94, creativity: 90 },
releaseDate: "2025-08",
icon: OpenAIIcon,
},
{
id: "gpt-5-thinking",
name: "GPT-5 Thinking",
provider: "OpenAI",
category: "deep-reasoning / heavy tasks",
contextWindow: 1_000_000,
pricing: { input: 4.0, output: 16.0 }, // heavier reasoning cost increment
capabilities: [
"Deep reasoning",
"Long chain-of-thought",
"Tool use",
"Maximal accuracy",
],
performance: { reasoning: 99, speed: 60, accuracy: 98, creativity: 96 },
releaseDate: "2025-08",
icon: OpenAIIcon,
},
{
id: "gpt-5-thinking-mini",
name: "GPT-5 Thinking Mini",
provider: "OpenAI",
category: "balanced reasoning",
contextWindow: 1_000_000,
pricing: { input: 2.5, output: 10.0 },
capabilities: ["Reasoning with moderate speed", "Tool use"],
performance: { reasoning: 97, speed: 75, accuracy: 96, creativity: 94 },
releaseDate: "2025-08",
icon: OpenAIIcon,
},
{
id: "gpt-5-thinking-nano",
name: "GPT-5 Thinking Nano",
provider: "OpenAI",
category: "fast reasoning nano",
contextWindow: 1_000_000,
pricing: { input: 1.5, output: 6.0 },
capabilities: ["Light reasoning", "Low latency"],
performance: { reasoning: 95, speed: 90, accuracy: 94, creativity: 92 },
releaseDate: "2025-08",
icon: OpenAIIcon,
},
{
id: "gpt-5-thinking-pro",
name: "GPT-5 Thinking Pro",
provider: "OpenAI",
category: "pro / high-end reasoning",
contextWindow: 1_000_000,
pricing: { input: 8.0, output: 32.0 }, // premium reasoning
capabilities: [
"Max compute reasoning",
"Parallel test-time compute",
"Expert-level answers",
],
performance: { reasoning: 100, speed: 50, accuracy: 99, creativity: 98 },
releaseDate: "2025-08",
icon: OpenAIIcon,
},
// Claude / Anthropic (Claude 4 generation)
{
id: "claude-opus-4",
name: "Claude Opus 4",
provider: "Anthropic",
category: "flagship / reasoning",
contextWindow: 200_000, // native support for 200k tokens :contentReference[oaicite:1]{index=1}
pricing: { input: 15, output: 75 }, // official pricing $15 / $75 per 1M tokens :contentReference[oaicite:2]{index=2}
capabilities: [
"Text & vision",
"Coding & reasoning",
"Tool use",
"Extended chain-of-thought",
],
performance: { reasoning: 98, speed: 65, accuracy: 97, creativity: 95 },
releaseDate: "2025-05",
icon: ClaudeAIIcon,
},
{
id: "claude-sonnet-4",
name: "Claude Sonnet 4",
provider: "Anthropic",
category: "balanced / general",
contextWindow: 200_000, // supports up to 1M in beta for long context :contentReference[oaicite:3]{index=3}
pricing: { input: 3, output: 15 }, // standard rate (for ≤200k input) :contentReference[oaicite:4]{index=4}
capabilities: [
"Text & vision",
"Balanced reasoning",
"Tool-enabled",
"Long context (beta)",
],
performance: { reasoning: 95, speed: 85, accuracy: 95, creativity: 92 },
releaseDate: "2025-05",
icon: ClaudeAIIcon,
},
// You might also include a lower-tier Claude (if you wish to represent cost-saver models)
{
id: "claude-haiku",
name: "Claude Haiku",
provider: "Anthropic",
category: "fast / low-cost",
contextWindow: 200_000,
pricing: { input: 0.8, output: 4.0 }, // older published approximate pricing (Haiku 3.5 era) :contentReference[oaicite:5]{index=5}
capabilities: ["Fast responses", "Cost-efficient", "Basic reasoning"],
performance: { reasoning: 85, speed: 98, accuracy: 88, creativity: 85 },
releaseDate: "2024-03",
icon: ClaudeAIIcon,
},
{
id: "claude-sonnet-4.5",
name: "Claude Sonnet 4.5",
provider: "Anthropic",
category: "flagship / reasoning",
contextWindow: 200_000,
pricing: { input: 3.0, output: 15.0, cached: 0.3, batch: 3.75 },
capabilities: [
"Text & vision",
"Extended thinking",
"Tool use",
"Artifacts",
],
performance: { reasoning: 98, speed: 80, accuracy: 97, creativity: 96 },
releaseDate: "2025-01",
icon: ClaudeAIIcon,
},
{
id: "claude-3.7-sonnet",
name: "Claude 3.7 Sonnet",
provider: "Anthropic",
category: "balanced / general",
contextWindow: 200_000,
pricing: { input: 3.0, output: 15.0, cached: 0.3, batch: 3.75 },
capabilities: ["Text & vision", "Tool use", "Analysis"],
performance: { reasoning: 94, speed: 85, accuracy: 94, creativity: 91 },
releaseDate: "2024-11",
icon: ClaudeAIIcon,
},
{
id: "claude-3.5-sonnet",
name: "Claude 3.5 Sonnet",
provider: "Anthropic",
category: "balanced / general",
contextWindow: 200_000,
pricing: { input: 3.0, output: 15.0, cached: 0.3, batch: 3.75 },
capabilities: ["Text & vision", "Tool use", "Coding"],
performance: { reasoning: 93, speed: 85, accuracy: 93, creativity: 90 },
releaseDate: "2024-06",
icon: ClaudeAIIcon,
},
{
id: "claude-3.5-haiku",
name: "Claude 3.5 Haiku",
provider: "Anthropic",
category: "fast / low-cost",
contextWindow: 200_000,
pricing: { input: 0.8, output: 4.0, cached: 0.08, batch: 1.0 },
capabilities: ["Fast responses", "Cost-efficient", "Basic reasoning"],
performance: { reasoning: 88, speed: 95, accuracy: 90, creativity: 87 },
releaseDate: "2024-11",
icon: ClaudeAIIcon,
},
{
id: "claude-opus-4.1",
name: "Claude Opus 4.1",
provider: "Anthropic",
category: "flagship / reasoning",
contextWindow: 200_000,
pricing: { input: 15.0, output: 75.0, cached: 1.5, batch: 18.75 },
capabilities: [
"Maximum intelligence",
"Deep reasoning",
"Complex tasks",
"Research",
],
performance: { reasoning: 99, speed: 60, accuracy: 98, creativity: 97 },
releaseDate: "2025-03",
icon: ClaudeAIIcon,
},
// OpenAI GPT Models
{
id: "gpt-5",
name: "GPT-5",
provider: "OpenAI",
category: "balanced / default",
contextWindow: 400_000,
pricing: { input: 1.25, output: 10.0, cached: 0.13 },
capabilities: ["Text & vision", "Reasoning", "Tool use", "Multimodal"],
performance: { reasoning: 96, speed: 85, accuracy: 96, creativity: 94 },
releaseDate: "2025-08",
icon: OpenAIIcon,
},
{
id: "gpt-5-mini",
name: "GPT-5 Mini",
provider: "OpenAI",
category: "fast / cost-efficient",
contextWindow: 400_000,
pricing: { input: 0.25, output: 2.0, cached: 0.03 },
capabilities: ["Text & vision", "Fast responses", "Cost-efficient"],
performance: { reasoning: 92, speed: 92, accuracy: 93, creativity: 90 },
releaseDate: "2025-08",
icon: OpenAIIcon,
},
{
id: "gpt-5-nano",
name: "GPT-5 Nano",
provider: "OpenAI",
category: "fast / low-cost",
contextWindow: 400_000,
pricing: { input: 0.05, output: 0.4, cached: 0.01 },
capabilities: ["Ultra-fast", "Minimal cost", "Simple tasks"],
performance: { reasoning: 85, speed: 98, accuracy: 88, creativity: 85 },
releaseDate: "2025-08",
icon: OpenAIIcon,
},
{
id: "gpt-5-codex",
name: "GPT-5 Codex",
provider: "OpenAI",
category: "code-specialized",
contextWindow: 400_000,
pricing: { input: 1.25, output: 10.0, cached: 0.13 },
capabilities: [
"Code generation",
"Debugging",
"Refactoring",
"Documentation",
],
performance: { reasoning: 97, speed: 80, accuracy: 97, creativity: 92 },
releaseDate: "2025-08",
icon: OpenAIIcon,
},
{
id: "gpt-4.1",
name: "GPT-4.1",
provider: "OpenAI",
category: "balanced / general",
contextWindow: 1_000_000,
pricing: { input: 2.0, output: 8.0, cached: 0.5 },
capabilities: ["Text & vision", "Extended context", "Tool use"],
performance: { reasoning: 95, speed: 82, accuracy: 95, creativity: 93 },
releaseDate: "2025-03",
icon: OpenAIIcon,
},
{
id: "gpt-4.1-mini",
name: "GPT-4.1 Mini",
provider: "OpenAI",
category: "fast / cost-efficient",
contextWindow: 1_000_000,
pricing: { input: 0.4, output: 1.6, cached: 0.1 },
capabilities: ["Text & vision", "Extended context", "Fast"],
performance: { reasoning: 91, speed: 90, accuracy: 92, creativity: 89 },
releaseDate: "2025-03",
icon: OpenAIIcon,
},
{
id: "gpt-4.1-nano",
name: "GPT-4.1 Nano",
provider: "OpenAI",
category: "fast / low-cost",
contextWindow: 1_000_000,
pricing: { input: 0.1, output: 0.4, cached: 0.03 },
capabilities: ["Extended context", "Ultra-fast", "Cost-efficient"],
performance: { reasoning: 87, speed: 95, accuracy: 89, creativity: 86 },
releaseDate: "2025-03",
icon: OpenAIIcon,
},
{
id: "gpt-4o",
name: "GPT-4o",
provider: "OpenAI",
category: "balanced / general",
contextWindow: 128_000,
pricing: { input: 2.5, output: 10.0, cached: 1.25 },
capabilities: ["Text & vision", "Audio", "Multimodal", "Real-time"],
performance: { reasoning: 94, speed: 85, accuracy: 94, creativity: 92 },
releaseDate: "2024-05",
icon: OpenAIIcon,
},
{
id: "gpt-4o-mini",
name: "GPT-4o Mini",
provider: "OpenAI",
category: "fast / cost-efficient",
contextWindow: 128_000,
pricing: { input: 0.15, output: 0.6, cached: 0.07 },
capabilities: ["Text & vision", "Fast", "Affordable"],
performance: { reasoning: 89, speed: 92, accuracy: 90, creativity: 88 },
releaseDate: "2024-07",
icon: OpenAIIcon,
},
{
id: "o3",
name: "o3",
provider: "OpenAI",
category: "reasoning",
contextWindow: 200_000,
pricing: { input: 2.0, output: 8.0, cached: 0.5 },
capabilities: [
"Deep reasoning",
"Chain-of-thought",
"Complex problem solving",
],
performance: { reasoning: 99, speed: 55, accuracy: 98, creativity: 94 },
releaseDate: "2025-01",
icon: OpenAIIcon,
},
{
id: "gpt-oss-120b",
name: "GPT OSS 120B",
provider: "OpenAI",
category: "open-source",
contextWindow: 131_000,
pricing: { input: 0.1, output: 0.5 },
capabilities: ["Open-source", "Self-hosted", "Customizable"],
performance: { reasoning: 88, speed: 85, accuracy: 89, creativity: 87 },
releaseDate: "2025-02",
icon: OpenAIIcon,
},
{
id: "gpt-oss-20b",
name: "GPT OSS 20B",
provider: "OpenAI",
category: "open-source",
contextWindow: 128_000,
pricing: { input: 0.07, output: 0.3 },
capabilities: ["Open-source", "Lightweight", "Fast"],
performance: { reasoning: 82, speed: 92, accuracy: 84, creativity: 83 },
releaseDate: "2025-02",
icon: OpenAIIcon,
},
{
id: "text-embedding-3-small",
name: "Text Embedding 3 Small",
provider: "OpenAI",
category: "embedding",
contextWindow: 8_191,
pricing: { input: 0.02, output: 0 },
capabilities: ["Text embeddings", "Semantic search", "Clustering"],
performance: { reasoning: 0, speed: 98, accuracy: 90, creativity: 0 },
releaseDate: "2024-01",
icon: OpenAIIcon,
},
{
id: "text-embedding-3-large",
name: "Text Embedding 3 Large",
provider: "OpenAI",
category: "embedding",
contextWindow: 8_191,
pricing: { input: 0.13, output: 0 },
capabilities: ["High-quality embeddings", "Semantic search", "RAG"],
performance: { reasoning: 0, speed: 95, accuracy: 95, creativity: 0 },
releaseDate: "2024-01",
icon: OpenAIIcon,
},
// Google Gemini Models
{
id: "gemini-2.5-pro",
name: "Gemini 2.5 Pro",
provider: "Google",
category: "flagship / reasoning",
contextWindow: 1_000_000,
pricing: { input: 2.5, output: 10.0 },
capabilities: [
"Text & vision",
"Deep reasoning",
"Long context",
"Multimodal",
],
performance: { reasoning: 97, speed: 75, accuracy: 96, creativity: 95 },
releaseDate: "2025-09",
icon: GeminiIcon,
},
{
id: "gemini-2.5-flash",
name: "Gemini 2.5 Flash",
provider: "Google",
category: "balanced / general",
contextWindow: 1_000_000,
pricing: { input: 0.3, output: 2.5 },
capabilities: ["Text & vision", "Fast", "Long context", "Multimodal"],
performance: { reasoning: 93, speed: 90, accuracy: 93, creativity: 91 },
releaseDate: "2025-09",
icon: GeminiIcon,
},
{
id: "gemini-2.5-flash-lite",
name: "Gemini 2.5 Flash Lite",
provider: "Google",
category: "fast / low-cost",
contextWindow: 1_000_000,
pricing: { input: 0.1, output: 0.4 },
capabilities: ["Ultra-fast", "Cost-efficient", "Long context"],
performance: { reasoning: 88, speed: 96, accuracy: 89, creativity: 87 },
releaseDate: "2025-09",
icon: GeminiIcon,
},
{
id: "gemini-2.5-flash-image",
name: "Gemini 2.5 Flash Image",
provider: "Google",
category: "image-generation",
contextWindow: 33_000,
pricing: { input: 0.3, output: 2.5 },
capabilities: ["Image generation", "Text-to-image", "Creative visuals"],
performance: { reasoning: 85, speed: 80, accuracy: 88, creativity: 95 },
releaseDate: "2025-09",
icon: GeminiIcon,
},
{
id: "gemini-2.0-flash",
name: "Gemini 2.0 Flash",
provider: "Google",
category: "balanced / general",
contextWindow: 1_000_000,
pricing: { input: 0.15, output: 0.6 },
capabilities: ["Text & vision", "Fast", "Multimodal"],
performance: { reasoning: 91, speed: 92, accuracy: 91, creativity: 89 },
releaseDate: "2024-12",
icon: GeminiIcon,
},
{
id: "gemini-2.0-flash-lite",
name: "Gemini 2.0 Flash Lite",
provider: "Google",
category: "fast / low-cost",
contextWindow: 1_000_000,
pricing: { input: 0.07, output: 0.3 },
capabilities: ["Ultra-fast", "Minimal cost", "Basic tasks"],
performance: { reasoning: 84, speed: 97, accuracy: 86, creativity: 84 },
releaseDate: "2024-12",
icon: GeminiIcon,
},
{
id: "gemini-embedding-001",
name: "Gemini Embedding 001",
provider: "Google",
category: "embedding",
contextWindow: 2_048,
pricing: { input: 0.15, output: 0 },
capabilities: ["Text embeddings", "Semantic search", "Document retrieval"],
performance: { reasoning: 0, speed: 96, accuracy: 92, creativity: 0 },
releaseDate: "2024-06",
icon: GeminiIcon,
},
// xAI Grok Models
{
id: "grok-4",
name: "Grok 4",
provider: "xAI",
category: "flagship / reasoning",
contextWindow: 256_000,
pricing: { input: 3.0, output: 15.0 },
capabilities: [
"Real-time data",
"Deep reasoning",
"X integration",
"Humor",
],
performance: { reasoning: 96, speed: 78, accuracy: 95, creativity: 96 },
releaseDate: "2025-01",
icon: XAIIcon,
},
{
id: "grok-4-fast-reasoning",
name: "Grok 4 Fast Reasoning",
provider: "xAI",
category: "reasoning",
contextWindow: 2_000_000,
pricing: { input: 0.2, output: 0.5, cached: 0.05 },
capabilities: ["Fast reasoning", "Extended context", "Real-time"],
performance: { reasoning: 94, speed: 88, accuracy: 93, creativity: 93 },
releaseDate: "2025-01",
icon: XAIIcon,
},
{
id: "grok-4-fast-non-reasoning",
name: "Grok 4 Fast Non-Reasoning",
provider: "xAI",
category: "fast / cost-efficient",
contextWindow: 2_000_000,
pricing: { input: 0.2, output: 0.5, cached: 0.05 },
capabilities: ["Ultra-fast", "Extended context", "Simple tasks"],
performance: { reasoning: 86, speed: 95, accuracy: 88, creativity: 90 },
releaseDate: "2025-01",
icon: XAIIcon,
},
{
id: "grok-3-mini",
name: "Grok 3 Mini",
provider: "xAI",
category: "fast / low-cost",
contextWindow: 131_000,
pricing: { input: 0.3, output: 0.5 },
capabilities: ["Fast", "Cost-efficient", "Basic reasoning"],
performance: { reasoning: 87, speed: 93, accuracy: 88, creativity: 88 },
releaseDate: "2024-11",
icon: XAIIcon,
},
{
id: "grok-code-fast-1",
name: "Grok Code Fast 1",
provider: "xAI",
category: "code-specialized",
contextWindow: 256_000,
pricing: { input: 0.2, output: 1.5 },
capabilities: ["Code generation", "Fast", "Debugging"],
performance: { reasoning: 92, speed: 90, accuracy: 92, creativity: 88 },
releaseDate: "2025-02",
icon: XAIIcon,
},
// DeepSeek Models
{
id: "deepseek-v3.2-exp",
name: "DeepSeek V3.2 Exp",
provider: "DeepSeek",
category: "balanced / general",
contextWindow: 164_000,
pricing: { input: 0.27, output: 0.41 },
capabilities: ["Experimental", "Advanced reasoning", "Cost-efficient"],
performance: { reasoning: 93, speed: 85, accuracy: 92, creativity: 90 },
releaseDate: "2025-03",
icon: DeepSeekIcon,
},
{
id: "deepseek-v3.2-exp-thinking",
name: "DeepSeek V3.2 Exp Thinking",
provider: "DeepSeek",
category: "reasoning",
contextWindow: 164_000,
pricing: { input: 0.28, output: 0.42, cached: 0.03 },
capabilities: ["Deep reasoning", "Chain-of-thought", "Experimental"],
performance: { reasoning: 96, speed: 70, accuracy: 94, creativity: 91 },
releaseDate: "2025-03",
icon: DeepSeekIcon,
},
{
id: "deepseek-v3.1",
name: "DeepSeek V3.1",
provider: "DeepSeek",
category: "balanced / general",
contextWindow: 164_000,
pricing: { input: 0.2, output: 0.8 },
capabilities: ["Balanced", "Cost-efficient", "General purpose"],
performance: { reasoning: 91, speed: 87, accuracy: 91, creativity: 89 },
releaseDate: "2025-02",
icon: DeepSeekIcon,
},
{
id: "deepseek-v3",
name: "DeepSeek V3",
provider: "DeepSeek",
category: "balanced / general",
contextWindow: 164_000,
pricing: { input: 0.77, output: 0.77 },
capabilities: ["Balanced pricing", "General purpose", "Reliable"],
performance: { reasoning: 90, speed: 86, accuracy: 90, creativity: 88 },
releaseDate: "2024-12",
icon: DeepSeekIcon,
},
// Meta Llama Models
{
id: "llama-4-maverick",
name: "Llama 4 Maverick",
provider: "Meta",
category: "open-source",
contextWindow: 1_000_000,
pricing: { input: 0.15, output: 0.6 },
capabilities: ["Open-source", "Extended context", "Customizable"],
performance: { reasoning: 92, speed: 88, accuracy: 91, creativity: 90 },
releaseDate: "2025-04",
icon: MetaIcon,
},
// Mistral Models
{
id: "codestral",
name: "Codestral",
provider: "Mistral",
category: "code-specialized",
contextWindow: 256_000,
pricing: { input: 0.3, output: 0.9 },
capabilities: ["Code generation", "80+ languages", "Fill-in-middle"],
performance: { reasoning: 91, speed: 88, accuracy: 92, creativity: 87 },
releaseDate: "2024-05",
icon: MistralIcon,
},
{
id: "mistral-small",
name: "Mistral Small",
provider: "Mistral",
category: "fast / low-cost",
contextWindow: 32_000,
pricing: { input: 0.1, output: 0.3 },
capabilities: ["Fast", "Cost-efficient", "Lightweight"],
performance: { reasoning: 85, speed: 93, accuracy: 86, creativity: 84 },
releaseDate: "2024-02",
icon: MistralIcon,
},
// Perplexity Models
{
id: "sonar",
name: "Sonar",
provider: "Perplexity",
category: "balanced / general",
contextWindow: 127_000,
pricing: { input: 1.0, output: 1.0 },
capabilities: ["Web search", "Citations", "Real-time data"],
performance: { reasoning: 90, speed: 85, accuracy: 92, creativity: 88 },
releaseDate: "2024-08",
icon: PerplexityIcon,
},
{
id: "sonar-pro",
name: "Sonar Pro",
provider: "Perplexity",
category: "flagship / reasoning",
contextWindow: 200_000,
pricing: { input: 3.0, output: 15.0 },
capabilities: ["Advanced search", "Deep research", "Citations", "Analysis"],
performance: { reasoning: 95, speed: 78, accuracy: 95, creativity: 91 },
releaseDate: "2024-11",
icon: PerplexityIcon,
},
{
id: "sonar-reasoning-pro",
name: "Sonar Reasoning Pro",
provider: "Perplexity",
category: "reasoning",
contextWindow: 127_000,
pricing: { input: 2.0, output: 8.0 },
capabilities: ["Deep reasoning", "Research", "Citations", "Analysis"],
performance: { reasoning: 96, speed: 72, accuracy: 94, creativity: 90 },
releaseDate: "2025-01",
icon: PerplexityIcon,
},
// Amazon Models
{
id: "nova-pro",
name: "Nova Pro",
provider: "Amazon",
category: "balanced / general",
contextWindow: 300_000,
pricing: { input: 0.8, output: 3.2 },
capabilities: ["Text & vision", "AWS integration", "Extended context"],
performance: { reasoning: 91, speed: 86, accuracy: 91, creativity: 89 },
releaseDate: "2024-12",
icon: AmazonIcon,
},
// Zhipu AI Models
{
id: "glm-4.6",
name: "GLM 4.6",
provider: "Zhipu AI",
category: "balanced / general",
contextWindow: 200_000,
pricing: { input: 0.6, output: 2.2, cached: 0.11 },
capabilities: ["Chinese & English", "Multimodal", "Tool use"],
performance: { reasoning: 90, speed: 85, accuracy: 90, creativity: 88 },
releaseDate: "2024-10",
icon: ZhipuIcon,
},
// Alibaba Models
{
id: "qwen3-coder",
name: "Qwen3 Coder",
provider: "Alibaba",
category: "code-specialized",
contextWindow: 131_000,
pricing: { input: 0.4, output: 1.6 },
capabilities: ["Code generation", "Multiple languages", "Debugging"],
performance: { reasoning: 89, speed: 88, accuracy: 90, creativity: 86 },
releaseDate: "2024-11",
icon: AlibabaIcon,
},
// Moonshot AI Models
{
id: "kimi-k2-0905",
name: "Kimi K2 0905",
provider: "Moonshot AI",
category: "balanced / general",
contextWindow: 131_000,
pricing: { input: 0.6, output: 2.5 },
capabilities: ["Chinese & English", "Long context", "General purpose"],
performance: { reasoning: 88, speed: 84, accuracy: 89, creativity: 87 },
releaseDate: "2024-09",
icon: MoonshotIcon,
},
]
interface ComparisonTableProps {
models: AIModel[]
selectedModels: string[]
onToggleSelect: (id: string) => void
}
export function ComparisonTable({
models,
selectedModels,
onToggleSelect,
}: ComparisonTableProps) {
const formatContextWindow = (tokens: number) => {
if (tokens >= 1_000_000) return `${(tokens / 1_000_000).toFixed(1)}M`
if (tokens >= 1_000) return `${(tokens / 1_000).toFixed(0)}K`
return tokens.toString()
}
const hasCapability = (
model: AIModel,
type: "reasoning" | "vision" | "tool"
) => {
const capStr = model.capabilities.join(" ").toLowerCase()
switch (type) {
case "reasoning":
return (
capStr.includes("reasoning") ||
capStr.includes("chain-of-thought") ||
capStr.includes("thinking")
)
case "vision":
return (
capStr.includes("vision") ||
capStr.includes("image") ||
capStr.includes("multimodal")
)
case "tool":
return capStr.includes("tool") || capStr.includes("function")
}
}
return (
<div className="-mx-4 overflow-x-auto rounded-lg border sm:mx-0">
<table className="w-full min-w-[800px]">
<thead>
<tr className="bg-muted/50 border-b">
<th className="px-3 py-2.5 text-left text-xs font-medium sm:px-4 sm:py-3 sm:text-sm">
Model
</th>
<th className="px-3 py-2.5 text-left text-xs font-medium sm:px-4 sm:py-3 sm:text-sm">
Provider
</th>
<th className="px-3 py-2.5 text-center text-xs font-medium sm:px-4 sm:py-3 sm:text-sm">
Reasoning
</th>
<th className="px-3 py-2.5 text-center text-xs font-medium sm:px-4 sm:py-3 sm:text-sm">
Vision
</th>
<th className="px-3 py-2.5 text-center text-xs font-medium sm:px-4 sm:py-3 sm:text-sm">
Tool Use
</th>
<th className="px-3 py-2.5 text-left text-xs font-medium sm:px-4 sm:py-3 sm:text-sm">
Context
</th>
<th className="px-3 py-2.5 text-left text-xs font-medium sm:px-4 sm:py-3 sm:text-sm">
Price
</th>
<th className="px-3 py-2.5 text-left text-xs font-medium sm:px-4 sm:py-3 sm:text-sm">
Score
</th>
</tr>
</thead>
<tbody>
{models.map((model) => {
const isSelected = selectedModels.includes(model.id)
const Icon = model.icon
return (
<tr
key={model.id}
onClick={() => onToggleSelect(model.id)}
className={`hover:bg-muted/50 cursor-pointer border-b transition-colors last:border-0 ${
isSelected ? "bg-muted/30" : ""
}`}
>
<td className="px-3 py-2.5 sm:px-4 sm:py-3">
<div className="flex items-center gap-2 sm:gap-3">
<div
className={`flex h-3.5 w-3.5 flex-shrink-0 items-center justify-center rounded border transition-colors sm:h-4 sm:w-4 ${
isSelected
? "bg-primary border-primary"
: "border-input"
}`}
>
{isSelected && (
<Check className="text-primary-foreground h-2.5 w-2.5 sm:h-3 sm:w-3" />
)}
</div>
<Icon className="text-muted-foreground h-3.5 w-3.5 flex-shrink-0 rounded-full sm:h-4 sm:w-4 dark:bg-white" />
<span className="text-xs font-medium sm:text-sm">
{model.name}
</span>
</div>
</td>
<td className="text-muted-foreground px-3 py-2.5 text-xs sm:px-4 sm:py-3 sm:text-sm">
{model.provider}
</td>
<td className="px-3 py-2.5 text-center sm:px-4 sm:py-3">
{hasCapability(model, "reasoning") ? (
<Check className="text-foreground mx-auto h-3.5 w-3.5 sm:h-4 sm:w-4" />
) : (
<X className="text-muted-foreground/30 mx-auto h-3.5 w-3.5 sm:h-4 sm:w-4" />
)}
</td>
<td className="px-3 py-2.5 text-center sm:px-4 sm:py-3">
{hasCapability(model, "vision") ? (
<Check className="text-foreground mx-auto h-3.5 w-3.5 sm:h-4 sm:w-4" />
) : (
<X className="text-muted-foreground/30 mx-auto h-3.5 w-3.5 sm:h-4 sm:w-4" />
)}
</td>
<td className="px-3 py-2.5 text-center sm:px-4 sm:py-3">
{hasCapability(model, "tool") ? (
<Check className="text-foreground mx-auto h-3.5 w-3.5 sm:h-4 sm:w-4" />
) : (
<X className="text-muted-foreground/30 mx-auto h-3.5 w-3.5 sm:h-4 sm:w-4" />
)}
</td>
<td className="px-3 py-2.5 font-mono text-xs sm:px-4 sm:py-3 sm:text-sm">
{formatContextWindow(model.contextWindow)}
</td>
<td className="px-3 py-2.5 text-xs sm:px-4 sm:py-3 sm:text-sm">
${model.pricing.input}/M
</td>
<td className="px-3 py-2.5 sm:px-4 sm:py-3">
<div className="flex items-center gap-2">
<div className="bg-secondary h-1.5 w-12 overflow-hidden rounded-full sm:w-16">
<div
className="bg-primary h-full"
style={{ width: `${model.performance.reasoning}%` }}
/>
</div>
<span className="font-mono text-xs font-medium">
{model.performance.reasoning}
</span>
</div>
</td>
</tr>
)
})}
</tbody>
</table>
</div>
)
}
export default function BlockPage() {
const [selectedModels, setSelectedModels] = useState<string[]>([])
const handleToggleSelect = (id: string) => {
setSelectedModels((prev) =>
prev.includes(id)
? prev.filter((modelId) => modelId !== id)
: [...prev, id]
)
}
return (
<div className="space-y-6">
<div className="space-y-2">
<h1 className="text-2xl font-bold">AI Model Comparison</h1>
<p className="text-muted-foreground">
Compare different AI models across providers, capabilities, and
pricing.
</p>
</div>
<ComparisonTable
models={models}
selectedModels={selectedModels}
onToggleSelect={handleToggleSelect}
/>
{selectedModels.length > 0 && (
<div className="bg-muted/50 rounded-lg border p-4">
<h3 className="mb-2 font-medium">
Selected Models ({selectedModels.length})
</h3>
<div className="flex flex-wrap gap-2">
{selectedModels.map((id) => {
const model = models.find((m) => m.id === id)
return model ? (
<span
key={id}
className="bg-primary/10 inline-flex items-center gap-1 rounded-md px-2 py-1 text-xs font-medium"
>
<model.icon className="h-3 w-3" />
{model.name}
</span>
) : null
})}
</div>
</div>
)}
</div>
)
}
Comprehensive comparison table showcasing leading AI models with detailed performance metrics, pricing analysis, and capability assessments. Features interactive filtering, sorting capabilities, and side-by-side comparisons for informed model selection and evaluation.
marketing-model-comparison-table-1

