What Is Vibe Coding? Origins, How It Works, and Where It Falls Apart
Vibe coding is writing software by describing what you want to an AI, without reading the code it produces. Coined by Andrej Karpathy in February 2025, the term has taken on a life of its own. Here's what it actually means.
The Origin
On February 6, 2025, Andrej Karpathy — former head of AI at Tesla and co-founder of OpenAI — posted this on X:
There’s a new kind of coding I call “vibe coding”, where you fully give in to the vibes, embrace exponentials, and forget that the code even exists.
He described using Cursor Composer with Claude Sonnet, dictating instructions through SuperWhisper, accepting all changes without reading diffs, and copy-pasting error messages back when things broke. His conclusion: “not too bad for throwaway weekend projects, but still quite amusing.”
The post got over 4.5 million views. Within weeks, “vibe coding” was everywhere.
Source: Andrej Karpathy on X, Feb 6 2025
What Vibe Coding Actually Means
Vibe coding has a specific meaning: writing software with an AI tool without reviewing the code it generates.
You describe what you want. The AI writes it. You run it. If it works, you move on. If it breaks, you paste the error back and let the AI try again. At no point do you read the code line by line or try to understand the implementation.
This is not the same as using AI to help you code. As Simon Willison put it: “If an LLM wrote the code for you, and you then reviewed it, tested it thoroughly and made sure you could explain how it works… that’s not vibe coding, it’s software development.”
Source: Simon Willison, “Not all AI-assisted programming is vibe coding” (March 2025)
How People Actually Vibe Code
In practice, vibe coding sessions tend to follow a pattern:
- Start with a prompt. “Build me a landing page with a pricing table and a contact form.” Or: “Create a Next.js app that tracks my book reading list.”
- Accept the output. The AI generates files, dependencies, styles, and logic. You don’t read the diff.
- Run it. If the app starts and looks right, you keep going.
- Fix by describing. When something breaks, you describe the problem or paste the error. The AI patches it.
- Repeat until done. The cycle continues until the thing works or you give up.
The tools people use for this include:
- Cursor — Karpathy’s original tool of choice. Composer mode generates multi-file changes from prompts.
- Claude Code — Anthropic’s terminal agent. Reads your codebase, writes files, runs commands.
- Bolt and Lovable — Browser-based builders that generate full-stack apps from text descriptions.
- v0 — Vercel’s tool for generating React UI components from descriptions.
- Replit — Browser IDE with AI that can scaffold entire projects.
Where Vibe Coding Works
Vibe coding is genuinely useful for:
Throwaway prototypes. You have an idea for a tool. You want to see if the concept works before investing real time. Vibe coding gets you a working demo in minutes. If the concept doesn’t hold up, you’ve lost very little.
Personal utilities. A script to rename files in a specific pattern. A Chrome extension that hides elements on a page. A small web app to track something. Low stakes, no users, no security concerns.
Learning and exploration. You want to see how something works — a new API, a framework feature, an unfamiliar pattern. Generating a working example and poking at it can be faster than reading documentation.
Hackathons and demos. When the goal is a working prototype in hours, not production code, vibe coding is a reasonable approach.
Where Vibe Coding Breaks Down
The problems start when the stakes go up:
You can’t debug what you don’t understand. When vibe-coded apps hit a bug that the AI can’t fix by iterating, you’re stuck. You don’t know the code, so you can’t reason about it. The AI enters a loop of patches that introduce new bugs, and the project grinds to a halt.
Security is a blindspot. AI-generated code may include SQL injection vulnerabilities, exposed API keys, missing authentication checks, or other security issues that you’d catch in a review — but you’re not reviewing. For anything that handles user data, payments, or authentication, this is a serious risk.
Code grows beyond AI’s context window. Current AI models work well on small projects. As codebases grow, the model can’t hold the entire project in context. Changes in one file break assumptions in another. The AI starts generating code that conflicts with code it wrote earlier.
Maintenance is painful. Code you didn’t write and don’t understand is code you can’t maintain. When requirements change — and they always do — you’re back to square one, prompting the AI to modify code that neither of you fully grasps.
Cost adds up. AI API calls cost money. Iterative vibe coding sessions — where you keep prompting until something works — can burn through API credits quickly, especially with frontier models like Claude or GPT.
Vibe Coding vs. AI-Assisted Development
The distinction matters. Here’s the spectrum:
| Approach | You read the code? | You understand it? | You test it? | Risk level |
|---|---|---|---|---|
| Manual coding | You wrote it | Yes | You should | Low |
| AI-assisted coding | Yes, you review it | Yes, you verify | Yes | Low |
| Vibe coding | No | No | You run it | High for anything beyond prototypes |
Most professional developers using AI tools are doing AI-assisted coding, not vibe coding. They use Copilot for completions, Cursor for refactoring, Claude Code for multi-file changes — but they review what gets generated. That’s a fundamentally different activity from “give in to the vibes and forget the code exists.”
The Tools, Honestly
Every tool on this site can be used for vibe coding. The question is which ones make it easiest:
- Bolt and Lovable are the most vibe-code-native tools. They’re designed for people who describe what they want and get a running app. You never need to look at the code.
- Cursor and Windsurf support both approaches. You can vibe code with Composer/Cascade, or you can use tab completions and inline edits for careful AI-assisted work.
- Claude Code and Aider are CLI tools that give you more control. You see the diffs, you approve changes. They lean toward AI-assisted development by default, though you can accept everything blindly.
- GitHub Copilot is primarily a completion tool. It’s harder to vibe code with Copilot because it works at the line/block level, not the project level.
Browse all tools in our tool directory or compare them side by side.
Our Take
This site is called VibecodedThis for a reason — we think AI-assisted development (the whole spectrum, from careful review to full vibe coding) is changing how software gets built.
But we’re honest about the tradeoffs. Vibe coding is a powerful prototyping technique and a terrible production strategy. The best developers in 2026 use AI constantly, but they also understand the code they ship.
If you’re getting started with AI coding tools, our suggestion: start with AI-assisted development, not vibe coding. Use the AI to write first drafts, but read what it produces. Build your understanding of what the tools are good at and where they fail. Then, for the right projects — prototypes, experiments, personal tools — let yourself vibe.
Sources:
Stay in the loop
Get weekly insights on the best AI coding tools, tips, and tutorials.
Newsletter coming soon. Unsubscribe anytime.