Claude Opus 4.8 vs DeepSeek V4 Pro for code review

The verdict

Claude Opus 4.8 wins, 8478

Same 12 code review tasks, marked blind by three rival labs. Claude Opus 4.8 took 5 tasks, DeepSeek V4 Pro took 3, 4 tied. Tested 18 Aug 2026.

Where they differed most

The task — The pagination that skips page one

Review this function. Context you can rely on: `page` is 1-based — the public API docs promise that page=1 returns the first page; `items` is always an array and may be empty; `perPage` is taken straight from a query string. function pageOf(items, page, perPage) { const start = page * perPage; const rows = items.slice(start, start + perPage); const lastPage = Math.ceil(items.length / perPage); return { rows, total: items.length, lastPage, hasNext: page <= lastPage }; } List the real defects, most damaging first, and for each one say what a user of the API would actually SEE — not what the code does, what they notice. Then give the corrected function. Do not list style preferences as defects.

## Real Defects

### 1. Off-by-one on `start` — page=1 skips the first page entirely

`start = page * perPage`. With the documented 1-based `page`, `page=1` gives `start = perPage`, so it returns the *second* page.

**What the user sees:** They request page 1 and get the second batch of results. The very first items in the list are unreachable through the normal API — asking for page 1 silently skips them. To see the true first item they'd have to pass `page=0`, which contradicts the documented contract.

### 2. `hasNext` is off-by-one and inve…
## Real Defects (most damaging first)

### 1. **Off-by-one in `start` calculation — returns wrong page of data**
**What the user sees:** When they request `page=1`, they get the *second* page of results instead of the first. If there are 10 items per page and 25 total items, `page=1` returns items 11–20 instead of items 1–10. The first page of data is completely inaccessible.

### 2. **`hasNext` is inverted — wrong pagination indicator**
**What the user sees:** On every page *except* the last one, `hasNext` returns `false`. On the last page, `h…

Task by task

TaskClaude Opus 4.8DeepSeek V4 Pro
The pagination that skips page one93
Nothing wrong with it48
Three things wrong in six lines89
Two customers, one last item95
Rank by what breaks98
The review, as JSON57
Slow is not the same as wrong108
Overdue at one in the morning88
Write only the comment1010
The complaint that is not a defect99
Right, and unusable1010
Refuse the rubber stamp109

Full receipts: Claude Opus 4.8, DeepSeek V4 Pro · judges gemini-3.1-pro-preview, gpt-5.6-terra, grok-4.5

Questions people ask

Which is better for code review: Claude Opus 4.8 or DeepSeek V4 Pro?

Claude Opus 4.8 — it scored 84/100 against 78/100 on our 12-task code review suite, winning 5 tasks to 3 with 4 tied. Every answer was marked blind by three judges from three rival AI labs.

How was this tested?

Both models answered the identical published code review tasks. Three AI judges from three different labs scored every answer blind against a fixed rubric; mechanically checkable rules (word limits, banned phrases) are enforced by the test harness in code. The raw outputs and judge verdicts are downloadable.

More code review head-to-heads: Claude Opus 4.8 vs GPT-5.6 Sol · DeepSeek V4 Pro vs GPT-5.6 Sol · Claude Opus 4.8 vs GPT-5.5 · DeepSeek V4 Pro vs GPT-5.5 · Claude Opus 4.8 vs Claude Sonnet 5 · Claude Sonnet 5 vs DeepSeek V4 Pro

Full ranking: Best AI for code review · model pages: Claude Opus 4.8, DeepSeek V4 Pro