Something broke? Start here.

Error first aid:
plain English first, one bounded fix second.

The error message might as well be in another language — that’s normal, and it’s the exact moment most beginner projects die. Paste the error below. This page gives it a first read in plain English — what it means, what probably caused it — and assembles the one prompt to hand your AI: explain it plainly, propose the smallest fix and nothing else, snapshot first, and tell you how to check it worked. No panic-fixing, no “try these nine things.” One bounded fix.

1Paste the error2Read it in plain English3Copy the fix prompt4Paste it into your AI

1 · Paste the error

The whole thing, word for word — the messy stack of lines under the main message too. Half an error is half a diagnosis.

No error text at all — the page is just blank or the thing silently doesn’t work? Scroll to “The silent failure” in the dictionary below; it tells you where the real message is hiding.

2 · The first read

Paste an error above and the first read appears here. It’s a pattern match over the dictionary below — a starting point for you and your AI, never a verdict. Your AI still has to confirm the cause against your actual project.

3 · The one bounded fix prompt

This prompt is the whole method in one paste: snapshot first, explain before fixing, the smallest change and nothing else, and a check you can run yourself afterwards. It updates live as you type above.

Something in my project is broken. Work under these rules — do not skip step 0. 0. SNAPSHOT. Before anything changes, I will make a restorable copy of the project as it is right now (a zip of the folder, a git commit, or — in a cloud builder — a confirmed History restore point AND an export of the code). Wait for me to say it's done before you touch anything. 1. EXPLAIN. Tell me in plain words what this error means and the most likely cause. No jargon without a translation. If you need more information to be sure, name exactly what you need — do not guess quietly. 2. ONE BOUNDED FIX. Propose the smallest change that addresses that cause: this exact change and nothing else. No refactoring, no renaming, no tidying other parts, no “improvements”. If the fix needs more than one change, list them in order and we do them one at a time. 3. CHECK. After the fix, tell me exactly how to verify it worked — the clicks, the page, the command — and what I should see. Also name the one thing most likely to have been affected by the change, so I can check that too. What I was doing when it appeared: (not filled in) What changed right before it: (not filled in) The error, word for word: --- (no error text — the failure is silent; help me find where the real message is reported first) ---

Everything on this page runs in your browser — the match, the assembly, all of it. Nothing you paste here is sent anywhere or stored by this site. The AI work happens where you paste the prompt: your AI, your project.

The dictionary — the errors beginners actually meet

Every entry the matcher above uses, printed in full. Read yours even if you came for a different one — recognizing the shape next time is most of the skill.

The service rejected your key itself

Means: Your app showed its ID badge to a service (an AI, a maps service, a payment tool) and the service said “never heard of it.” The connection worked — the key didn't.

Usually: A wrong key pasted (an extra space counts), a key for the wrong service or the wrong project, or a key that was revoked or never activated.

The browser blocked the request on purpose (CORS)

Means: Your page tried to fetch something from another address, and the browser refused — deliberately. Browsers only let a page call addresses that have agreed to hear from it. This is a seatbelt firing, not a crash.

Usually: The other service hasn't allowed your site's address — or the address is wrong in a way that makes it a stranger. The fix usually lives in the other service's settings or in routing the call through your own server, not in the page.

A file or package the code expects isn't there

Means: The code asked for something by name — a file, or a library it uses — and it isn't where the code is looking. The app stopped before it even started.

Usually: The file was never created, was renamed, sits in a different folder than the code expects, or the library was never installed (an “install” step got skipped). AI builds hit this when one chat creates a file and a later chat assumes a different name.

The code used a name that doesn't exist there

Means: Somewhere, the code says “use the thing called X” — and in that spot, there is no X. Like calling a person's name in a room they're not in.

Usually: A typo, a piece that was renamed or deleted while another piece still uses the old name, or the file that defines it didn't load. In AI-built projects: one part was edited and its partner wasn't told.

The code reached for something that wasn't there yet

Means: The code tried to read a detail off a thing that turned out to be empty — nothing arrived, so there's nothing to read a detail from.

Usually: Data that hadn't loaded yet, a step earlier in the chain that quietly failed, or a thing that only exists sometimes (a logged-in user, a search result) being read as if it always exists.

The code tried to run something that isn't runnable

Means: The code called a name as if it were an action, but that name holds data, or nothing, or a different kind of thing. (The generic label for this whole family is TypeError — the name existed, the kind was wrong.)

Usually: A wrong name, a library whose shape changed between versions, or data arriving in a different shape than the code expected.

The code itself has a typo-level break

Means: The computer couldn't even read the code as code — a bracket, quote, or comma is missing or extra, so the whole file is unreadable, like a sentence with a torn page.

Usually: A paste that got cut off mid-block, an edit that dropped one character, or two pieces of code merged with a seam in the wrong place. The reported line number is where reading failed, which is often just AFTER the real break.

The page the server drew and the page the browser expected disagree

Means: On modern sites the page is drawn twice — once by the server, once by the browser — and the two drawings must match. Yours didn't, so the browser complained (and sometimes shows a flash or a reset).

Usually: Something that renders differently in the two places: today's date, a random number, a time, or code that uses browser-only things (like window size) while drawing.

Something is calling itself, forever

Means: A piece of code triggers itself, which triggers itself, which triggers itself — until the computer gives up and reports this. Nothing is “full”; it's a loop with no exit.

Usually: A function that calls itself without a stopping condition, or two pieces that keep updating each other back and forth.

Too many calls, too fast (rate limit)

Means: A service counted your app's calls and said “slow down.” Often temporary. Sometimes it's the free tier's ceiling announcing itself.

Usually: Something calling in a loop or on every refresh, several visitors at once, or a genuine ceiling on the plan. If it appeared during AI fixing sessions, suspect a retry loop — and remember retries inside a metered tool can burn credits.

The door is locked: not signed in, or not allowed

Means: The app asked a server for something and the server said no — either “who are you?” (401) or “I know who you are, and no” (403). The request arrived; permission didn't.

Usually: A login that expired, a missing or wrong key, or data rules that (correctly or not) say this user can't see this thing. If it started right after you tightened sharing rules, it may be the rules working — on the wrong person.

The request never arrived

Means: Your app called out and got silence — not a “no”, just nothing. The other end didn't answer at all.

Usually: The server isn't running (or crashed), the address or port is wrong, the site is offline, or you're offline. In local projects, “the other terminal window got closed” is a classic.

That address doesn't exist (404)

Means: Something — a page, a picture, a file, a data endpoint — was asked for at an address where it doesn't live. The server answered fine; the thing just isn't there.

Usually: A typo'd or moved address, a file that didn't get published with the rest, or a link to a page that was renamed.

That door number is already taken

Means: Your app tried to start listening on a numbered “port” on your computer, and something is already listening there. Programs are polite about many things; this isn't one.

Usually: Almost always: the same app already running — an earlier start in another terminal window that never got stopped.

The computer doesn't know that tool's name

Means: You (or a script) asked the computer to run a tool by name, and the computer has never heard of it. The project may be fine; the toolbox is missing a tool.

Usually: The tool isn't installed, was installed for a different terminal, or the name is misspelled. Following a tutorial written for a different system (Mac steps on Windows, say) lands here a lot.

The system refused to touch that file

Means: A program tried to open, write, or delete a file and the operating system said no. Not a code bug — a locked door at the filing-cabinet level.

Usually: The file is open in another program, the folder belongs to another account or the system, or the project lives somewhere protected (like a system folder).

A setting the app expects wasn't provided

Means: The app went looking for a setting — usually a key or an address kept outside the code, in “environment variables” — and found an empty hook where it should hang.

Usually: The settings file (often named .env) is missing the line, or the hosting site's settings page never got the value. AI builds hit this when the code was written on a machine that had the setting and moved to one that doesn't.

The silent failure — a blank page and NO error

Means: No message doesn't mean no error — it means the error is being reported somewhere you haven't looked. For a web page, that's the browser's console: right-click the blank page → Inspect → Console tab. The red text there is your error; paste THAT here.

Usually: Most often one of the errors in this dictionary happening where nobody was watching — which is why the fix starts with finding the message, not guessing.

The rules that keep a fix from becoming the next error

  1. Snapshot before the fix. A copy of the project as it is now — broken beats broken-and-different. (In a cloud builder: History restore point confirmed, code exported. And the two warnings: reverting doesn’t refund credits, and reverting code doesn’t undo database changes.)
  2. One fix, one cause. If the AI proposes five changes for one error, it’s guessing in five directions. The bounded prompt makes it pick the most likely cause and the smallest change — wrong is fine, diagnosable is the point.
  3. The fix isn’t done when the error vanishes. It’s done when the check in the prompt passes — the thing you were doing works again, and the one neighbouring thing the prompt named still works too.
  4. Same error three times? Stop fixing and start rescuing — the project itself needs an inventory, not another patch: the rescue lane.