Vibe coding is describing the outcome you want in plain language and letting an AI model write the code, without reading most of it. Andrej Karpathy named it in February 2025 - "fully give in to the vibes... and forget that the code even exists"1 - and it entered Merriam-Webster's slang dictionary the same year.2
It is not a lower standard. It is a different division of labour: you keep the judgement about what should exist, and hand over the typing and the recall.
What it is not
Not only for non-developers
Experienced engineers vibe code constantly, for work that is tedious rather than difficult. The practice is about which parts you choose to read - not whether you could.
Not the same as prompting
Asking a chatbot for a function and pasting it in is not vibe coding. The defining feature is that a loop runs, acts on your project, and checks itself - see what an AI coding agent is.
Where it breaks
Vibe coding works beautifully and then stops rather suddenly, and the turning point is not the size of the thing. It is verification: the moment nothing can tell you whether the last change broke something, progress reverses.
Which is why tests extend vibe coding further than any tool choice does. A test replaces "I understand this code" with "the machine can tell me if I broke it" - exactly the signal you gave up by not reading. The tools piece goes into where each kind of tool sits relative to that line.
How to do it well
Two habits carry most of it. Verify continuously - keep something running that can tell you the thing still works, because that is the signal you traded away. And commit constantly, because your undo is git rather than your memory of what changed.
The rest is judgement about where to spend your attention, which is what the longer piece on the tools is for - including the five-step practice, the failure modes, and what to do when a session starts fighting itself.
Which tool for which job
| What you are making | Reach for |
|---|---|
| A web app from nothing | A prompt-to-app builder - it owns the scaffolding and hosting |
| A change to something that exists | A coding agent in your editor or terminal |
| A script or automation | A terminal agent, so it can run what it writes |
| Documents, decks, data work | An agent that is not code-only |
The longer version, with the failure modes: the best vibe coding tools.
Check yourself
Three questions.
What defines the point where vibe coding stops working?
It is a verification limit. Large, well-tested projects stay vibe-codable; small unverifiable ones hit the wall early.
Karpathy's original framing was about forgetting the code exists. What does that trade away?
Reading code is how a developer builds a mental map of the dependencies. Give that up and the map has to come from somewhere else - which is the whole argument for keeping something automated that can check the work.
You want to change an app that already exists. What fits?
Builders are built for greenfield - they own the scaffolding. Changing existing code needs something that reads the code around the change first.
Sources
- Andrej Karpathy, the post coining "vibe coding", 2 February 2025.
- Merriam-Webster, "vibe coding", slang and trending words, 2025.
An agent that runs your checks
W1 does the work and runs the tests, which is the signal vibe coding needs most. Free during beta, on desktop, VS Code and the terminal.
Download free beta