Describe an app in plain English. Let an AI write the code. Run it, say what’s wrong, repeat.
That’s vibe coding. It suits prototypes and personal tools. It’s risky for anything that handles payments or other people’s data, until a human reads the code.
We gave an AI five lines of English and got a working guestbook app. Then we attacked it. AI-generated code passed the famous tests and failed the boring ones.
Where does the term vibe coding come from?
AI researcher Andrej Karpathy coined it in a post on X on 2 February 2025. He described a way of working where you “fully give in to the vibes” and “forget that the code even exists.”
His recipe was blunt. He spoke to his editor, hit “Accept All” every time and stopped reading the diffs. Errors went straight back in, pasted with no comment. A bug the AI couldn’t fix got a workaround, or random changes until it vanished.
Then came the line most explainers skip: it’s “not too bad for throwaway weekend projects.” He never pitched it for software that must last.
The phrase caught on fast. Collins Dictionary named vibe coding its Word of the Year for 2025. Its definition is looser: using AI, prompted in natural language, to help write code.
Most people use the looser meaning today. Here, vibe coding means the strict version: you accept what the AI writes without reviewing it. The model underneath predicts code the way it predicts sentences, as our generative AI explainer shows.
How does vibe coding work?
You describe what you want, the AI writes the code, you run it, and you report what’s wrong. Then the loop repeats until the app behaves.

Here’s the whole brief we used for our test app. Nothing else went in. No framework, no security note, no length limit:
Build a small guestbook web app in one Python file.
Visitors type a name and a message and press Post.
Show all messages, newest first, with the name and the time.
Add a search box that filters messages by a keyword.
Store everything in SQLite. Make it look decent.
The AI picked Flask and SQLite, wrote 99 lines and styled the page. We didn’t edit a character. It ran on the first try.
That’s the pull of vibe coding, and it’s real. A task that used to cost an afternoon took one prompt. The catch is what you don’t see, and we’ll get to it.
Vibe coding vs traditional coding vs AI-assisted coding
The prompt isn’t what separates them. What you do with the code afterwards is.
| Approach | Who writes the code | Who reads it | Fits best |
|---|---|---|---|
| Traditional coding | You | You | Anything you must maintain for years |
| AI-assisted coding | You and the AI | You, every change | Day-to-day work on real products |
| Vibe coding | The AI | Nobody | Throwaway apps, prototypes, personal tools |
Most working developers sit in the middle row. In Stack Overflow’s 2026 survey, 66% use AI coding assistants or agents. And 48% trust AI output only when they can easily verify it. That’s AI-assisted coding: the AI types, a person checks.
Vibe coding is the same loop with the checking removed. It’s also not no-code. Visual tools like the ones in our Softr vs Bubble comparison give you fixed building blocks. Vibe coding hands you real source code you can export and break.
Which tools do people use for vibe coding?
They fall into two groups: chat-to-app builders that run everything in a browser, and AI editors and agents that work inside a code project.
Chat-to-app builders suit people who don’t code. Bolt and Vercel v0 turn a prompt into a working preview, with nothing to install. Hostinger Horizons works the same way; see our Hostinger Horizons review. Lovable and Replit sit in this group too.
AI editors and agents suit people who can read code. Cursor, Claude Code, GitHub Copilot, OpenAI Codex and Windsurf edit files in your own project. Of developers in Stack Overflow’s 2026 survey who tried a coding agent last year, 66% used Claude Code, 59% GitHub Copilot, 30% Codex and 26% Cursor. Karpathy’s original post used Cursor.
Prefer credits you can spend across many models? Our BlackBox AI review covers the trade-offs. To let your editor reach your own tools and files, see our guide to connecting an MCP server.
Our take: Pick a builder if you want a result today and can live with someone else’s stack. Pick an editor if you’ll keep the project. We haven’t built an app in Bolt or v0 for this post, so we’re not ranking them. They’re the usual starting point.
Disclosure: Bolt and v0 are affiliate links. Sign up through them and we may earn a commission, at no cost to you.
What broke when we vibe coded a real app?
The logic held up. The settings around it didn’t.
We ran the guestbook on a Linux test box (Python 3.13, Flask 3.1) on 15 November 2026 and attacked it nine ways. One AI, one prompt, one small app, so this isn’t a benchmark. It’s what a first try looks like.
| What we tried | What happened | Result |
|---|---|---|
| Post a message, then search for it | Worked on the first run | Pass |
| Post a script tag as a message | Stored, then shown as plain text | Pass |
| Search for a classic SQL injection string | Zero results, treated as plain text | Pass |
| Search for an image tag with an error handler | Not rendered as HTML | Pass |
Search for % | Returned every message | Minor |
| Post a 2 MB message | Accepted | Fail |
| Post 100 messages in a loop | All 100 accepted | Fail |
| Post with a foreign Origin header | Accepted, no check | Fail |
Open /console | Debugger page answered, on every network interface | Fail |
The classic attacks bounced off. SQL injection and script injection failed because the AI used parameterised queries and Flask’s escaping template engine, which is the safe default.
What failed was everything nobody asked for: no size limit, no rate limit, no request check. Worse, the last line started the server in debug mode on all network interfaces. That exposes Flask’s interactive debugger page, which answered a plain request. It’s PIN-protected, and we didn’t try to get past the PIN.
Bandit, a free Python security scanner, flagged both settings in one run. It found nothing else, and it can’t see the missing limits. A scanner catches settings, not absences.
Real-world tip: Our five-line brief never mentioned debug mode, so the AI chose the tutorial default. We haven’t re-run the app with “no debug mode, localhost only, cap message length” added, so we can’t promise it fixes all four problems. It’s the first thing we’d try.
Veracode’s October 2026 update points the same way at scale. It tested 18 models on fixed coding tasks with no security hints. About 4 in 10 tasks still produced code with a known flaw, and the best model failed more than one in four.
Those tests hand a model one function to finish. Ours was a whole app on a framework that escapes output by default, so the results differ. The lesson matches anyway: the code runs, and you still need to check it.
What are the real risks of vibe coding?
The big three are security holes, code you can’t maintain and bugs you can’t trace.
Security: working isn’t the same as safe
A vibe-coded app can look perfect and still leave the door open. Our guestbook looked finished while the debugger sat exposed. Logins, payments and personal data raise the stakes. If your app calls other services, check how it keeps keys out of the page; our API authentication guide explains how.
Maintenance: code nobody read is code nobody owns
Karpathy said it himself: the code “grows beyond my usual comprehension.” Our app was one file because we asked for one file. At 99 lines that’s readable. At 2,000 lines of HTML, CSS, SQL and routes in a single file, you’d dread every change.
Debugging: the paste-the-error loop runs out
Pasting an error back usually works, until it doesn’t. Karpathy describes asking for random changes until a bug goes away. That’s fine for a weekend toy and a bad plan when a customer is waiting.
Stack Overflow’s 2026 data shows where working developers draw the line: only 20% use AI for deploying, operating or troubleshooting production systems.
When should you vibe code, and when should you not?
Vibe code when a mistake costs you nothing. Stop when it costs someone else.

Good fit: a prototype to test an idea, a script that renames your files, an internal dashboard only your team can reach. Throw it away if it fails, and nobody’s data was at risk.
Needs review: anything that takes payments, stores other people’s data or runs live for the public. Start with AI if you like. Just don’t ship what nobody has read.
Already have something running? Run through this before you share the link:
Before you share a vibe-coded app
Five checks, in order. Each one comes from something that went wrong in our test.
-
Step 1 of 5
Turn off debug mode
Find the line that starts the server. Remove
debug=Trueand bind to127.0.0.1unless you deliberately put the app online. -
Step 2 of 5
Run a scanner
For Python,
pip install bandit, thenbandit -r yourfile.py. Other languages have equivalents. Fix every high-severity finding. -
Step 3 of 5
Attack your own forms
Paste a script tag, a quote mark and a huge block of text into every input. See what the page does.
-
Step 4 of 5
Add the limits nobody asked for
Cap input length and requests per minute, and put any login or key outside the code. Ask the AI to add them, then test again.
-
Step 5 of 5
Keep a copy you can roll back
Put the project in version control and save a copy before every big AI change. When a fix breaks the app, you can go back.
Need to automate a workflow rather than build an app? You may not need code at all. Our n8n AI agent tutorial shows the no-code route.
Is vibe coding worth learning?
Yes, as a way to start. No, as a way to finish.
- You’ve never coded and want a tool for yourself: go for it, because a failed experiment costs nothing. Start with a chat-to-app builder.
- You’re a developer: use AI-assisted coding, not vibe coding, because you can read the output and the review is where the quality comes from.
- You run a business: use it for prototypes and internal tools. Get a developer to review anything customers touch, because that’s where the unseen gaps cost money.
- You’re learning to code: read what the AI writes. Skipping that is how you end up unable to fix your own app.
Frequently asked questions
Can you do vibe coding with no coding experience?
Yes, for simple apps. Tools like Bolt and v0 let you describe an app and see it run with nothing installed. Expect trouble when something breaks, though. You’ll need to read error messages and describe problems clearly, and that skill grows with every project you try.
What’s a good first vibe coding project?
Pick a single-page tool with no logins: a unit converter, a habit tracker or a guestbook like ours. Failure costs nothing, you’ll see the result in minutes, and a five-line brief is enough. Avoid anything that stores other people’s data until you can read what the AI wrote.
What should I put in a vibe coding prompt?
State the goal, the tools you want, the limits and what to avoid. Our five-line brief gave the goal only, and the AI filled the gaps with defaults, including debug mode. Adding limits such as input length and local-only access gives it fewer chances to guess.
Which programming language is best for vibe coding?
Python and JavaScript are the safe picks. In Stack Overflow’s 2026 survey, they were the languages developers used most with coding agents, at 39% and 38%. Our test app used Python. Builders like Bolt and v0 choose the stack for you, which is easier for beginners.
Can a second AI review the first AI’s code?
It can catch obvious mistakes, but it won’t replace testing. Both AIs can share the same blind spots. Veracode’s October 2026 report recommends independent security verification, meaning a scanner or a person. Bandit found our two settings. A second AI wouldn’t tell you what’s missing.
Will vibe coding replace programmers?
Not on current evidence. Stack Overflow’s 2026 survey found 52% of developers are still learning new coding skills, alongside 79% who want to upskill in AI. Someone still has to review the output, fix what breaks and own the result when it fails.
Is vibe coding the same as no-code?
No. No-code platforms give you fixed visual blocks inside the vendor’s system. Vibe coding generates real source code that you own and can move elsewhere. That freedom comes with a cost: if the AI writes a flaw, there’s no platform guardrail to catch it.
The bottom line
Vibe coding is describing an app and letting an AI write it. It’s a great way to turn an idea into a prototype today, and a poor way to ship AI-generated code you haven’t read.
Our lab showed the pattern. The AI handled the famous attacks and skipped the unasked-for basics, like limits and safe server settings.
Next step: write a five-line spec for something small and personal, build it in a chat-to-app tool, then run the five checks above.



