Skip to content
AI Explained

What Is Vibe Coding? Building Software by Describing It

Vibe coding means building software by telling an AI what you want and judging the result by whether it runs. Where the term came from, the tools, a step-by-step workflow, prompts that work and the risks to check before anyone else uses your app.

Illustration of vibe coding: a chat bubble with lines of text flowing through an arrow into a code window showing angle brackets and a slash

Not long ago, building a small web app meant learning a framework or paying someone who had. Now plenty of people describe the app in a chat window, watch an AI write the code, paste back whatever error appears and repeat until it works. That's vibe coding: making software by telling an AI what you want and judging the result by whether it runs, not by reading the code. This guide explains what vibe coding is, where the term came from, the tools people use, a step-by-step workflow, prompts that make it work, and the risks that turn a weekend project into a data leak.

What vibe coding means (and where the term came from)

The phrase comes from Andrej Karpathy, an OpenAI co-founder and former head of AI at Tesla. On 2 February 2025 he posted on X about "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 talking to an AI code editor instead of typing, accepting every change without reading the diffs and pasting error messages back in with no comment, which usually fixed them. He also said it was "not too bad for throwaway weekend projects".

The term spread fast. Merriam-Webster listed it as "slang & trending" in March 2025, and Collins English Dictionary named it Word of the Year for 2025. Along the way the meaning stretched: some people use "vibe coding" for any programming with AI help, others keep Karpathy's narrower sense.

In the strict sense, three things define it:

  • You describe outcomes in plain language: "add a login page", "make the chart use weekly totals", not instructions about functions and files.
  • You don't read or fully understand the code: the AI writes it, edits it and fixes it.
  • You judge by behaviour: if the app does what you wanted when you click around, you move on.

That last point is what makes it so accessible and so risky. Software can look right on screen and still be insecure, fragile or wrong with inputs you didn't try.

Vibe coding vs AI-assisted programming

Developer Simon Willison drew the most useful line in March 2025: if an AI wrote every line of your code but you reviewed, tested and understood all of it, that isn't vibe coding, it's using the AI as a typing assistant. The difference isn't the tool; it's whether a human takes responsibility for the code.

  • Vibe coding: suited to prototypes, personal tools, one-off scripts, demos and learning. If it breaks, you're the only one affected.
  • AI-assisted engineering: the same tools, but with reviews, tests, version control and someone who can explain every change. This is what you need for anything other people rely on, especially software that handles logins, payments or personal data.

Most people who vibe code well slide between the two. They vibe their way to a working prototype, then slow down and review the parts that matter before anyone else uses it. If you can code, our AI prompts for coding cover the review-everything end of that spectrum.

Tools people use for vibe coding

The tools fall into three rough groups, and they change quickly, so check current features and pricing before you commit:

  • App builders in the browser: Lovable, Bolt.new, Replit and v0 turn a description into a running web app with hosting included. They're the easiest start for non-programmers, and the most likely to hide what's going on underneath.
  • AI code editors: Cursor, Windsurf and GitHub Copilot's agent mode in VS Code edit a real project on your computer. You see every file, which makes reviewing possible even if you skip it.
  • Terminal coding agents: Claude Code, OpenAI's Codex and Gemini CLI run in a terminal, read your project, run commands and make changes across many files. They're AI agents in the full sense: they act, not just suggest.

A plain chatbot also works for small things. Ask ChatGPT, Claude or Gemini for a single-file HTML page or a short Python script, copy it and run it. You'll hit the limits once a project needs several files, but it's a good way to see whether vibe coding suits you.

How to vibe code a small app, step by step

Take a realistic example: a page where your book club logs what each member is reading and rates it out of five. Here's a workflow that keeps the vibes but avoids the most common dead ends.

  1. Write a short spec first: who uses it, what they need to do, what it must never do and what "done" looks like. Ten lines are enough. Most frustrating vibe-coding sessions start with a one-sentence request that leaves the AI to guess everything else.
  2. Ask for a plan before code: have the AI propose the screens, the data it will store and the technology, and correct it before anything is built.
  3. Build the smallest version that works: one screen, fake data, no login. Get it running, then add features one at a time.
  4. Save a checkpoint after every working step: use git, or your builder's version history. When a change breaks things, going back is faster than arguing the AI out of a hole.
  5. Test like a user, then like a troublemaker: try empty fields, very long text, the back button and a second account that shouldn't see the first one's data.
  6. Review before you share: once other people will use it, ask for a security review (prompt below) and fix what it finds.

This is ordinary prompt chaining: a sequence of small, checkable requests instead of one huge one. Each step gives the AI less room to wander off.

Tip: Start a fresh conversation when the AI starts going in circles, fixing one bug and reintroducing another. Paste in your spec, a short summary of what already works and the one problem you're stuck on. Long sessions fill the context with failed attempts, and the model starts building on them.

Prompts that make vibe coding work

Good vibe-coding prompts sound like a brief to a contractor: the goal, the constraints and what counts as finished. The first one turns an idea into a plan you can check before any code exists:

I want to build [APP DESCRIPTION, E.G. A READING LOG FOR MY BOOK CLUB]. Users: [WHO USES IT AND HOW MANY]. They must be able to: [3-5 CORE ACTIONS]. It must never: [E.G. SHOW ONE MEMBER'S PRIVATE NOTES TO ANOTHER]. I'm [YOUR SKILL LEVEL, E.G. NOT A PROGRAMMER]. Before writing any code: 1. Ask me up to 5 questions about anything unclear. 2. Propose the simplest technology that would work, and say why. 3. List the screens and the data you'll store. 4. Split the build into small steps I can test one at a time. Wait for my approval before starting step 1.

When something breaks, the error message is your most useful input. Karpathy pasted errors "with no comment"; adding a little context gets better fixes:

This error appeared when I [WHAT YOU DID, E.G. CLICKED "SAVE" ON A NEW BOOK]: [PASTE THE FULL ERROR MESSAGE] What I expected: [EXPECTED RESULT]. Before changing anything, explain in plain English what's causing it. Then fix only that problem, list every file you changed, and tell me how to check that the fix worked. Don't rewrite unrelated code.

The last instruction matters: models fixing one bug like to "improve" code nearby, which is how new bugs appear. Before you share the app, run a review:

Review this project as a security-minded senior developer would before it goes live for [WHO WILL USE IT]. Check for: - passwords, API keys or tokens in the code or anywhere the browser can see - pages or data that work without logging in, or show other users' data - user input saved or displayed without validation - packages that look unmaintained or don't exist For each issue: the file, the risk in plain English, how serious it is (high/medium/low) and the fix. Don't change any code yet.

Tools like Cursor and Claude Code also read a project rules file (such as CLAUDE.md or AGENTS.md) at the start of each session. Put your spec, tech choices and standing rules there ("never commit keys", "ask before deleting files") so you don't repeat them. Our system prompt generator is a quick way to draft one, and feeding the model the right documents at the right time is what context engineering is about.

When vibe coding goes wrong

The failures follow a pattern: the app worked on screen, and nobody checked what it did underneath.

  • Exposed data: in May 2025, reports found that 170 of 1,645 web apps created with Lovable had a flaw that let anyone access personal information stored in them.
  • Destructive agents: in July 2025, SaaStr founder Jason Lemkin reported that Replit's AI agent deleted his production database during an explicit code freeze, then misrepresented what had happened.
  • Insecure by default: Veracode's research found that while models had become much better at writing code that works, the security of that code hadn't improved at the same rate.
  • Invented packages: models sometimes recommend software libraries that don't exist. Attackers register those names with malicious code, a trick known as slopsquatting. It's the coding version of AI hallucinations.
  • Code nobody can maintain: after a few weeks of accepted changes, a project can reach a size where neither you nor the AI can change one thing without breaking another.

There's also a newer risk for agents that browse or read files: hidden instructions in a web page or a downloaded library can steer them, which is prompt injection with access to your terminal.

How to vibe code more safely

You don't need to become a programmer to avoid the worst outcomes. Most of the protection is in habits:

  • Keep secrets out of the code: API keys and passwords belong in environment variables or your platform's secrets settings, never in a file the browser downloads. Ask the AI to show you where each key lives.
  • Use test data until the end: build with fake names and addresses. Real personal data should only arrive after a security review.
  • Limit what agents can do: work in a copy or a separate folder, keep production databases out of reach and turn on approval for commands that delete, deploy or install.
  • Back up before every big change: git commits or the builder's checkpoints. Restoring takes seconds; rebuilding from memory takes days.
  • Get a human to look before launch: if the app takes payments, stores health or financial data or serves the public, pay a developer for an hour of review. It costs less than the incident.
Tip: Ask the AI to explain its own code back to you: "Walk me through what happens, file by file, when a user signs up." If you can't follow the explanation, or it contradicts what the app does, you've found the part to review first.

What vibe coding can't do

  • It can't take responsibility: if the app leaks data or loses money, the person who shipped it is accountable, not the model.
  • It doesn't scale cleanly: it's at its best on small, self-contained projects. Large codebases with many users, integrations and years of history still need people who understand them.
  • It isn't always faster: in a 2025 randomised trial by METR, experienced open-source developers working on their own projects were 19% slower with AI tools, while believing they'd been faster.
  • It can't know what you didn't say: the AI fills gaps with plausible guesses. Unstated requirements, such as privacy rules, accessibility or what happens when two people edit at once, are usually missing.
  • It doesn't teach you much by default: accepting changes without reading them builds apps, not skills. If you want to learn, ask the AI to explain each change and try small edits yourself.

Used for what it's good at, vibe coding is remarkable: a working prototype in an afternoon, a personal tool that would never have been worth hiring someone for, a demo that settles an argument. Treat the result as a prototype until someone has checked what's under the bonnet. If you write for Claude or Claude Code, our Claude prompt generator helps you turn a rough idea into a structured spec.

References

Put this into practice. Apply what you just read with our free tool: Claude Prompt Generator →
By AI enthusiast & advanced user

Jordi Benitez has been using AI tools day to day for years. No researcher, no academic title — just an advanced user who has spent enough hours prompting ChatGPT, Claude, Gemini and image models to know what actually works, and built GetEasyPrompt to share it in plain language.

FAQ

Frequently asked questions

Vibe coding is building software by describing what you want to an AI in plain language and letting it write the code. You judge the result by whether the app works when you try it, rather than by reading the code. Andrej Karpathy coined the term in February 2025, and Collins English Dictionary named it Word of the Year for 2025.
No. App builders such as Lovable, Bolt.new and Replit let non-programmers create working web apps from a description. Some technical knowledge still helps a great deal: understanding error messages, version control and basic security lets you spot problems the AI misses and avoid losing work when a change breaks something.
Not quite. In vibe coding you accept the AI's code without reading or fully understanding it. In AI-assisted programming you use the same tools, but you review, test and understand every change. As Simon Willison puts it, code you have reviewed and understood isn't vibe coding, even if an AI wrote every line.
It's safe enough for prototypes and personal tools that don't hold sensitive data. For anything others rely on, it carries real risks: exposed API keys, data other users can see, insecure code and agents that delete files. Use test data, keep backups, limit what agents can do and get the code reviewed before launch.

Write your next prompt in seconds

Turn a rough idea into a clear, structured prompt any AI can follow. Free, private, and no account needed.

Open the Prompt OptimizerSee all tools