Vibe coding, defined
Vibe coding is building software by telling an AI what you want in plain language and accepting the code it writes based on whether the result works, not on reading every line. You describe a feature, the tool writes it, you run it, you describe what is wrong, it fixes it. The loop is fast enough that the code becomes something you steer rather than something you author.
The phrase comes from a February 2025 post by Andrej Karpathy, who described “fully giving in to the vibes” and forgetting the code exists. It caught on because the tools had just crossed the line where that was possible: an editor could edit a dozen files at once, an app builder could stand up a database and auth from a sentence, and a terminal agent could run the tests and fix its own mistakes.
It is worth separating two things people mean by the term. The narrow meaning is the pure version: never read the code, ship on vibes. The broad meaning, which is how most people actually work, is AI-first development where you prompt more than you type but still look at what matters. This guide covers both, and most of the advice is about moving from the first to the second without losing the speed.
Scan your own app for issues like these
Paste your live URL. We check what your app serves publicly for exposed keys and misconfigurations. No account, no install.
The tools people actually use
There are dozens, but the market has settled into three shapes. AI code editors put a model inside an editor you control. App builders generate and host an entire app from a prompt, files optional. Terminal agents run in your shell and work through a task end to end.
| Tool | Shape | Best for |
|---|---|---|
| Cursor | AI code editor | Developers who want AI inside a real editor, with full control of the files |
| Claude Code | Terminal agent | Multi-file changes, refactors, and working through a whole task from the command line |
| Lovable | App builder | Non-developers shipping a full web app with Supabase auth and database from a prompt |
| Bolt | App builder | Fast prototypes in the browser, full-stack, deploy in one click |
| v0 | UI generator | React and Tailwind interfaces for a Next.js app, component by component |
| Replit Agent | Cloud IDE agent | Build and host in the same place, good for beginners and quick tools |
| GitHub Copilot | Editor assistant | Autocomplete and chat inside VS Code for people already writing code |
| Windsurf | AI code editor | Cursor alternative with an agent that runs longer multi-step tasks |
A common path: start in Lovable or Bolt to get a working app in an hour, export the repo to GitHub, then continue in Cursor or Claude Code once the changes get specific. The builders are better at the first 80 percent; the editors are better at the last 20.
How to vibe code, step by step
- Start with the outcome, not the stack. “A page where a customer uploads a PDF and gets a summary emailed to them” is a better first prompt than anything mentioning React. Let the tool pick the stack; it will pick what it is best at.
- Build in small loops. One feature per prompt. Run it. Describe what is wrong in the words a user would use. Ten small prompts beat one giant spec every time, because the model can only hold so much context and you can only check so much at once.
- Give it the error, verbatim. When something breaks, paste the full error message. Most tools fix a pasted stack trace on the first try and a paraphrased one on the third.
- Commit constantly. Every working state goes into git. When the AI wanders off into a refactor you did not ask for, you roll back instead of arguing with it.
- Read the parts that touch money, data, and login. You do not need to read the CSS. You do need to read the payment handler, the database rules, and anything that decides who can see what. This is the whole difference between a prototype and a product.
- Scan before you share the link. Paste the URL or the repo into a scanner. It takes thirty seconds and catches the handful of mistakes that every AI tool makes by default. More on those below.
Where vibe coding goes wrong
The failure modes are consistent across tools, because they come from the same place: the AI optimizes for the code working, and insecure code works. We have the data on this. Across 4,740 live vibe-coded apps and 2,148 repos, the same four things showed up everywhere.
- The key is in the code. An API key pasted inline to get the feature working, meant to be moved later. It was the most common serious finding in every group of repos we scanned. Once the app is deployed, that key ships to every visitor's browser. See how to fix an exposed API key.
- There is a login page but no authorization. The tool built the sign-in screen, the session, the redirect. It skipped the check that runs after login on every route. Type
/dashboardinto a logged-out tab and it renders. 159 of the 4,740 live apps did exactly this. See missing auth on an API route. - The database is readable with the public key. Supabase and Firebase ship a public key to the browser by design. That is fine when row level security is on. When it is off, anyone can read every table with the key already in the page. 30 live apps were open this way. See the Lovable Supabase key pattern and the RLS checker.
- User input goes straight into a query, a shell, or a file path. Injection and path traversal were the next most common findings after hardcoded secrets. They are the classic bugs, and AI tools reproduce them because the simplest working code has them. See SQL injection by string concatenation.
None of this is an argument against vibe coding. It is an argument for one habit: check the parts the AI is bad at. The tools are getting better at the rest faster than anyone predicted.
Vibe coding vs. traditional coding
Traditional development is writing code and occasionally asking for help. Vibe coding is asking for code and occasionally writing it. The skills that transfer are the ones about judgment: knowing what a good result looks like, knowing which parts are dangerous, knowing when the tool is confidently wrong. The skills that matter less are syntax, boilerplate, and remembering APIs. Experienced developers who adopt it tend to get faster; beginners tend to get further than they could have before, up to the point where judgment is required, which is usually right before launch.
Is vibe coding worth learning?
If you have ideas and no way to build them, it is the biggest unlock in a decade. If you already build software, it is a speed multiplier on the parts you find boring. Either way the thing to learn is not a tool, since the tools change every quarter. It is the loop: small prompts, run it, read the error, commit, and look hard at anything involving login, data, or money.
When you have something you are proud of, run it through the free scanner before you post the link. It checks the exact mistakes above, on a live URL or a public repo, in about thirty seconds.
Frequently asked questions
What does vibe coding mean?
Vibe coding is building software by describing what you want in plain language and letting an AI coding tool write, run, and fix the code, while you judge the result by whether it works rather than by reading every line. The term was coined by Andrej Karpathy in early 2025 and stuck because it describes what people were already doing with tools like Cursor, Lovable, and Claude Code.
Is vibe coding real programming?
It produces real programs, so yes in the way that matters. What changes is the skill: instead of writing syntax you are specifying behavior, testing it, and deciding what to accept. People with programming experience are better at spotting when the AI is wrong; people without it can still ship working apps, but they rely more on the tool's defaults, and that is where most of the risk sits.
Which tool is best for vibe coding?
It depends whether you want to see the code. If you do, Cursor or Claude Code. If you want a finished app from a prompt without touching files, Lovable or Bolt. If you are building an interface for a Next.js app, v0. There is no single best; most serious builders use a builder to start and an editor to finish.
Is vibe coding safe?
The code is only as safe as what you check. In our probe of 4,740 live vibe-coded apps, about 1 in 18 served a private page, API records, or a readable database to a visitor with no login, and in 2,148 scanned repos the most common serious flaw was an API key hardcoded in the source. None of that is inevitable; all of it is invisible if nobody looks. A free scan before you share the link covers the common cases.
Can I vibe code a real product that makes money?
Yes, and many people have. The ones that last treat the AI as a fast first draft: they add authentication that actually enforces access, keep secrets out of the frontend, review payment and data-handling code by hand, and set up a scan on every change. The ones that fail usually ship the first working version to real users and find out about the open database from a stranger.
Do I need to know how to code to vibe code?
No, to start. Yes, a little, to finish well. You can build something real with zero experience. Knowing enough to read an error, understand what an environment variable is, and recognize the difference between a login page and an authorization check turns a prototype into something you can put in front of customers.
Go deeper
- How to secure a vibe-coded app, the full checklist
- Adding authentication that actually enforces access
- Taking payments safely in a vibe-coded app
- A vibe-coded app security teardown, what a real one looked like
- The open dataset: 4,740 live apps and 2,148 repos