The word, the practice, the limit

What vibe coding is, and what it is not

Vibe coding means describing software in plain language and letting a model write the code, accepting that you will not read every line. It is neither magic nor a fad: it is a way of working that does very well on some things and not at all on others.

Definition

Vibe coding is a development practice where you describe in plain language what the software should do, a model produces the code, and you judge the result by using it rather than by reading it. You correct by describing again, not by editing lines.

If you have never opened an editor

Syntax gets out of the way. You write "a website for a law practice in Bristol, with fees and an enquiry form", and pages appear. You will not know why a file is named the way it is, and that is not a problem as long as the result works.

If you will read the files

Routing, the schema, empty states and CI move faster. You throw away the scaffolding you did not need and keep the base. What is still missing is the business logic that exists only at your company, and that is exactly where your time is worth something.

Where the term came from

The term was used publicly by Andrej Karpathy, OpenAI co-founder and former head of AI at Tesla, in February 2025. He described a way of programming where you let the dialogue with the model carry you, accept the code it proposes without reading it line by line, and correct by asking again rather than by editing.

The word was picked up within weeks, first with enthusiasm and then with mockery, which happens to every term that describes something well. Its original definition already carried the nuance both camps forgot: Karpathy described it for throwaway projects, not for production software.

That distinction still matters: describing software to a model is for exploring, not for shipping. Confusing the two produces exactly the results that feed the mockery.

What it genuinely does today

Three uses hold up, and they share one thing: the cost of a mistake is low and the feedback is immediate.

Exploring an idea before committing to it

Building three versions of a flow in a morning to see which one holds, then throwing two away. The code does not need to last, because it exists to settle a question.

Producing a base you will take over

Routing, the data schema, authentication, empty states and deployment configuration are the same in every project. Generating them takes an hour instead of a week, and a developer then takes over the part that matters.

Building things nobody would ever have requested

An internal tool for six people, a campaign page, a tracking board. These real needs never cleared the priority bar of a technical team, and they stayed in spreadsheets.

The three walls

Three limits come up every time, and none of them is solved by writing a better prompt. Knowing them saves you from discovering the problem three weeks in.

Invisible debt

Generated code works, so nothing signals that it is badly organised. Business logic ends up in a display component, a rule is duplicated in three places, a field name stops meaning anything. Nothing breaks, until the day you have to change something and every change breaks something else.

Critical systems

A proprietary bank payment, a regulated health record, a calculation a compliance obligation rests on: these need a person who understands every line and answers for it. That is not a question of model capability, it is a question of accountability.

The review you do not do

This is the most honest wall, because it is about the user rather than the tool. This way of working assumes you accept not reading everything. On a throwaway project that is a gain. On something that will live two years, it is deferred debt somebody will pay.

Writing a prompt that produces usable code

The difference between a usable result and one you throw away rarely comes down to the model. It comes down to four writing habits.

Describe what the user does, not what the code should be. A prompt about components and structure produces what you would have written yourself, only worse. A prompt describing a flow lets the model organise the code.

Weak example
Make a React component with a useState for the list and a useEffect to load the data
Solid example
An order tracking area. The customer sees their orders from the last twelve months, filterable by status: processing, shipped, delivered. Each row shows the number, the date, the amount and the status. Clicking a row opens the detail and the delivery tracking. If they have no orders, a line invites them to browse the catalogue.

Give the edge cases up front

What happens when the list is empty, when loading fails, when there are two thousand rows, when the text is too long. Those are three quarters of the corrections you would make afterwards, and they cost one sentence each.

One thing at a time

A prompt asking for five changes produces five approximations. A prompt asking for one produces a clean result, and you can roll back if it is wrong.

Name what comes from your company

Your statuses, your roles, your units, your domain vocabulary. A model invents generic names, and those names set into the schema. Fixing them later costs far more than giving them at the start.

Vibe coding and no-code are different things

Both remove the typing of code, but not in the same way, and what you are left with at the end is not the same object.

Describing to a model or assembling blocks
Described codeNo-code
What you handlesentencesblocks in an editor
What is producedsource codea proprietary configuration
What you take awayexportable filesnothing readable outside the tool
The ceilingthe complexity of the domainwhatever the editor anticipated
Who can take it overany developera specialist in that tool

The practical difference comes down to one question: the day you leave the tool, do you leave with something. With code, yes. With a proprietary configuration, no.

Frequently asked questions

Who coined the term?

Andrej Karpathy used it publicly in February 2025, describing a way of programming where you accept the proposed code without reading it line by line. His original definition was aimed at throwaway projects, not production software.

Do you get real code out of it?

Yes, ordinary source files any developer can open. That is the main difference from no-code, which produces a proprietary configuration unreadable outside its own tool.

Do I need to know how to code?

No to get a result, yes to judge its quality. Someone who does not read code can publish a site or an internal tool. What they cannot see is whether the logic sits in the right place, and that gets paid for later.

Is it sustainable for a serious product?

For the base, yes. For the business logic of something that will live for years, not without review. The good practice is to treat every generation as an external contribution: dedicated branch, review, tests, then merge.

What is the most common beginner mistake?

Asking for five things in one prompt. The model produces five approximations and you no longer know what broke what. One request per exchange, with the ability to roll back, is much faster overall.

Is generated code secure?

It applies common practices, but it does not replace an audit. On anything touching money, personal data or authentication to external systems, have it read by someone who does that for a living.

How is it different from an assistant in an editor?

A matter of degree. An assistant completes as you type and you read every suggestion. The practice described here assumes you will not read, and judges by using. Most developers do both in the same day.

Is Eqlo vibe coding?

Partly. You describe and Eqlo builds, but the AI does not improvise the code of each site: it writes a structured description that a compiler turns into pages, checking the same quality rules every time. The GitHub button, on every plan, sends that description and a complete Next.js project to your repository.

Describe the product, keep the files

Free to start, no card needed. The GitHub button sends the project to your own repository, on every plan.