Tested prompt · Coding
Turn a title into a URL slug: every AI model's reply, tested
We sent this everyday coding prompt to all 16 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 16 of our test runs on , through OpenRouter with the app's own prompt and settings. Updated .
Short answer
All 16 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 16 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 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 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 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.00025 | 1.9 s | 197 tokens |
| DeepSeek V4 ProDeepSeek | Passed: All 7 tests passed. | $0.0013 | 2.1 s | 76 tokens |
| Grok 4.7xAI | Passed: All 7 tests passed. | $0.0048 | 6.7 s | 80 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 |
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 ·
DeepSeek V4.1 Flash
Passed: All 7 tests passed.
```javascript function slugify(title) { return String(title) .normalize("NFD") // decompose é -> e + ́ .replace(/[\u0300-\u036f]/g, "") // drop the combining marks .toLowerCase() .replace(/[^a-z0-9]+/g, "-") // runs of anything else -> one hyphen .replace(/^-+|-+$/g, ""); // trim hyphens } ``` Notes: - `NFD` + stripping U+0300–U+036F handles é, ñ, ü, and most Latin accents. (Letters like `ø` or `ß` have no decomposition and will become hyphens; tell me if you need those mapped too.) - The trim uses `^-+|-+$` rather than `^-|-$` so a leading/trailing run of hyphens is removed entirely.521 tokens in, 224 out (27 of them reasoning) · 1.9 s · $0.0002 · 1 message on Pro · answered by deepseek/deepseek-v4.1-flash via CoreWeave ·
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 ·
DeepSeek V4 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, ''); } ```494 tokens in, 339 out (263 of them reasoning) · 2.1 s · $0.0013 · 1 message on Pro · answered by deepseek/deepseek-v4-pro-0813 via Wafer ·
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 ·
Grok 4.7
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, ""); } ```1,719 tokens in, 724 out (644 of them reasoning) · 6.7 s · $0.0048 · 1 message on Pro · answered by x-ai/grok-4.7 via xAI ·
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 ·
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 16 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, and GLM, 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.