We’ve all seen it. That perfectly formatted, slightly soulless, oddly enthusiastic code that screams "I was born in a server farm." ChatGPT and Claude are amazing tools, but they have a distinct accent.
Whether you're a senior dev reviewing PRs or a student trying to verify if your teammate actually did the work, spotting these patterns is a superpower. Here are the 10 most common "tells" of AI-generated code.
1. The "Data" Obsession
AI is terrified of being wrong, so it defaults to the most generic variable names possible. The worst offender? data.
🤖 ChatGPT
const processData = (data) => {
return data.map(item => item.value);
}
👨💻 Human
const extractPrices = (cartItems) => {
return cartItems.map(item => item.price);
}
2. The "Tutorial" Comments
AI writes comments like it's teaching a beginner's Python course. It explains syntax instead of logic.
// Define a function to calculate the sum
function calculateSum(a, b) {
// Return the result of a plus b
return a + b;
}
Thanks, ChatGPT. I forgot what "plus" meant.
3. The Defensive "Try-Catch" Wrapper
AI is risk-averse. It loves to wrap everything in a try-catch block, often swallowing errors with a generic console log.
try {
// ... code ...
} catch (error) {
console.error("An error occurred:", error);
}
4. The "Result" Variable
Similar to "data", AI loves to assign calculations to a variable named result before returning it, even when it's not needed.
🤖 ChatGPT
const result = x * y;
return result;
👨💻 Human
return x * y;
5. The "Item" Iterator
In loops, AI almost always uses item. Humans usually pick something specific like user, product, or even just u or p.
6. Perfect Grammar in Strings
Human error messages are often short or lowercase: throw new Error("user not found"). AI writes proper sentences: throw new Error("The specified user could not be found in the database.").
7. The "Utility" Class
AI loves to group unrelated functions into a Utility or Helper class. It struggles with domain-driven design nuances.
8. Over-Destructuring
AI will destructure props at the top of a function even if they are only used once. It follows "best practices" blindly, ignoring context.
9. The "Placeholder" Logic
AI often leaves comments like // TODO: Implement actual logic here or uses mock data structures that look suspiciously perfect (e.g., "John Doe", "123 Main St").
10. Lack of "Hacks"
This is the biggest tell. AI code is too clean. It rarely uses // @ts-ignore, any, or clever one-liners. It writes code like a textbook, not like a developer on a deadline.
Why AI Falls Into These Patterns
LLMs are trained on the average of the internet. They are statistically likely to choose the most common path. The most common path is often the "tutorial" path—generic, safe, and explanatory.
Humans, on the other hand, write code with intent. We take shortcuts. We use slang in comments. We name variables after inside jokes. We have a "vibe."
Does Your Code Pass the Vibe Check?
Paste your snippet into our engine and see if it flags these patterns.
Analyze Your Code's Vibe →