CLAUDE LABJP
FORK — Claude Code 2.1.212 changes what /fork does: it copies your conversation into a new background session with its own row in claude agents, so you can keep working. The old in-session subagent is now /subtaskLIMITS — WebSearch calls are now capped at 200 per session by default, and subagent spawns get the same 200 ceiling, so a runaway search or delegation loop stops on its ownMCPBG — MCP tool calls running past two minutes now move to the background automatically, keeping the session usable. Tune the threshold with CLAUDE_CODE_MCP_AUTO_BACKGROUND_MSPLANFIX — Fixed plan mode auto-running file-modifying Bash commands such as touch and rm without a permission prompt or an SDK canUseTool callbackSONNET5 — Claude Sonnet 5 is running on introductory pricing of $2 per million input tokens and $10 per million output. After August 31 it moves to $3 and $15IPO — Bankers are reportedly lining up investor meetings for Anthropic ahead of a possible public listing as soon as OctoberFORK — Claude Code 2.1.212 changes what /fork does: it copies your conversation into a new background session with its own row in claude agents, so you can keep working. The old in-session subagent is now /subtaskLIMITS — WebSearch calls are now capped at 200 per session by default, and subagent spawns get the same 200 ceiling, so a runaway search or delegation loop stops on its ownMCPBG — MCP tool calls running past two minutes now move to the background automatically, keeping the session usable. Tune the threshold with CLAUDE_CODE_MCP_AUTO_BACKGROUND_MSPLANFIX — Fixed plan mode auto-running file-modifying Bash commands such as touch and rm without a permission prompt or an SDK canUseTool callbackSONNET5 — Claude Sonnet 5 is running on introductory pricing of $2 per million input tokens and $10 per million output. After August 31 it moves to $3 and $15IPO — Bankers are reportedly lining up investor meetings for Anthropic ahead of a possible public listing as soon as October
Articles/Claude.ai
Claude.ai/2026-04-19Intermediate

Gemini 2.5 Pro vs Claude Sonnet 4.6: Real Coding Task Comparison for Japanese Developers

A hands-on comparison of Gemini 2.5 Pro and Claude Sonnet 4.6 across real coding tasks: bug fixing, feature implementation from Japanese specs, and code review. Find out which model fits your workflow.

model-comparison2geminiclaude-sonnet-4-6codingbenchmark

Choosing between Gemini 2.5 Pro and Claude Sonnet 4.6 gets a lot clearer once you actually run them through tasks that mirror real development work.

Both models made significant leaps in early 2026, and plenty of developers now use one—or both—as daily coding assistants. I've been running them in parallel across my own app projects, and what follows is an honest account of where each model shines and where it falls short. No synthetic benchmarks here—just tasks I actually needed to do.

What I Tested and How I Evaluated

Three types of coding tasks formed the basis of this comparison, all drawn from situations I've encountered in real personal projects:

  • Bug fixing: Code snippets with real Optional/async bugs in Swift and TypeScript
  • Feature implementation: Building API endpoints and UI components from Japanese-language specs
  • Code review: Spotting issues and suggesting refactors in existing code

I evaluated on four dimensions:

  • Accuracy in interpreting Japanese-language specifications
  • Code quality (does it run? is error handling solid?)
  • Natural quality of Japanese explanations and comments
  • Rough sense of token consumption per task

The honest verdict upfront: both models are genuinely capable, and neither completely dominates. They have different strengths that surface depending on the type of task.

Test 1: Bug Fixing Accuracy

I fed both models a Swift function with a common Optional handling bug:

// Buggy: nil check is missing
func getUserProfile(id: String) -> UserProfile {
    let user = database.find(id: id)
    // Crashes here if user is nil
    return UserProfile(name: user.name, age: user.age)
}

Claude Sonnet 4.6's response:

// Fixed: proper Optional handling
func getUserProfile(id: String) -> UserProfile? {
    guard let user = database.find(id: id) else {
        // Return nil instead of crashing — let the caller decide how to handle it
        return nil
    }
    return UserProfile(name: user.name, age: user.age)
}

Claude explained why the return type needed to change to UserProfile?, why guard let is the right pattern here, and added an unprompted note: "The calling code will also need to handle nil." That kind of forward-looking comment reflects genuine understanding of how the fix ripples through the codebase.

Gemini 2.5 Pro's response:

Gemini proposed the same guard let fix. The technical result was essentially identical. Where it differed: the explanation mixed English terms like "guard let binding" into an otherwise Japanese explanation, which felt less natural for developers who prefer to read in Japanese throughout.

For this type of bug fix, both models perform well. Claude edges ahead on the readability of its Japanese explanations, which matters when you're working primarily in Japanese.

Test 2: Implementing from a Japanese-Language Spec

I handed both models a Japanese specification and asked for a TypeScript implementation:

Spec: User list endpoint
- GET /api/users
- Query params: page (default 1), limit (default 20, max 100)
- Response: array of users, total count, current page
- Auth required (Bearer token)
- Return error if page is out of range

What Claude Sonnet 4.6 produced:

import { Request, Response } from 'express';
 
// GET /api/users — fetch paginated user list
app.get('/api/users', authenticateToken, async (req: Request, res: Response) => {
  // Safe parsing with sensible bounds enforcement
  const page = Math.max(1, parseInt(req.query.page as string) || 1);
  const limit = Math.min(100, Math.max(1, parseInt(req.query.limit as string) || 20));
  const offset = (page - 1) * limit;
 
  try {
    // Parallel fetch to minimize latency — both queries are independent
    const [users, totalCount] = await Promise.all([
      db.users.findMany({ skip: offset, take: limit }),
      db.users.count()
    ]);
 
    const totalPages = Math.ceil(totalCount / limit);
 
    // Don't treat page=1 as an error when there's no data yet
    if (page > totalPages && totalCount > 0) {
      return res.status(400).json({ error: 'Page out of range' });
    }
 
    res.json({
      users,
      total: totalCount,
      currentPage: page,
      totalPages,
    });
  } catch (error) {
    console.error('Failed to fetch users:', error);
    res.status(500).json({ error: 'Server error' });
  }
});

Two things stand out here. First, the totalCount > 0 guard: the spec said "return an error if out of range," but Claude inferred that page=1 with zero records shouldn't count as an error—it's the normal empty state. That's the kind of implicit edge case that catches real bugs in production. Second, the Promise.all for parallel fetching is a performance optimization the spec never mentioned.

Gemini 2.5 Pro's output:

Technically correct, but it implemented the spec more literally. The totalCount > 0 condition was absent, and so was the parallel fetch. If you hand it a spec, you get an implementation of that spec—no more, no less.

This test is where the gap between the two models is most visible. Claude reads between the lines of a spec and accounts for edge cases you didn't explicitly describe. Gemini implements what's written.

Test 3: Code Review Quality

For this task, I asked both models to review a React component for performance, accessibility, and code organization.

Both caught the real issues. The difference showed up in how they framed their findings.

Claude opened with: "I'd prioritize the accessibility issues first, before the performance work, because—" and then explained the reasoning clearly. The judgment call was visible, which made it easier to decide where to actually start.

Gemini listed the problems accurately, but without guidance on sequencing. If you already know your priorities and just want a second pair of eyes, that works. If you're looking to the model to help you decide what to tackle first, Claude's approach is more immediately useful.

A secondary difference: Claude's suggested rewrites included inline comments explaining why a given change was made, not just what changed. Over time, this makes a real difference when you're reviewing the model's suggestions quickly.

How Japanese-Language Support Actually Feels Day-to-Day

For developers who work primarily in Japanese, the quality of explanations affects productivity in ways that are easy to underestimate until you've spent time with both models.

Claude's Japanese output is consistently fluent. It balances technical precision with accessible language, and it doesn't slip into English for concepts that have established Japanese equivalents. When it uses English terms (like specific API names), it's usually because there's no natural Japanese alternative—not because it defaults to English.

Gemini tends to leave more English technical terms untranslated mid-sentence. Terms like "guard let binding" or "Promise chain" appear in otherwise Japanese paragraphs. For developers comfortable reading English documentation this isn't a dealbreaker, but if you prefer clean Japanese throughout—especially when sharing output with teammates—it creates friction.

This isn't a criticism of Gemini's technical accuracy. The code is correct. It's more about the texture of working with the model over an extended session.

Token Consumption: A Rough Sense

This is anecdotal rather than rigorously measured, but after running both models through repeated similar tasks:

  • Claude Sonnet 4.6 tends to generate longer, more detailed explanations. Higher token usage per exchange, but also more context.
  • Gemini 2.5 Pro skews toward brevity. Fewer tokens for the same core task, which translates to lower cost for high-volume use.

That said, this gap is largely controllable. Telling Claude "keep it concise" brings the output length down noticeably. For a systematic approach to keeping Claude API costs manageable, Claude Sonnet 4.6 cost-effective development guide covers the practical strategies.

Which One Should You Use?

Here's the framework I've settled on after running both models across real projects:

Lean toward Claude Sonnet 4.6 when:

  • Your workflow centers on Japanese-language specs that need interpretation, not just transcription into code
  • You want code reviews that surface prioritized, actionable findings
  • You're already using Claude Code and want consistency across your toolchain
  • You prefer explanations that include the reasoning behind a decision, not just the decision itself

Lean toward Gemini 2.5 Pro when:

  • Your work revolves around Google Workspace and you want tight native integration
  • You prefer terse, to-the-point responses and do your own reasoning from there
  • You're invested in the Google AI Pro subscription for broader Google product access
  • You're comfortable with Gemini CLI or Vertex AI and want consistency there

There's no reason to commit to one exclusively. Running both under their respective monthly plans and switching by task type is a practical strategy, not a workaround. If you want to compare pricing before committing, Google AI Pro vs Claude Pro: 2026 Comparison has a current breakdown.

Where to Go from Here

If you work primarily in Japanese and you're still undecided, Claude Sonnet 4.6 is the stronger starting point. The spec interpretation edge and the fluency of Japanese explanations compound over a long project in ways that aren't obvious from a single session.

The easiest way to get a real sense: pick one task you've been putting off—a bug, a small feature, a piece of code you've been meaning to clean up—and run it through Claude Sonnet 4.6 today. One session is usually enough to know whether it fits.

Share

Thank You for Reading

Claude Lab is ad-free, supported entirely by members like you. We publish practical guides daily with implementation code, benchmarks, and production-ready patterns. If you've found it useful, we'd love to have you on board.

  • Copy-paste ready implementation code
  • New advanced guides published daily
  • $5/mo or $10 for lifetime access
View Membership →

If you found this article helpful, a small tip ($1.50) would mean a lot to us. Your support helps keep this site ad-free and covers server and hosting costs.

Related Articles

Claude.ai2026-06-12
Three Days of Running Claude Fable 5 Side by Side with Opus 4.8 — Settling My Model Split Before June 15
I ran Claude Fable 5 alongside Opus 4.8 on the same iOS maintenance tasks during the free introduction window. Where the new model clearly pulls ahead, where it does not, and how I split the two before the June 15 billing change.
Claude.ai2026-07-12
Using Claude's Reflect Monthly Review to Tune a Solo Dev Rhythm
How to read Claude's new Reflect monthly review as a planning tool for the month ahead rather than a report card, grounded in the day-to-day rhythm of solo development.
Claude.ai2026-07-11
When a Connector Starts Slowing Down at Night: A Health-Aware Circuit Breaker for Solo Automation
Seeing connector errors and latency is only half the job — the other half is deciding when to route around them. This is my implementation of a circuit breaker that opens on error rate and p95, with runnable Python and notes on wiring it into nightly jobs.
📚RECOMMENDED BOOKS
Build a Large Language Model (From Scratch)
Sebastian Raschka
LLM Dev
Prompt Engineering for LLMs
Berryman & Ziegler
Prompting
AI Engineering
Chip Huyen
AI Eng
* Contains affiliate links
See all →