I’ll be honest — I went into this comparison expecting ChatGPT-4o to win. I’ve been using OpenAI’s products since GPT-3 days, and there’s a muscle memory that comes with that. But after three weeks of throwing the same tasks at both models, my daily driver quietly changed. That’s worth talking about.
This isn’t a benchmark article. I’m not going to hand you a table of MMLU scores and call it a day.
I actually work with these tools — writing, coding, research, client work — and what I care about is what happens when you use them for real things, not carefully constructed test prompts designed to make one look better than the other.
The Setup
Same prompts, same context, same day whenever possible (because these models do get updated quietly). I tested across:
- Long-form writing and editing
- Code generation and debugging (Python, JavaScript, SQL)
- Data analysis with uploaded CSVs
- Research summarisation
- Multi-step reasoning
- Image understanding
- Speed under load
I’m not going to pretend I was perfectly scientific about this. I’m a writer and developer, not a researcher. But I ran enough parallel tests that patterns became obvious.
Writing Quality: Claude Wins, But Not By Screaming
The most noticeable difference when you’re writing anything longer than 500 words — Claude 3.5 Sonnet sounds like someone who has read a lot. The sentence rhythm changes. It doesn’t default to that three-bullet-point summary structure that 4o loves to fall into the moment a prompt gets even slightly abstract.
I gave both models the same brief: write the opening two paragraphs of a feature article about the decline of third places in cities. Claude produced something I could actually use. 4o gave me something that read like a very confident content brief.
That said — 4o is faster to the point. If you need quick explanations, customer-facing copy that has to be scannable, or social posts, 4o’s slightly flatter voice is actually an asset. Claude can over-write when the brief doesn’t constrain it enough.
For editing other people’s work, Claude is noticeably better. It catches rhythm issues and inconsistencies, not just grammar. 4o edits are more mechanical — correct but not insightful.
Code: Closer Than You’d Think, But Claude Handles the Weird Stuff Better
Both models are genuinely good at generating standard code. The gap isn’t about who can write a CRUD API faster — they’re both fast, both reasonably accurate.
Where Claude 3.5 Sonnet pulls ahead is debugging unfamiliar errors. I had a particularly annoying asyncio issue in Python where two libraries were conflicting in a way that wasn’t well-documented anywhere obvious.
I pasted the full traceback and some context. Claude gave me a working fix with an explanation that actually helped me understand what was happening. 4o gave me three suggestions, two of which were plausible but wrong.
This happened multiple times. Claude seems to reason more carefully through the error before proposing a solution. 4o has a pattern of throwing several options at you, which feels helpful until you realise it’s hedging because it’s not sure.
One place 4o is better at code: when you need it to be extremely direct and terse. Claude sometimes explains more than you want when you’re in flow state. There’s a version of working with Claude where you have to keep telling it to skip the explanation.
SQL was essentially a tie. Both got complex JOINs right first try. Both struggled with the same edge cases around window functions in certain dialects.
Reasoning Through Complex Problems
This is where the personality difference between the two models matters most.
Claude approaches problems like someone who’s actually uncertain. It hedges appropriately — not in a way that’s evasive, but in a way that mirrors how a careful person talks.
When I gave it an ambiguous strategy question (“should this startup focus on B2B or B2C first”), it asked a clarifying question before answering. Annoying if you just want an answer, but the answer it gave after was more useful.
4o charges in. It gives you a confident answer with structure. Which is fine, except the confidence can obscure situations where the question genuinely doesn’t have a clean answer.
For reasoning tasks where there actually is a right answer — logic puzzles, constraint problems, step-by-step maths — they’re close. Claude has a slight edge in multi-step problems where keeping track of state matters. I noticed 4o occasionally loses the thread around step 6-7 in a long chain and contradicts an assumption it made early on.
Image Understanding
4o is better here, and it’s not particularly close. Reading charts, describing diagrams, extracting information from screenshots — 4o handles all of this with more precision and detail.
Claude 3.5 Sonnet is decent at image tasks but noticeably less comfortable with dense visual information. If you’re building anything that relies on vision-heavy workflows, 4o is the pick.
This surprised me, actually. Claude’s text quality lead is real, but vision is an area where OpenAI’s investment shows.
Speed and Availability
Under normal conditions, 4o is faster. Not dramatically, but perceptibly. If you’re doing high-volume work where latency adds up, that matters.
More importantly: 4o is available via API to a wider range of developer tooling right now, and the rate limits are less punishing on mid-tier plans.
Claude has improved significantly here, but if you’re building production pipelines and cost-per-token matters at scale, run your own numbers — the pricing structures are different enough that the answer depends on your use case.
The Context Window Actually Matters for Real Work
Both offer large context windows now. Claude 3.5 Sonnet handles long documents notably better in practice — not just accepting them, but using the information throughout the response without drifting back to generic answers halfway through.
I sent both a 40-page technical spec and asked specific questions about sections mentioned only in passing. Claude consistently found and used the right sections.
4o had a failure mode where it would answer correctly at first, then start generating answers based on general knowledge rather than the document. Subtle but frustrating when accuracy matters.
Pricing Reality (As of Mid-2025)
Neither of these is cheap if you’re using them seriously via API. Claude 3.5 Sonnet is competitive with GPT-4o on a per-token basis, and for tasks where you’re processing long documents, Claude’s better context utilisation can mean fewer re-runs — which affects cost more than the raw token price.
The free tiers on both are enough to test. Claude.ai’s free tier is more limited but the paid tier delivers a noticeably better experience than it did six months ago.
Which One Should You Actually Use?
Depends on what you do all day.
If your work is primarily writing and analysis — journalism, research, marketing, legal review, any domain where nuance and accuracy in language matter — Claude 3.5 Sonnet is currently the better tool. The difference is real enough that switching was worth the friction of breaking old habits.
If you need vision capabilities, very fast responses, or you’re deeply integrated into OpenAI’s ecosystem (assistants API, fine-tuning, plugins), 4o is the practical choice. The ecosystem advantage is real.
If you write code all day, honestly try both on your specific stack before committing. The difference is smaller than the writing gap, and the right answer depends on what kinds of errors you run into.
One thing I’d push back on: the narrative that Claude is “safer” and therefore “less useful” is outdated. Claude 3.5 Sonnet doesn’t refuse things that are reasonable, and it doesn’t add safety disclaimers to every answer the way older Claude versions did. That’s improved significantly.
The Honest Take
Neither model is universally better. The honest answer to “Claude vs GPT-4o” is that they’ve differentiated into genuinely different tools rather than racing on the same track.
Claude’s lead in text quality is real and growing. OpenAI’s lead in vision and ecosystem is real and they’re not going to give it up easily.
Pick based on your actual work, not benchmarks. Run both on your specific prompts for a week. The right answer will become obvious.




