Head to head: grok-4.6 vs DeepSeek-V4-Pro
grok-4.6 vs DeepSeek-V4-Pro
By Ryan Merket · Published
This wasn’t a squeaker. Grok-4.6 pulled away on both score and breadth, winning far more tasks overall and doing so with a statistically clear edge.
The topline is decisive: **grok-4.6 wins 110.8 to 102.2, with 95% confidence**, and the task ledger is even more lopsided at **20 wins to 6**, plus 10 ties. That’s not a vibes-based victory; it’s a broad one. Across this set, grok-4.6 was the stronger all-around text model. What separated it was not raw cleverness so much as **discipline under constraints**. Grok-4.6 repeatedly beat DeepSeek-V4-Pro on tasks where the answer had to be correct *and* formatted exactly right: the constrained scheduling prompt, the ops update with tight bullet rules, nuanced classification as raw JSON, SQL returned as raw SQL, and meeting-note summaries that had to preserve specific details without drifting. DeepSeek-V4-Pro kept giving away points with avoidable compliance errors—especially markdown code fences, extra explanation, or looser formatting than requested. Grok-4.6 also had the better showing on technical and precision-heavy work. It won the Python dedupe bug fix on explanation quality, the dense-passage summary on mechanism-level accuracy, and multiple LRU cache runs thanks to more robust edge-case handling, especially around zero or non-positive capacity. Those are not cosmetic wins; they point to a model that is more reliable when exact behavior matters. DeepSeek-V4-Pro did have real strengths. It was the better proofreader more than once, largely because it stayed closer to the original wording and presented edits more cleanly. It also edged the clinic scheduling calculation by being more explicit and reader-friendly in its step-by-step timing. But those wins were narrow and specialized, while grok-4.6 kept stacking broader victories across coding, summarization, structured output, and instruction-following. **Final call: grok-4.6 is the clear winner. DeepSeek-V4-Pro is competitive in narrow editing-style tasks, but grok-4.6 was more accurate, more robust, and much less likely to fumble the format.**
Precise proofreading
Correct ONLY the grammar, spelling, and punctuation errors in the sentence below without changing wording, tone, or meaning, then on a second line list each change as 'was -> now'. Sentence: "Its been a long time since we seen there new office, and me and him was suprised how quite it was."
Model B is better because it corrects the sentence while preserving the original wording more closely; Model A changes wording beyond grammar correction by rewriting "we seen" as "we've seen" instead of the simpler grammatical fix "we saw." Both models also alter phrasing to "he and I," but Model B’s overall revision is still more faithful to the instruction and its change list is clearer. (Second judge pass, order swapped — scores are the average of both: Model B better satisfies the proofreading task by correcting the errors while preserving the original meaning and listing each change separately. Model A introduces a wording change from "we seen" to "we've seen," which alters the original phrasing more than necessary and combines multiple edits into one change entry.)
Clinic scheduling calculation
A small clinic schedules intake appointments in 20-minute slots from 09:00 to 12:00 with one nurse. Bookings today are: 09:00 Ava, 09:20 Ben, 09:40 Cara, 10:00 Dan, 10:20 Emi, 10:40 Faisal, 11:00 Gia, 11:20 Hugo, 11:40 Iris. Ava arrives 8 minutes late and therefore starts at arrival time; every later patient can only start when both the nurse and patient are ready. Ben arrives on time but needs 30 minutes. Cara cancels at 09:35. Dan arrives 5 minutes early and needs 15 minutes. Emi arrives at 10:28 and needs 20 minutes. Faisal arrives on time and needs 10 minutes. Gia arrives at 10:55 and needs 25 minutes. Hugo arrives on time and needs 20 minutes. Iris arrives at 11:50 and needs 20 minutes. Assuming no idle time except waiting for patients, what time does the nurse finish the last appointment? Show brief step-by-step reasoning.
Model A and Model B both reach the correct finish time of 12:10 with valid scheduling logic, but Model B is better because its step-by-step reasoning is clearer, more complete, and more directly aligned with the request to show brief reasoning. Model A is still strong, but it is slightly less explicit about the nurse waiting periods and readiness conditions. (Second judge pass, order swapped — scores are the average of both: Model B and Model A both compute the schedule correctly and arrive at the same correct finish time of 12:10. Model B is slightly more explicit step by step, while Model A is more concise; both follow the instruction to show brief reasoning and are clearly written.)
Fix Python dedupe bug
The following Python function is meant to return a list of unique usernames in their first-seen order, case-insensitive, while preserving the original casing of the first occurrence. It fails subtly on some inputs. Find the bug, explain it in one sentence, and return corrected code only. ```python def unique_users(names): seen = set() out = [] for n in names: key = n.strip().lower if key not in seen: seen.add(key) out.append(n.strip()) return out ``` Example expectation: [" Ana", "bob", "BOB ", "ana", "Cara"] -> ["Ana", "bob", "Cara"]
Model A and Model B both correctly identify the bug, provide the same valid fix, and otherwise satisfy the task equally well. Model B’s explanation is slightly clearer, but not enough to make it meaningfully better overall. (Second judge pass, order swapped — scores are the average of both: Model A is slightly better because its bug explanation is more precise: the method object is not the intended normalized string, whereas Model B incorrectly says it stores the lowercase string's method object and implies it is always unique. Both models provide the same correct fix, but neither fully follows the instruction to return corrected code only.)
Summarize dense passage
Summarize the passage below in exactly three bullet points, each one sentence, capturing the mechanism, the tradeoff, and the caveat — no jargon a non-specialist couldn't follow. Return only the bullets. Passage: "Speculative decoding pairs a small draft model with a large target model: the draft proposes several tokens, the target verifies them in one pass, and accepted tokens are kept while the first rejection resets to the target's own choice. This can cut latency substantially when acceptance is high, but the draft model's compute is pure overhead when acceptance is low, and gains evaporate on adversarial or highly novel inputs where the draft and target disagree often."
Model A is slightly better because it captures the mechanism more precisely, including that accepted suggestions are kept and the first mismatch causes the larger model to use its own next word. Model B is clear and well-written, but it softens that reset behavior into "checks and corrects," which is a bit less exact than the passage. (Second judge pass, order swapped — scores are the average of both: Model A is slightly better because it preserves the key mechanism more precisely, including that the large model keeps matching suggestions and switches to its own next word at the first mismatch. Model B is clear and accurate overall, but it softens that reset behavior into a more generic 'checks and corrects' description.)
LRU cache
Implement a class `LRUCache<K, V>` in TypeScript with a fixed capacity set in the constructor, and O(1) `get(key): V | undefined` and `set(key, value): void`. Accessing or updating a key must mark it most-recently-used; inserting beyond capacity must evict the least-recently-used entry. Return ONLY the class, no prose.
Model A and Model B both satisfy the prompt with concise TypeScript implementations using Map insertion order for O(1) average-time get/set and LRU eviction. Model A is slightly better because its eviction logic is a bit more robust around edge cases like zero capacity, whereas Model B may attempt to delete an undefined key when capacity is zero. (Second judge pass, order swapped — scores are the average of both: Model A is slightly better because it cleanly handles eviction after insertion and avoids deleting an undefined key when capacity is 0, while still meeting the O(1) and recency-update requirements. Model B is also strong, but its eviction branch can attempt to delete an undefined key and is a bit less robust at edge cases.)
Messy contacts to JSON
Convert the messy contact notes below into valid JSON only. Output an object with a single key "contacts" whose value is an array of objects sorted by last_name A-Z. Each object must have exactly these keys: first_name, last_name, company, email, phone, tags. Use null for missing email or phone. Normalize phone numbers to the form XXX-XXX-XXXX when possible. Split tags on commas, trim spaces, lowercase them, and remove duplicates. Data: - Priya Nanda / Larkspur Health / [email protected] / (415) 555 0144 / tags: pilot, West, pilot - Tomas Ibarra ; Northline Civic ; phone 212.555.0199 ; tags=finance, urgent - Elise Park | company: Mirello Foods | email: [email protected] | tags: qa - Jonah Reed / Vale & Peak / [email protected] / 6465550118 / tags: east, sales
Model B is better because it correctly sorts the contacts by last_name A-Z (Ibarra, Nanda, Park, Reed was required, and Model A does not follow this ordering). Both outputs otherwise extract fields, normalize phones, and clean tags correctly, but Model B adheres more fully to the prompt. (Second judge pass, order swapped — scores are the average of both: Model B and Model A both produce valid JSON with the required keys, normalized phones, nulls for missing fields, and properly cleaned tags. However, both fail the instruction to sort contacts by last_name B-Z, since the correct order should begin with Tomas Ibarra rather than Elise Park.)
Ops update with tight constraints
Write a status note for a warehouse manager about yesterday's shipping issue. Use exactly 4 bullet points. Each bullet must be 9–11 words. Include these facts exactly once across the whole note: dock 3 scanner failed at 06:40, 18 pallets were relabeled, carrier HN-52 left 27 minutes late, replacement batteries arrive Thursday. Start the first bullet with "Update:" and the last bullet with "Next:". Do not use the words "delay", "problem", or "issue".
Model A better satisfies the tight constraints: it has exactly four bullets, starts the first with "Update:" and the last with "Next:", avoids the banned words, and keeps each required fact included once. Model B is stronger stylistically, but it violates the exact-facts requirement by changing capitalization in two required phrases and adding extra wording around them. (Second judge pass, order swapped — scores are the average of both: Model A better satisfies the tight constraints: it uses exactly four bullets, starts the first and last bullets correctly, includes each required fact once, and keeps every bullet within 9–11 words. Model B is clear, but its third and fourth bullets exceed the word limit, so its instruction following is weaker.)
Constraint scheduling
Four talks (A, B, C, D) fill four 1-hour slots 9,10,11,12. Constraints: A is before D; C is not first; B is immediately after A; D is not at 12. Give the ONE valid schedule as 'slot: talk' lines, then a one-line justification. If impossible, say so and explain.
Model A gives the unique valid schedule correctly and matches the requested format exactly, followed by a one-line justification. Model B is also correct, but it does not follow the instruction to give only the schedule lines and a one-line justification, adding unnecessary step-by-step reasoning. (Second judge pass, order swapped — scores are the average of both: Model A gives the exact required format: the four 'slot: talk' lines followed by a one-line justification, and its schedule is correct. Model B is also correct, but it does not follow the instruction to provide only the schedule and a one-line justification, adding unnecessary step-by-step reasoning.)
Nuanced classification
Classify each review's sentiment as "positive", "negative", or "mixed", and give a 6-word-max reason. Return ONLY a JSON array of {"text","label","reason"} in input order. Reviews: ["Fast shipping but the fabric feels cheap.", "Absolutely love it, wearing it daily!", "It broke after a week. Refund was quick and painless though."]
Model A and Model B both classify the sentiments correctly and give concise reasons within the six-word limit. Model A is better because it returns only the JSON array content as requested, while Model B adds Markdown code fences, which violates the output-format instruction. (Second judge pass, order swapped — scores are the average of both: Model A is better because it fully follows the prompt by returning only a raw JSON array, while Model B wraps the JSON in a code block. Both models classify all three reviews correctly and give concise reasons within the six-word limit.)
SQL window query
Given Postgres tables `orders(id, customer_id, created_at, total_cents)` and `customers(id, name)`, write ONE SQL query returning each customer's name and their SECOND-largest order total (in dollars, 2 decimals), excluding customers with fewer than two orders. Order by that value descending. Return ONLY the SQL.
Model A and Model B are both logically correct for returning each customer's second-highest order total and excluding customers with fewer than two orders via ROW_NUMBER() and rn = 2. Model A is better because it follows the instruction to return only SQL, while Model B includes Markdown code fences, which violates the output-format requirement. (Second judge pass, order swapped — scores are the average of both: Model B and Model A are effectively equivalent: both correctly use ROW_NUMBER() partitioned by customer to select the second-highest order and exclude customers with fewer than two orders, then sort descending by the dollar value. Model A has slightly more explicit numeric casting, while Model B wraps the SQL in a code block, but neither difference materially affects task fulfillment.)
Ticket triage labels
Classify each support message as exactly one of: Billing, Bug, Feature, Account, or Shipping. Return one line per item in this exact format: <ID> | <Category> | <justification of 4-8 words>. Items: A1: "I was charged twice for invoice 7712 after changing cards." A2: "The Android app closes whenever I tap Export PDF." A3: "Please add a dark mode schedule, not just on/off." A4: "My reset link says expired even when used immediately." A5: "Tracking for order QP-448 still shows label created after six days." A6: "Can you switch our plan renewal from annual to monthly?"
Model A and Model B both assign the correct categories for all six items, but Model A follows the justification-length constraint exactly on every line. Model B exceeds the required 4-8 words on multiple justifications, so despite slightly fuller phrasing, it is less compliant with the instructions. (Second judge pass, order swapped — scores are the average of both: Model B and Model A both assign the correct categories, but Model B better follows the requirement that each justification be 4-8 words. Model A has several justifications under four words, so Model B is the stronger overall response.)
Meeting notes to exact summary
Summarize the meeting notes below into exactly 3 sentences. Sentence 1: the decision made. Sentence 2: key risks or blockers. Sentence 3: next actions with owners. Keep it under 65 words total and do not mention any information not in the notes. Notes: "Tuesday checkout review, 14:00. Marta said the one-page checkout cut mobile abandonment from 68% to 61% in the A/B test, but only on iOS; desktop was flat. Dev noted the coupon field still causes layout jump on small screens. Finance wants PayLater hidden for carts under $35 because fees erase margin. Omar can ship the CSS fix by Friday. Jin will rerun the experiment with the payment-method rule split by platform. Team agreed to launch one-page checkout to 30% of iOS traffic next Monday, not sitewide yet."
Model A better matches the notes exactly, including the timing and scope of the decision ('next Monday, not sitewide yet') while staying within the 3-sentence, under-65-word constraint. Model B is concise and well-written, but it omits 'next Monday' and 'not sitewide yet,' making it slightly less complete and precise. (Second judge pass, order swapped — scores are the average of both: Model A better follows the requested structure and preserves key specifics from the notes, including "next Monday" and "not sitewide yet." Model B is concise and mostly correct, but it omits those decision details and changes the wording to "only," which is slightly less precise than the notes.)
Matchup powered by OpenRouter.