Vibe coding is building software by describing what you want to an AI model in plain language and running the code it writes, without reading it closely. It gets a working app quickly, and often leaves behind code that nobody understands.
Where the term comes from
AI researcher Andrej Karpathy coined the phrase in February 2025. He described a way of programming where you give in to the 'vibes' and forget the code exists. You describe a feature, the AI writes it, you run it, and when something breaks you paste the error back in and ask for a fix. Reading the code is optional.
Vibe coding versus AI-assisted coding
Using AI to write code is not automatically vibe coding. What separates them is whether you review and understand the result. A developer who reads a suggestion, tests it and fits it into the design is using AI as a tool, and stays responsible for every line. Vibe coding skips that step: if it seems to work, it stays.
A worked example
Say you want a small web page that logs the books you read and shows a monthly total. You type 'Build a page where I can add a book and see how many I read this month.' The AI produces HTML, CSS and JavaScript, and it runs. You ask for a chart, then a dark theme, then for the list to be saved in the browser. Each request works.
Then the monthly total is wrong on the first day of each month. You paste the bug in, the AI rewrites a date function, and the chart breaks. Because you never read the date code, you can't tell whether the fix is right or which change caused the new problem. You are steering only by what you see on screen.
When it fits
Vibe coding suits work where a mistake is cheap: a prototype you will throw away, or a personal tool that only you use.
It is a poor fit for anything other people rely on: code that handles their data, payments or logins, and code a team has to maintain. Generated code can hide security holes, such as an API key left in the page or input that is never checked. Models also produce code that looks right and isn't, which is why AI hallucinations matter here.
Doing it more safely
- Keep each request small, and commit every working version with Git so you can roll back.
- Ask for tests, and run them after each change.
- Give the AI clear context: what the app is for and the rules it must follow. Context engineering covers how.
- Read and understand the code before real users or real data touch it.
Key takeaways
- Vibe coding means prompting an AI for code and judging it only by whether it runs.
- It differs from AI-assisted coding, where you review and understand every change.
- It is fast and useful for prototypes and personal tools.
- Unread code can hide bugs and security holes, so review it before anyone relies on it.