Move Exported ChatGPT Website Files to Another Host

Move Exported ChatGPT Website Files to Another Host

What this move involves

The move has six parts:

  1. Get the complete file tree of your ChatGPT Site, not only the page that you see.
  2. Test the files locally.
  3. Deploy them to a static host such as Cloudflare Pages, Netlify, or GitHub Pages.
  4. Test a preview.
  5. Set access.
  6. Only then, restrict or delete the original Site.

ChatGPT Sites page showing a published static website

The ChatGPT Sites page lists your Sites and their published addresses. Start here to pick the Site that you want to move.

A Site made of static files (HTML, CSS, JavaScript, images, fonts and downloads) can move to almost any static host. A static host is a service that serves plain files. A Site can also depend on a database, server functions, secret keys, or other services of the platform. Before such a Site can work on a different host, you must replace those parts.

The move creates a separate copy. It does not change or protect the URL of the original Site. You handle that URL at the end.

The OpenAI ChatGPT Sites help article covers publishing, sharing settings, custom domains, and the deletion of a Site. If you cannot find a download option for the files of your Site, ask ChatGPT for them. Ask in the conversation where you built the Site, as step 2 shows.

1. Make sure that the Site can move as static files

A simple static Site looks like this:

index.html
assets/
  styles.css
  app.js
  logo.webp
downloads/
  guide.pdf

If the Site does one of these things, pause before you continue:

  • It saves data between visits.
  • It signs users in.
  • It calls an API with a secret key.
  • It relies on another hosted service.

The static files can move, but you must rebuild the backend (the server part of the Site) or host it separately. A static host does not recreate the backend.

Before you copy anything, decide what must stay behind. Examples are API keys, private prompts, customer records, environment files, and local file paths.

2. Get the complete file tree from ChatGPT

Open the conversation where you built the Site. Paste this prompt:

Prepare a complete static export of this website as a ZIP file.

Requirements:
1. Include index.html and every HTML, CSS, JavaScript, image, font,
   document and data file the website uses.
2. Keep the folder structure and all relative paths.
3. Do not include secrets, API keys, private prompts, environment files,
   customer data or local computer paths.
4. List every file in the ZIP with its path.
5. Put index.html at the root of the ZIP.
6. Tell me whether the site uses a client-side router (one index.html
   serving several paths) or a separate HTML file per page.
7. List any feature that depends on a server, database, sign-in or
   platform service and will not work as static files.

Download the ZIP and extract it. Compare the file list from ChatGPT with the files that are actually in the folder. A homepage can look correct even when a secondary image, font, download, or route is missing.

Do not rebuild the Site from a copy of the rendered page in your browser. That copy misses generated assets, other routes, and files that load only after a user action.

3. Test the files locally

Serve the folder from a local web server, a program that serves files from your computer. Do not double-click index.html, because some scripts and paths work only over HTTP. Run these commands:

cd my-site
python3 -m http.server 8000

Open http://localhost:8000 and test these items:

  • The homepage and every navigation item
  • Images, fonts, buttons, forms and downloads
  • The browser console (no missing-file or script errors)
  • A phone-width window

Fix each problem that you find here. A host will not fix it for you.

4. Choose a host and handle routing

Host How to deploy the folder Client-side routing Access control
Cloudflare Pages Drag and drop the folder or ZIP in the dashboard, or npx wrangler pages deploy <folder> Works by default when there is no top-level 404.html Email codes or allowlists through Cloudflare Access
Netlify Drag the folder to Netlify Drop or a project’s Deploys page Add a _redirects rule Site password on paid plans
GitHub Pages Push the files to a repository and enable Pages No rewrite rules Public only on GitHub Free
Vercel Import a repository or deploy with the Vercel CLI Configure a rewrite Password Protection on Pro and Enterprise

Routing decides which file the host sends for each path. It is the setting that people most often get wrong. If the Site has a separate HTML file for each page (for example about/index.html), it works on every host without changes.

A client-side router is one index.html that handles /about, /pricing, and other paths. With a client-side router, the host must serve index.html for unknown paths. Cloudflare Pages does this automatically if the project has no top-level 404.html (how Pages serves files). On Netlify, add a file named _redirects at the root with the line /* /index.html 200 (Netlify rewrites). GitHub Pages has no rewrite rules. On GitHub Pages, a router needs hash-based URLs, where the path comes after a # sign.

The step-by-step guides for Netlify and GitHub Pages cover the deploy itself in more detail.

5. Deploy a preview and test it

Before you change a custom domain, deploy to the default address of the host (for example my-site.pages.dev or my-site.netlify.app).

Test the preview in a normal window and in a private window:

  • Open the homepage and every navigation item.
  • Reload a nested page directly, for example /about. A 404 here means that the routing setting is wrong.
  • Test buttons, forms, downloads and outbound links.
  • Test the layout at desktop and phone widths.
  • Open a few file URLs directly. Make sure that you did not upload private files.
  • Watch the browser console for missing assets.

6. Choose access, then go live

Before you share the new copy, decide who can see it:

  • Public access, for work that is for anyone.
  • A shared password, for a simple client gate. Use Netlify password protection (paid plans, Netlify docs) or Vercel Password Protection.
  • An email allowlist (a list of approved addresses) with one-time codes. Use it to let in only named people or one company. Put Cloudflare Access in front of Cloudflare Pages, with the One-time PIN login. Our Cloudflare Pages protection guide shows how to protect both the pages.dev address and a custom domain.

Before you send the link, test the gate in a private window. If the Site used a custom domain, wait until the preview passes every test. Then move the DNS records (the entries that point the domain to a host) to the new host. Test the domain again.

If the content changes later, deploy the updated folder to the same project. The address stays the same.

7. Restrict or delete the original Site

Do this only after the new copy passes every test:

  1. Open the original Site in ChatGPT. Open its Share settings.
  2. Under Who has access, choose the narrowest option, such as only yourself. If you do not need the Site anymore, use Delete site. Deletion is permanent.
  3. Open the old URL in a signed-out private window. Make sure that it does not show the content anymore.
  4. Update links, bookmarks, campaigns, and email signatures to the new URL.

Pages that were public can stay in search snippets or saved copies for some time. Our Google indexing check for ChatGPT Sites explains why you must remove sensitive material before anything is public. The guide to restricting access to a ChatGPT Site covers the sharing options in more depth.

Migration checklist

Before you call the move finished, make sure that:

  • index.html is at the root of the deployed folder.
  • The file list from ChatGPT matches the deployed files.
  • Relative links and assets work, also on nested pages that you load directly.
  • You did not upload secrets or private data.
  • The routing setting is correct for a client-side router.
  • The intended access gate appears before any content loads.
  • You restricted or deleted the old Site only after the new copy worked.
  • You kept a local copy of the last working version.

Free email addresses
for your AI agents

Each agent gets an address like myagent.x7k2@revdokumail.com. It can receive emails, send replies and store files.

  • 3 free mailboxes, each with its own address
  • 3,000 incoming and 500 sent emails a month
  • 3 GB of storage for attachments and files
  • Virus, malware, spam and prompt-injection filter
  • Read and reply through API, MCP or CLI
Create free mailbox

You do not need a card.

Frequently Asked Questions

What if ChatGPT cannot give me a ZIP file?

Ask ChatGPT to print each file in its own code block, with the full path above each block. Start with index.html. Save every block under that exact path in a new folder. Before you test the folder locally, compare it with the file list.

Share:
Markdown version

Related Articles

↧
Loading PDF…