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.
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.
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
- 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.)
- 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.
- 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.
- Same error three times? Stop fixing and start rescuing — the project itself needs an inventory, not another patch: the rescue lane.