Tested prompt · Coding
Turn a title into a URL slug: every AI model's reply, tested
We sent this everyday coding prompt to all 20 models in llmwise, the same way the app sends a message, and checked every reply the same way. Here's each one as it came, with whether it passed, what it cost and how long it took.
Based on 20 of our test runs on , through OpenRouter with the app's own prompt and settings. Updated .
Short answer
All 20 models passed this coding prompt's check (tests). The cheapest reply that passed was GLM 5.3 Flash's, at $0.000067; the fastest, GLM 5.3's in 0.4 s. The dearest reply, Claude Fable 5.1's, cost 248 times as much ($0.0167).
The prompt, as sent, and its check
Checked by tests, the same way for every model.
Turn a title into a URL slug (everyday)
Write a JavaScript function slugify(title) that turns a title into a URL slug: - lowercase; - letters with accents become the plain letter (é → e, ñ → n, ü → u); - every run of characters that isn't a–z or 0–9 becomes a single hyphen; - no hyphen at the start or the end. For example, slugify("Hello, World!") returns "hello-world" and slugify(" Crème brûlée: 3 ways ") returns "creme-brulee-3-ways". Reply with the whole function in one ```javascript code block: plain JavaScript for Node.js 22, no imports, no TypeScript.
The reply's slugify runs against these 7 tests; it passes when all of them do.
slugify("Hello, World!") // → "hello-world"
slugify(" Crème brûlée: 3 ways ") // → "creme-brulee-3-ways"
slugify("Ångström & Peña") // → "angstrom-pena"
slugify("---Already--slugged---") // → "already-slugged"
slugify("C++ vs. C#") // → "c-vs-c"
slugify("2026: Q4 Plan") // → "2026-q4-plan"
slugify("") // → ""Exactly what this prompt's replies are checked against, with every other prompt of our test runs.
Every model's result
All 20 models on this prompt, in catalog order.
| Model | Result | Cost | Time | Reply |
|---|---|---|---|---|
| Claude Fable 5.1Anthropic | Passed: All 7 tests passed. | $0.0167 | 5.5 s | 170 tokens |
| Claude Opus 5.5Anthropic | Passed: All 7 tests passed. | $0.0055 | 3.1 s | 112 tokens |
| Claude Sonnet 5.5Anthropic | Passed: All 7 tests passed. | $0.0028 | 1.8 s | 112 tokens |
| Claude Sonnet 5Anthropic | Passed: All 7 tests passed. | $0.0024 | 2.3 s | 109 tokens |
| Claude Haiku 5.5Anthropic | Passed: All 7 tests passed. | $0.00014 | 1.5 s | 112 tokens |
| Claude Haiku 4.5Anthropic | Passed: All 7 tests passed. | $0.00096 | 1.5 s | 86 tokens |
| GPT-6 AstraOpenAI | Passed: All 7 tests passed. | $0.0084 | 2.1 s | 71 tokens |
| GPT-6.1 SolOpenAI | Passed: All 7 tests passed. | $0.00084 | 1.7 s | 71 tokens |
| GPT-6 SolOpenAI | Passed: All 7 tests passed. | $0.0028 | 3.3 s | 71 tokens |
| GPT-6 LunaOpenAI | Passed: All 7 tests passed. | $0.000085 | 2.3 s | 74 tokens |
| Gemini 4 ArgonGoogle | Passed: All 7 tests passed. | $0.0012 | 2.9 s | 88 tokens |
| Gemini 3.1 Pro (preview)Google | Passed: All 7 tests passed. | $0.0056 | 6.0 s | 81 tokens |
| Gemini 3.8 FlashGoogle | Passed: All 7 tests passed. | $0.00087 | 4.2 s | 128 tokens |
| DeepSeek V4.1 FlashDeepSeek | Passed: All 7 tests passed. | $0.00041 | 1.3 s | 253 tokens |
| DeepSeek V4 ProDeepSeek | Passed: All 7 tests passed. | $0.0015 | 3.9 s | 77 tokens |
| Grok 4.7xAI | Passed: All 7 tests passed. | $0.0078 | 14.3 s | 73 tokens |
| Kimi K3Moonshot | Passed: All 7 tests passed. | $0.0035 | 2.6 s | 81 tokens |
| GLM 5.3Z.ai | Passed: All 7 tests passed. | $0.0010 | 0.4 s | 74 tokens |
| GLM 5.3 FlashZ.ai | Passed: All 7 tests passed. | $0.000067 | 2.6 s | 75 tokens |
| Mistral Large 4Mistral | Passed: All 7 tests passed. | $0.0022 | 7.0 s | 177 tokens |
Cost: what OpenRouter charged us for the reply. Time: from sending to the whole reply. Reply: its length in tokens, thinking not counted. In llmwise you pay per message, not per token: each of these replies counted as one message on Pro.
Every reply
Every reply passed: here they are from the cheapest up.
GLM 5.3 Flash
Passed: All 7 tests passed.
```javascript function slugify(title) { const normalized = title.normalize("NFD").replace(/[\u0300-\u036f]/g, ""); return normalized .toLowerCase() .replace(/[^a-z0-9]+/g, "-") .replace(/^-+|-+$/g, ""); } ```499 tokens in, 75 out · 2.6 s · $0.0001 · 1 message on Pro · answered by z-ai/glm-5.3-flash via GMICloud ·
GPT-6 Luna
Passed: All 7 tests passed.
```javascript function slugify(title) { return title .toLowerCase() .normalize("NFD") .replace(/[\u0300-\u036f]/g, "") .replace(/[^a-z0-9]+/g, "-") .replace(/^-|-$/g, ""); } ```483 tokens in, 74 out · 2.3 s · $0.0001 · 1 message on Pro · answered by openai/gpt-6-luna via OpenAI ·
Claude Haiku 5.5
Passed: All 7 tests passed.
```javascript function slugify(title) { return String(title) .normalize("NFD") .replace(/[\u0300-\u036f]/g, "") .toLowerCase() .replace(/[^a-z0-9]+/g, "-") .replace(/^-+|-+$/g, ""); } ```672 tokens in, 112 out · 1.5 s · $0.0001 · 1 message on Pro · answered by anthropic/claude-haiku-5.5 via Anthropic ·
DeepSeek V4.1 Flash
Passed: All 7 tests passed.
```javascript function slugify(title) { return title .normalize('NFD') // split accented letters into base + combining mark .replace(/[\u0300-\u036f]/g, '') // drop the combining marks (é → e, ñ → n, ü → u) .toLowerCase() .replace(/[^a-z0-9]+/g, '-') // every run of anything else becomes one hyphen .replace(/^-+|-+$/g, ''); // trim leading/trailing hyphens } ``` Note: `normalize('NFD')` handles the accents, but a few letters don't decompose that way (`ø`, `ß`, `đ`, `æ`). If you need those, add an explicit map before the cleanup: ```javascript const SPECIAL = { ø: 'o', ß: 'ss', đ: 'd', æ: 'ae', œ: 'oe', þ: 'th', ł: 'l' }; ``` with `title.replace(/[øßđæœþł]/gi, c => SPECIAL[c.toLowerCase()])` inserted before `.toLowerCase()`.522 tokens in, 276 out (23 of them reasoning) · 1.3 s · $0.0004 · 1 message on Pro · answered by deepseek/deepseek-v4.1-flash via Together ·
GPT-6.1 Sol
Passed: All 7 tests passed.
```javascript function slugify(title) { return title .toLowerCase() .normalize("NFD") .replace(/\p{M}/gu, "") .replace(/[^a-z0-9]+/g, "-") .replace(/^-+|-+$/g, ""); } ```485 tokens in, 71 out · 1.7 s · $0.0008 · 1 message on Pro · answered by openai/gpt-6.1-sol via OpenAI ·
Gemini 3.8 Flash
Passed: All 7 tests passed.
```javascript function slugify(title) { return title .normalize('NFD') // Decompose combined graphemes into base letters + diacritical marks .replace(/[\u0300-\u036f]/g, '') // Remove all diacritical marks .toLowerCase() .replace(/[^a-z0-9]+/g, '-') // Replace runs of non-alphanumeric characters with a single hyphen .replace(/^-+|-+$/g, ''); // Trim leading and trailing hyphens } ```514 tokens in, 128 out · 4.2 s · $0.0009 · 1 message on Pro · answered by google/gemini-3.8-flash via Google ·
Claude Haiku 4.5
Passed: All 7 tests passed.
```javascript function slugify(title) { return title .toLowerCase() .normalize('NFD') .replace(/[\u0300-\u036f]/g, '') .replace(/[^a-z0-9]+/g, '-') .replace(/^-+|-+$/g, ''); } ```526 tokens in, 86 out · 1.5 s · $0.0010 · 1 message on Pro · answered by anthropic/claude-haiku-4.5 via Amazon Bedrock ·
GLM 5.3
Passed: All 7 tests passed.
```javascript function slugify(title) { return title .normalize("NFD") .replace(/[\u0300-\u036f]/g, "") .toLowerCase() .replace(/[^a-z0-9]+/g, "-") .replace(/^-+|-+$/g, ""); } ```498 tokens in, 74 out · 0.4 s · $0.0010 · 1 message on Pro · answered by z-ai/glm-5.3 via Modal ·
Gemini 4 Argon
Passed: All 7 tests passed.
```javascript function slugify(title) { return String(title) .normalize('NFD') .replace(/[\u0300-\u036f]/g, '') .toLowerCase() .replace(/[^a-z0-9]+/g, '-') .replace(/^-|-$/g, ''); } ```736 tokens in, 88 out · 2.9 s · $0.0012 · 1 message on Pro · answered by google/gemini-4-argon via Google AI Studio ·
DeepSeek V4 Pro
Passed: All 7 tests passed.
```javascript function slugify(title) { return String(title) .normalize('NFD') .replace(/[\u0300-\u036f]/g, '') .toLowerCase() .replace(/[^a-z0-9]+/g, '-') .replace(/^-+|-+$/g, ''); } ```494 tokens in, 321 out (244 of them reasoning) · 3.9 s · $0.0015 · 1 message on Pro · answered by deepseek/deepseek-v4-pro-0813 via Wafer ·
Mistral Large 4
Passed: All 7 tests passed.
```javascript function slugify(title) { return title .normalize('NFD') // split accented letters into base + combining mark .replace(/[\u0300-\u036f]/g, '') // strip the combining marks (é → e, ñ → n, ü → u) .toLowerCase() .replace(/[^a-z0-9]+/g, '-') // every run of non-alphanumerics becomes one hyphen .replace(/^-+|-+$/g, ''); // trim hyphens from start and end } ```491 tokens in, 871 out (694 of them reasoning) · 7.0 s · $0.0022 · 1 message on Pro · answered by mistralai/mistral-large-4-0 via Mistral ·
Claude Sonnet 5
Passed: All 7 tests passed.
```javascript function slugify(title) { return title .normalize('NFD') .replace(/[\u0300-\u036f]/g, '') .toLowerCase() .replace(/[^a-z0-9]+/g, '-') .replace(/^-+|-+$/g, ''); } ```669 tokens in, 109 out · 2.3 s · $0.0024 · 1 message on Pro · answered by anthropic/claude-sonnet-5 via Claude Platform on AWS ·
Claude Sonnet 5.5
Passed: All 7 tests passed.
```javascript function slugify(title) { return String(title) .normalize("NFD") .replace(/[\u0300-\u036f]/g, "") .toLowerCase() .replace(/[^a-z0-9]+/g, "-") .replace(/^-+|-+$/g, ""); } ```673 tokens in, 112 out · 1.8 s · $0.0028 · 1 message on Pro · answered by anthropic/claude-sonnet-5.5 via Anthropic ·
GPT-6 Sol
Passed: All 7 tests passed.
```javascript function slugify(title) { return title .normalize("NFD") .replace(/\p{M}/gu, "") .toLowerCase() .replace(/[^a-z0-9]+/g, "-") .replace(/^-|-$/g, ""); } ```483 tokens in, 185 out (114 of them reasoning) · 3.3 s · $0.0028 · 1 message on Pro · answered by openai/gpt-6-sol via OpenAI ·
Kimi K3
Passed: All 7 tests passed.
```javascript function slugify(title) { return title .normalize("NFD") .replace(/[̀-ͯ]/g, "") .toLowerCase() .replace(/[^a-z0-9]+/g, "-") .replace(/^-+|-+$/g, ""); } ```574 tokens in, 97 out (16 of them reasoning) · 2.6 s · $0.0035 · 1 message on Pro · answered by moonshotai/kimi-k3 via Fireworks ·
Claude Opus 5.5
Passed: All 7 tests passed.
```javascript function slugify(title) { return String(title) .normalize("NFD") .replace(/[\u0300-\u036f]/g, "") .toLowerCase() .replace(/[^a-z0-9]+/g, "-") .replace(/^-+|-+$/g, ""); } ```671 tokens in, 112 out · 3.1 s · $0.0055 · 1 message on Pro · answered by anthropic/claude-opus-5.5 via Claude Platform on AWS ·
Gemini 3.1 Pro
Passed: All 7 tests passed.
```javascript function slugify(title) { return title .normalize('NFD') .replace(/[\u0300-\u036f]/g, '') .toLowerCase() .replace(/[^a-z0-9]+/g, '-') .replace(/^-+|-+$/g, ''); } ```514 tokens in, 380 out (299 of them reasoning) · 6.0 s · $0.0056 · 1 message on Pro · answered by google/gemini-3.1-pro-preview via Google ·
Grok 4.7
Passed: All 7 tests passed.
```javascript function slugify(title) { return title .normalize("NFD") .replace(/\p{M}/gu, "") .toLowerCase() .replace(/[^a-z0-9]+/g, "-") .replace(/^-+|-+$/g, ""); } ```1,720 tokens in, 1,012 out (939 of them reasoning) · 14.3 s · $0.0078 · 1 message on Pro · answered by x-ai/grok-4.7 via xAI ·
GPT-6 Astra
Passed: All 7 tests passed.
```javascript function slugify(title) { return title .toLowerCase() .normalize("NFD") .replace(/\p{M}/gu, "") .replace(/[^a-z0-9]+/g, "-") .replace(/^-+|-+$/g, ""); } ```483 tokens in, 71 out · 2.1 s · $0.0084 · 1 message on Pro · answered by openai/gpt-6-astra via OpenAI ·
Claude Fable 5.1
Passed: All 7 tests passed.
```javascript function slugify(title) { return String(title) .normalize("NFD") // split accented letters into base + combining marks .replace(/[\u0300-\u036f]/g, "") // strip the combining marks .toLowerCase() .replace(/[^a-z0-9]+/g, "-") // any run of non-alphanumerics -> single hyphen .replace(/^-+|-+$/g, ""); // trim leading/trailing hyphens } ```671 tokens in, 170 out · 5.5 s · $0.0167 · 1 message on Pro · answered by anthropic/claude-fable-5.1 via Anthropic ·
More coding prompts
The other coding prompts, each with every model's reply, and the results across all five.
Questions
Which AI does best on “Turn a title into a URL slug”?
All 20 models passed this coding prompt's check (tests). The cheapest reply that passed was GLM 5.3 Flash's, at $0.000067; the fastest, GLM 5.3's in 0.4 s. The dearest reply, Claude Fable 5.1's, cost 248 times as much ($0.0167).
What does a reply to “Turn a title into a URL slug” cost?
Through the models' APIs, what OpenRouter charged us ran from $0.000067 (GLM 5.3 Flash) to $0.0167 (Claude Fable 5.1) for this prompt. In llmwise you don't pay by the token: a reply like these counts as one message on Pro, whichever model answers.
Claude, GPT, Gemini, DeepSeek, Grok, Kimi, GLM, and Mistral, in one chat.
See what a message costs before you send it. Free is 5 messages to try; sign in with an email link, no password or card.