Gemini 3.8 Flash · Coding
Gemini 3.8 Flash for coding: our test runs
Gemini 3.8 Flash ran our 5 coding prompts in llmwise, through the same pipeline your messages take. Here's every reply as it came, whether it passed, what it cost and what it counts as on Pro, next to the other models.
Based on 5 of our test runs on , through OpenRouter with the app's own prompt and settings. Updated .
Short answer
In our test runs on September 27, 2026, Gemini 3.8 Flash passed 5 of 5 of our coding prompts (both hard ones): tied 1st of 20 models. Each reply counted as 1 message on Pro, where it has 250 a month, and cost $0.0020 to run on average.
Prompt by prompt
Each of the 5 coding prompts, and how Gemini 3.8 Flash's reply did.
| Prompt | Result | Cost | Time |
|---|---|---|---|
| Turn a title into a URL slugEveryday | Passed: All 7 tests passed. | $0.0009 | 4.2 s |
| Parse a duration like “1h 30m”Everyday | Passed: All 10 tests passed. | $0.0010 | 2.3 s |
| Merge overlapping intervalsEveryday | Passed: All 7 tests passed. | $0.0012 | 3.8 s |
| Evaluate an arithmetic expression, no evalHard | Passed: All 15 tests passed. | $0.0045 | 6.7 s |
| Parse CSV with quoted fieldsHard | Passed: All 8 tests passed. | $0.0022 | 5.0 s |
Every coding reply from Gemini 3.8 Flash
Turn a title into a URL slug
An everyday prompt: “Turn a title into a URL slug”, in full.
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 ·
Parse a duration like “1h 30m”
An everyday prompt: “Parse a duration like “1h 30m””, in full.
Passed: All 10 tests passed.
```javascript function parseDuration(text) { if (typeof text !== 'string') return null; const match = text.trim().match(/^(?:(\d+)h)?\s*(?:(\d+)m)?\s*(?:(\d+)s)?$/); if (!match || (!match[1] && !match[2] && !match[3])) { return null; } const hours = match[1] ? Number(match[1]) : 0; const minutes = match[2] ? Number(match[2]) : 0; const seconds = match[3] ? Number(match[3]) : 0; return hours * 3600 + minutes * 60 + seconds; } ```498 tokens in, 176 out · 2.3 s · $0.0010 · 1 message on Pro · answered by google/gemini-3.8-flash via Google ·
Merge overlapping intervals
An everyday prompt: “Merge overlapping intervals”, in full.
Passed: All 7 tests passed.
```javascript function mergeIntervals(intervals) { if (!intervals || intervals.length <= 1) { return intervals ? intervals.map(interval => [...interval]) : []; } // Clone and sort by start time, breaking ties by end time const sorted = intervals .map(interval => [...interval]) .sort((a, b) => a[0] - b[0] || a[1] - b[1]); const merged = [sorted[0]]; for (let i = 1; i < sorted.length; i++) { const current = sorted[i]; const lastMerged = merged[merged.length - 1]; // Overlapping or touching intervals if (current[0] <= lastMerged[1]) { lastMerged[1] = Math.max(lastMerged[1], current[1]); } else { merged.push(current); } } return merged; } ```477 tokens in, 229 out · 3.8 s · $0.0012 · 1 message on Pro · answered by google/gemini-3.8-flash via Google ·
Evaluate an arithmetic expression, no eval
A hard prompt: “Evaluate an arithmetic expression, no eval”, in full.
Passed: All 15 tests passed.
```javascript function evaluate(expression) { // Tokenize the expression const tokens = []; let i = 0; const n = expression.length; while (i < n) { const ch = expression[i]; if (/\s/.test(ch)) { i++; continue; } if (/[0-9.]/.test(ch)) { let start = i; let dotCount = 0; while (i < n && /[0-9.]/.test(expression[i])) { if (expression[i] === '.') dotCount++; i++; } if (dotCount > 1) { throw new Error(`Invalid number format at index ${start}`); } const numStr = expression.slice(start, i); if (numStr === '.') { throw new Error(`Invalid single dot at index ${start}`); } tokens.push({ type: 'NUMBER', value: parseFloat(numStr) }); continue; } if ('+-*/^()'.includes(ch)) { tokens.push({ type: ch, value: ch }); i++; continue; } throw new Error(`Unexpected character '${ch}' at index ${i}`); } let pos = 0; function peek() { return tokens[pos]; } function consume(expectedType) { const token = tokens[pos]; if (!token || (expectedType && token.type !== expectedType)) { throw new Error(`Unexpected token at position ${pos}`); } pos++; return token; } // Grammar with precedence: // Expr -> AddSub // AddSub -> MulDiv (('+' | '-') MulDiv)* // MulDiv -> Unary (('*' | '/') Unary)* // Unary -> '-' Unary | Power // Power -> Primary ('^' (Unary | Power))? -- right associative, handles 2^-1 and -2^2 // Primary -> NUMBER | '(' Expr ')' function parseExpr() { return parseAddSub(); } function parseAddSub() { let left = parseMulDiv(); while (pos < tokens.length && (tokens[pos].type === '+' || tokens[pos].type === '-')) { const op = consume().type; const right = parseMulDiv(); left = op === '+' ? left + right : left - right; } return left; } function parseMulDiv() { let left = parseUnary(); while (pos < tokens.length && (tokens[pos].type === '*' || tokens[pos].type === '/')) { const op = consume().type; const right = parseUnary(); if (op === '/') { left = left / right; } else { left = left * right; } } return left; } function parseUnary() { if (pos < tokens.length && tokens[pos].type === '-') { consume('-'); return -parseUnary(); } if (pos < tokens.length && tokens[pos].type === '+') { consume('+'); return parseUnary(); } return parsePower(); } function parsePower() { let left = parsePrimary(); if (pos < tokens.length && tokens[pos].type === '^') { consume('^'); // Right-hand side allows unary minus (e.g. 2^-1) or another power const right = parseUnary(); return Math.pow(left, right); } return left; } function parsePrimary() { const token = peek(); if (!token) { throw new Error('Unexpected end of input'); } if (token.type === 'NUMBER') { consume('NUMBER'); return token.value; } if (token.type === '(') { consume('('); const val = parseExpr(); consume(')'); return val; } throw new Error(`Unexpected token '${token.value}' at position ${pos}`); } if (tokens.length === 0) { throw new Error('Empty expression'); } const result = parseExpr(); if (pos < tokens.length) { throw new Error(`Unexpected token at position ${pos}`); } return result; } ```587 tokens in, 1,070 out · 6.7 s · $0.0045 · 1 message on Pro · answered by google/gemini-3.8-flash via Google ·
Parse CSV with quoted fields
A hard prompt: “Parse CSV with quoted fields”, in full.
Passed: All 8 tests passed.
```javascript function parseCsv(text) { if (text === '') return []; // Remove a single trailing newline if present if (text.endsWith('\r\n')) { text = text.slice(0, -2); } else if (text.endsWith('\n')) { text = text.slice(0, -1); } if (text === '') return []; const rows = []; let currentRow = []; let currentField = ''; let inQuotes = false; let isStartOfField = true; for (let i = 0; i < text.length; i++) { const char = text[i]; if (inQuotes) { if (char === '"') { if (text[i + 1] === '"') { currentField += '"'; i++; // skip escaped quote } else { inQuotes = false; } } else { currentField += char; } } else { if (isStartOfField && char === '"') { inQuotes = true; isStartOfField = false; } else if (char === ',') { currentRow.push(currentField); currentField = ''; isStartOfField = true; } else if (char === '\r' && text[i + 1] === '\n') { currentRow.push(currentField); rows.push(currentRow); currentRow = []; currentField = ''; isStartOfField = true; i++; // skip '\n' } else if (char === '\n') { currentRow.push(currentField); rows.push(currentRow); currentRow = []; currentField = ''; isStartOfField = true; } else { currentField += char; isStartOfField = false; } } } currentRow.push(currentField); rows.push(currentRow); return rows; } ```515 tokens in, 480 out · 5.0 s · $0.0022 · 1 message on Pro · answered by google/gemini-3.8-flash via Google ·
How it compares on coding
Gemini 3.8 Flash beside the job's picks among every model. 18 models share the hard-problems pick, Gemini 3.8 Flash among them.
| Model | Passed | On Pro | Cost per reply |
|---|---|---|---|
| GLM 5.3Our pick: hard problems (shared), best value | 5 of 5 | 250 a month on Pro | $0.0015 |
| GLM 5.3 FlashOur pick: hard problems (shared), everyday | 5 of 5 | 60 a day on Pro | $0.0003 |
| Gemini 3.8 FlashOur pick: hard problems (shared) | 5 of 5 | 250 a month on Pro | $0.0020 |
Every limit is published. Paid plans also have a monthly fair-use limit on AI cost: Plus $3.75, Pro $7.50, Max $20, Ultra $42, Studio $85. Using every message on your plan at typical sizes stays under it; very large messages and heavy research use it faster. Every limit, explained.
Gemini 3.8 Flash next to each model on coding
Gemini 3.8 Flash against each model on the same 5 coding prompts. One run each, through OpenRouter: a wait depends on the provider and the load that day, so a lead under 10% counts as close.
Against Claude Fable 5.1: Gemini 3.8 Flash answered 1.3× sooner (4.2 s to 5.5 s), cost 21.8× less, and passed 5 of 5 to its 5.
Against Claude Opus 5.5: Gemini 3.8 Flash answered 1.7× sooner (4.2 s to 7.2 s), cost 8.7× less, and passed 5 of 5 to its 5.
Against Claude Sonnet 5.5: Gemini 3.8 Flash answered 2.1× later (4.2 s to 2.0 s), cost 3.2× less, and passed 5 of 5 to its 5.
Against Claude Sonnet 5: Gemini 3.8 Flash answered 1.6× later (4.2 s to 2.7 s), cost 5.2× less, and passed 5 of 5 to its 5.
Against Claude Haiku 5.5: Gemini 3.8 Flash answered within 10% of its time (4.2 s to 3.9 s), cost 4.3× more, and passed 5 of 5 to its 5.
Against Claude Haiku 4.5: Gemini 3.8 Flash answered 1.8× later (4.2 s to 2.3 s), cost 1.4× less, and passed 5 of 5 to its 3. Only Gemini 3.8 Flash passed Evaluate an arithmetic expression, no eval; Parse CSV with quoted fields.
Against GPT-6 Astra: Gemini 3.8 Flash answered 2.0× sooner (4.2 s to 8.2 s), cost 11.4× less, and passed 5 of 5 to its 5.
Against GPT-6.1 Sol: Gemini 3.8 Flash answered 1.1× sooner (4.2 s to 4.8 s), cost 1.2× less, and passed 5 of 5 to its 5.
Against GPT-6 Sol: Gemini 3.8 Flash answered 1.1× sooner (4.2 s to 4.8 s), cost 2.7× less, and passed 5 of 5 to its 5.
Against GPT-6 Luna: Gemini 3.8 Flash answered within 10% of its time (4.2 s to 4.6 s), cost 6.8× more, and passed 5 of 5 to its 5.
Against Gemini 4 Argon: Gemini 3.8 Flash answered 1.2× later (4.2 s to 3.5 s), cost 1.3× less, and passed 5 of 5 to its 5.
Against Gemini 3.1 Pro (preview): Gemini 3.8 Flash answered 2.4× sooner (4.2 s to 10.3 s), cost 10.0× less, and passed 5 of 5 to its 5.
Against DeepSeek V4.1 Flash: Gemini 3.8 Flash answered 1.7× later (4.2 s to 2.5 s), cost within 10% of it, and passed 5 of 5 to its 5.
Against DeepSeek V4 Pro: Gemini 3.8 Flash answered 28.6× sooner (4.2 s to 119.6 s), cost 12.3× less, and passed 5 of 5 to its 5.
Against Grok 4.7: Gemini 3.8 Flash answered 7.5× sooner (4.2 s to 31.6 s), cost 12.6× less, and passed 5 of 5 to its 5.
Against Kimi K3: Gemini 3.8 Flash answered within 10% of its time (4.2 s to 4.1 s), cost 3.2× less, and passed 5 of 5 to its 5.
Against GLM 5.3: Gemini 3.8 Flash answered 4.0× later (4.2 s to 1.1 s), cost 1.3× more, and passed 5 of 5 to its 5.
Against GLM 5.3 Flash: Gemini 3.8 Flash answered 2.0× sooner (4.2 s to 8.4 s), cost 7.7× more, and passed 5 of 5 to its 5.
Against Mistral Large 4: Gemini 3.8 Flash answered 8.8× sooner (4.2 s to 36.8 s), cost 3.7× less, and passed 5 of 5 to its 4. Only Gemini 3.8 Flash passed Evaluate an arithmetic expression, no eval.
How these runs were done
Tests. Automatic. The function runs against the prompt's tests in a separate Node.js process with a time limit and no file, network or child-process access; it passes when every test passes.
Gemini 3.8 Flash, and coding, elsewhere
- Gemini 3.8 Flash: price, limits and messages on every plan
- The best AI for coding: our picks among every model
- Gemini for coding
- Gemini 3.8 Flash for writing: our test runs
- Gemini 3.8 Flash for math: our test runs
- Gemini 3.8 Flash for data analysis: our test runs
- Gemini 3.8 Flash vs DeepSeek V4.1 Flash
- Claude Sonnet 5 vs Gemini 3.8 Flash
- Claude Haiku 4.5 vs Gemini 3.8 Flash
- GPT-6 Sol vs Gemini 3.8 Flash
- GPT-6 Luna vs Gemini 3.8 Flash
- Gemini 3.1 Pro (preview) vs Gemini 3.8 Flash
- Gemini 3.8 Flash vs DeepSeek V4 Pro
- Gemini 3.8 Flash vs Grok 4.7
- Gemini 3.8 Flash vs Kimi K3
- Gemini 3.8 Flash vs GLM 5.3
- Gemini 3.8 Flash vs GLM 5.3 Flash
- Analyze a CSV with code: the prompt, and its price
- AI prompts for coding, checked by running the code
- Our test runs: 50 prompts on every model
Questions
Is Gemini 3.8 Flash good for coding?
In our test runs it passed 5 of 5 coding prompts, tied 1st of the 20 models in llmwise. Every reply is on this page, so you can judge them yourself.
How many of my messages does a coding reply from Gemini 3.8 Flash use?
1 message each on Pro, where it has 250 a month on Pro. The price of a message is fixed and shown before you send it, however long the reply.
How were these runs done?
The same way for every model: each prompt sent through llmwise's own pipeline, each reply checked the same way. The methods page has every prompt and how each is scored.
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.