Why Is My AI Website Not Working? How To Find The Cause

Is your AI website not working once it's live? Find where it breaks, read the error the browser is hiding, and fix the causes behind most blank pages.
The OxyPages Team · · 9 min read
The reunion page looked perfect in Bolt. Class photo across the top, a countdown to the night, the venue map, an RSVP form, a gallery of old yearbook shots. You sent the link to the class group chat.
Then the replies started. "It's just a white page." "The RSVP button doesn't do anything." "I clicked Gallery, refreshed, and got a 404."
If you typed "AI website not working" into Google with the broken page open in another tab, the cause is almost never mysterious. AI-built pages break in a small number of ways, and the page usually tells you which one. It just tells you somewhere you haven't looked yet.
Don't rebuild anything yet. First, work out where it breaks, because that alone narrows it to two or three causes. Then read the error the browser is quietly logging. Then fix the one thing it names.
The worked example is a school reunion event page built with Bolt, because it hits most of the common failures in one go. If you're still at the building stage, the realistic guide to building a website with AI covers that part.
TL;DR: Check where it fails first: in the builder's preview, opened from your computer, or at the live address. Each points to different causes. Then open the browser console (F12, or Cmd+Option+J on a Mac in Chrome) and read the red lines, which name the missing file or the blocked script. Most broken AI-built pages come down to six causes: the wrong folder uploaded, file paths that only work in one place, a refresh on an app route, a form with nowhere to send, missing setup keys, or an old cached copy.
Where Is Your AI Website Not Working?
In one of three places: the builder's preview, a copy opened from your computer, or the live address, and each points to different causes. A page that fails in the builder is a code problem. A page that works in the builder and fails anywhere else is almost always a files-and-paths problem, and the code itself is fine.
| Where it fails | What you see | The usual cause | The fix |
|---|---|---|---|
| Opened from your computer | A blank white page | Browsers refuse to run modern scripts from a file on disk | Test it on a real address, not by double-clicking |
| Live address | A blank white page | The project folder was uploaded instead of the build output | Build, then upload only the output folder |
| Live address, in a subfolder | Blank, with 404s for script files | Paths starting with / point at the domain root, not your folder | Set the base path in the build config, or host at the root |
| Live address, after a refresh | 404 on any page except home | An app route has no real file behind it | A host that rewrites to index.html, or a hash router |
| Live address | Form sends nothing, or shows an error | The form posted to something that only existed in the builder | Point it at a form service that works on any host |
| Live address | Data sections empty, page half-loads | Setup keys stayed behind in the builder | Add the keys before you build |
| Only for you | An old version | Your browser cached the previous copy | Hard refresh or a private window |
The first row catches a lot of people. Double-clicking a built index.html usually gives a blank page even when nothing is wrong, because the browser won't run the page's scripts from a file on your disk. what breaks when you open a page from your own computer explains why. Test on a real address instead.
How Do You Read The Error The Page Is Hiding?

Open the browser console and look for red text. A blank page almost always has an error behind it, written in plain-ish English, and it names the file or the rule that failed.
- Open the broken page in Chrome, Edge or Firefox.
- Press F12, or right-click anywhere and choose Inspect. On a Mac in Chrome, Cmd+Option+J goes straight there.
- Click the Console tab.
- Refresh the page with the console open, so it catches errors from the start.
- Read the first red line. Later errors are usually knock-on effects of the first one.
Here's what the common ones mean, translated.
- "Failed to load resource: 404" with a file name. A file the page asked for isn't on the server. Check the name, the capital letters and the folder.
- "Failed to load module script" naming a
.tsxor.jsxfile. The project folder went up instead of the build. - "blocked by CORS policy" with a
file://address. It's not a bug in your page, it's the disk. Test on a real address. - "Mixed Content". Your secure page is loading something from a plain
http://address, and the browser refused it. Change the address tohttps://. - "supabaseUrl is required" or anything mentioning a missing key. The database connection has no settings. Bolt can keep the database address and key as Secrets in the project rather than in your files, and those may not come along with a download or a GitHub copy, so a build made elsewhere can go without them. Anything built into the page is public, so only the public key belongs there.
- "Uncaught TypeError" or "ReferenceError". A genuine code bug. Copy the whole line and paste it back to the AI tool that wrote the page.
The Network tab, next to Console, shows the same thing from another angle. Refresh with it open and any file in red is one the server couldn't find. MDN's introduction to the browser developer tools
Why Is The Live Page Blank?
Usually because the wrong folder went up. Bolt and most builder tools make a project, not a website, and the website only exists after a build step turns the project into plain files.
A Bolt project built with Vite writes its finished site into a folder called dist. The folder you downloaded has an index.html too, but it's a ten-line shell pointing at source files a browser can't run. Upload that and you get a white page with a 404 or a script error in the console.
The fix is to run the build, then upload the contents of dist.
The second cause is a subfolder: the root paths Vite writes, like /assets/index.js, point at the wrong place, so set the base path and rebuild, or host at the root. Vite's guide to the public base path
Why Does A Page Work Until Someone Refreshes It?

Because the page isn't really there. Builder tools often make a single-page app: one real index.html, with JavaScript drawing the Gallery and RSVP "pages" inside it as you click.
Clicking works, because no request reaches the server. Refreshing /gallery asks the server for a file called gallery, and there isn't one, so you get a 404.
Some hosts fix this for you by sending every unknown address back to index.html. Netlify does it with a one-line redirects file, and Cloudflare Pages does it by default when there's no 404.html. OxyPages does it once you switch on Single-Page App Mode in the site's Settings: any address with no matching file and no file extension gets index.html, while a missing image or script still returns a 404. why a built app 404s on refresh and which hosts rewrite around it has the full comparison.
For a reunion page I'd ask for one long page with sections every time. Nobody needs a separate address for the gallery.
Why Does The RSVP Form Do Nothing?
Because it has nowhere to send. In the builder, the form may have posted to a function or database the builder set up, and moving the files doesn't bring that along.
To confirm it, open the Network tab and press submit. A red request to the builder's address, a 404 or 405, or no request at all each means the form has no working destination. A missing-key error in the console means the database settings stayed behind.
Fixing it means pointing the form somewhere that works on any host: a form service such as Formspree, Web3Forms or Basin, which gives you an address for the form's action and emails you each RSVP.
Walkthrough: A School Reunion Page Built With Bolt
Here's the reunion page from the top of this post, worked through in order. Three complaints from the group chat usually turn out to be three separate causes.
- Check where it fails. Fine in Bolt's preview, blank at the live address. That points at files, not code.
- Open the console. Say the first red line starts "Failed to load module script" and names
/src/main.tsx. The live page is asking for a source file, so the project folder went up instead of the build. - Rebuild and re-upload. Run the build in Bolt, download, upload only what's inside
dist. The page appears. - Refresh on the Gallery page. A 404 here means the app uses routes for Gallery and RSVP, and your host doesn't rewrite unknown paths.
- Ask Bolt for one change: "Turn the Gallery and RSVP routes into sections on the home page, with the nav linking to each section." One build later, nothing left to refresh into.
- Test the form. If you built outside Bolt, on your computer or on a host connected to GitHub, a missing database setting in the console means the settings didn't come along. Add them and rebuild.
- Send a test RSVP from a phone, then check it arrived.
Most of these show up in the console within a minute. The form is the exception: only a real submission tests it.
When Is It Not Your Page At All?
When it's your browser's cache, a new domain's DNS, an unpublished site, or the other person's network. Rule these out before you change anything.
- Your browser's cache. You're seeing yesterday's version. Hard refresh with Ctrl+F5 on Windows, Cmd+Shift+R in Chrome on a Mac or Option+Cmd+R in Safari, or try a private window.
- A new custom domain. If the site loads on the host's own address but not on yours, it's DNS, and new records can take hours to settle.
- An unpublished or paused site. Check your host's dashboard says live, not draft.
- The other person's network. Some workplace and school networks block new or unfamiliar addresses. Ask them to try on mobile data.
What To Do Next
Don't touch the code until you've done steps 1 and 2 of the walkthrough. Then:
- Fix the one cause the console names.
- Upload again and hard refresh.
- Test on a phone on mobile data.
- Click every link, refresh an inner page, and submit the form once.
If the page needs a server to run, a static host is the wrong home for it and no upload will fix that. If it's a built folder of plain files, upload it and get a live link in about a minute. A reunion page is personal, so a free account keeps it online with no card needed. Free holds 25 MB, which is plenty once the yearbook photos are resized.
When an AI-built page breaks, the fix is rarely a new prompt. It's usually one file in the wrong place, and the console already knows which.
FAQ
Why Does My Site Work In The Bolt Preview But Not Online?
The preview runs your project inside Bolt, with its build step, its database connections and its settings all in place. Online, only the files you uploaded exist. Usually the wrong folder went up, setup keys stayed behind, or the host doesn't handle app routes. The browser console usually tells you which within a minute.
What Is The Browser Console?
The console is a panel built into every desktop browser that lists what went wrong while a page loaded: missing files, blocked scripts and code errors. It's hidden by default because visitors never need it. Press F12 to open it, and the red lines are the ones that matter.
Should I Just Ask The AI To Fix It?
Yes, but give it the error, not a description. "It's broken" gets you a rewrite of code that was fine. Pasting the exact first red line from the console, plus where it fails, gets you a fix for the actual problem.
Can A Static Host Run Everything Bolt Builds?
No. A static host serves finished files and runs no server code. A Bolt project that builds to plain HTML, CSS and JavaScript works anywhere. One that relies on server functions or Node code needs a host that runs it, or Bolt's own hosting.