# ChatGPT hosting: turn the page it wrote into a real link

ChatGPT usually answers with one self-contained HTML file. That is the easiest thing there is to publish: save it as index.html, drop it here, and it is live over HTTPS in seconds. No build, no ZIP, no account on anything else.

## What ChatGPT outputs

A block of code in the conversation, and in the common case that block is one complete HTML page with its CSS and JavaScript written inline. A browser can already render it, which means publishing it is a copy rather than a conversion.

The second most common shape is a React component: a function, some JSX, probably Tailwind classes. That normally needs a build, because browsers do not understand JSX. Here it does not. Save it as a .jsx or .tsx file and upload it on its own, and it is transformed in the visitor browser using React and a JSX runtime served from our own edge. Nothing is installed and nothing you upload runs on our servers.

The third shape is the one to watch for. If the answer spans several files, or the code imports from ./components/Header or from a package you have never installed, it is a project rather than a page, and it needs its build run before any static host can serve it. The framework deploy guides name the command and output folder for 23 frameworks, and the difference is worth checking before you upload rather than after.

## Which of the two paths you are on

Read the top of the code block. Imports decide this, and they decide it in about three seconds.

### One file, no build

The usual case for a chat answer. Everything the page needs is in the block on screen.

- Save the HTML as index.html and upload it. That file name is what makes it the page people land on.
- A React component with no imports beyond React: save it as .jsx and upload that instead.
- Tailwind classes are fine on both paths; a Tailwind runtime is served from our own edge.
- Want to see it render first? The HTML tester takes pasted markup directly.

### Several files, one build first

The answer described a project, or the code imports from other files you would have to create.

- Create the project locally, install what it imports, and run its build.
- Upload the folder the build produced, as a folder or zipped.
- Guides for 23 frameworks, each naming the command and the folder.
- Packages other than React are not fetched from a public CDN for your visitors, so this path is not optional when they appear.

## Getting the code out of ChatGPT

Nothing here needs an export feature. The reliable route is the one that has always worked: copy the block, save it as a file, upload the file.

1. **Copy the code block.** Use the copy control on the block rather than selecting the text by hand, which tends to collect the surrounding prose along with it.
2. **Or download it from canvas.** When the code is in a canvas rather than a chat message, use the Download button in the top-right corner. A code canvas detects the language and saves the file with that language's extension, so an HTML canvas comes out as a .html file with nothing else to do.
3. **Save it as index.html.** Any text editor does this. The name matters: index.html is the file served at the root of the address, so a page named anything else will not be the one visitors see first.
4. **Check it opens locally.** Double-click the file. If it looks right in your own browser with no server running, it is self-contained and it will look right published.
5. **Upload it and pick a name.** Drop the file here, choose the subdomain, and the page is live over HTTPS. Re-upload later and the address does not change.

Source: Canvas behaviour from OpenAI's own help centre, read 8 September 2026: its canvas article states that the Download button is in the top-right corner of the canvas and that a code canvas detects the language and exports it with the appropriate file extension, and its article on writing and code blocks states that code is placed in a block you can read, copy, edit, preview or run. The help centre refuses automated requests, so those articles were read through their published text rather than fetched directly; a human re-checking them should open them in a browser. Menu labels can change.

## What breaks, and why

Chat-written pages fail in a small number of ways, and the first two below account for most of them.

### The page is live but completely unstyled

Why: The markup references style.css or ./assets/app.js, files that existed in the conversation's imagination and nowhere else. You uploaded the HTML on its own, so those requests 404.

Fix: Either ask for a single self-contained file with the CSS and JavaScript inline, or create the referenced files and upload the whole folder so the relative paths resolve.

### Nothing loads, and the file is called page.html or code.html

Why: The file served at the root of an address is index.html. A single file with another name is published, but nobody visiting the address will be shown it.

Fix: Rename the file to index.html and upload again. Same site, same address, one publish.

### Every route except the home page returns a 404

Why: The app routes in the browser, so /about exists only once JavaScript has run. A static host asked for /about looks for a file at that path, does not find one, and answers 404 before your code loads.

Fix: Turn on the Single-page app switch in the site settings. Unknown paths are then served the root index.html and the client router takes over. Free on every plan, applied without a redeploy, and off by default because a multi-page site wants real 404s.

### The API keys the tool wrote into the code are now public

Why: AI tools fill in the value they can see, and a key in front-end code is readable by anyone who opens the page. No host can fix that: a published page is public by definition.

Fix: The deploy-time security check names the key it found. Rotate it, then move the call behind something that can hold a secret. Every plan, free included, and it never blocks the publish.

## What the free plan includes

Publishing a page from a chat costs nothing, which is the right price for something you may replace in ten minutes.

- 1 live site on a real free plan, not a trial of a paid one, with HTTPS and no card to start.
- Up to 25 MB per upload and 25 MB of storage across the account.
- 5,000 visits and 5 GB of traffic a month.
- Up to 25 publishes a day, which is the number that matters when you are regenerating.
- The Single-page app switch, so a client-routed build works without paying for anything.
- The deploy-time security check, which warns about a stray .env file, a .git folder, a private key or an API key left in your JavaScript.
- A small Droply badge in the corner of the page. Removing it starts on Starter.
- Free sites are served noindex, so search engines do not list them. Search visibility starts on Starter.

## How this compares with the other host built for AI output

Static.app has a ChatGPT page of its own, and its documentation states its own constraints clearly, which makes this table checkable rather than rhetorical.

- **A single file from a chat.** Droply: Dropped as it is, with nothing around it. Static.app: Must be zipped first, per its own Claude page.
- **A React component from a chat.** Droply: Save as .jsx and upload; it runs at the published address. Static.app: Needs a self-contained HTML version first, per its own Claude page.
- **Expiring links.** Droply: From Starter: six hours, a week, or a date you pick. Static.app: Not listed on any of its plans.
- **Password protection.** Droply: From Starter, enforced at the edge. Static.app: Not listed on any of its plans.
- **Loose .html file accepted.** Droply: Yes, dropped on its own with nothing around it. Static.app: No. Its Claude page states a loose .html file is not accepted and must be zipped.
- **Single .jsx or .tsx without a build.** Droply: Yes. It is transformed in the visitor browser at the published address. Static.app: No. Its Claude page says React-based artifacts need a self-contained HTML version first.
- **Free plan.** Droply: 1 site, 25 MB storage, no card, and a plan rather than a trial. Static.app: A 7-day trial with no credit card, then paid. 1 site and 50 MB during it.
- **Security check on every publish.** Droply: Every plan, free included: leaked keys, a stray .env, a committed .git folder. Static.app: Not offered.

Static.app figures checked 8 September 2026 on its own pricing page (free tier: 1 site, 50 MB, a 7-day trial with no credit card; Starter $5 a month or $60 a year for 2 sites and 500 MB with a custom domain; Medium $10; Large $15) and on its Claude hosting page, which states that a loose .html file is not accepted and must be zipped, that React-based artifacts need an extra step because you have to ask the model for a self-contained HTML version, and that Import from URL takes claude.ai and claude.site links. Product plans can change.

## When Droply is the wrong choice

A chat will happily describe an application, and describing one is not the same as producing something a file host can serve.

- The answer includes a server, an API route or a database schema. Only the static half can be published here.
- The code imports packages you would have to install. They are not fetched from a public CDN for your visitors, so this needs a real build first.
- The generated app has a database, a login screen or server actions. Those need a runtime; only the static half of it can be published here.
- You want a build to run here, on upload or on every push. There is no build step and no Git integration: you build locally and bring the output.
- You are running WordPress or another PHP application. A static export of it can be hosted here, but the application itself cannot.

## Frequently asked questions

### How do I publish HTML that ChatGPT wrote?

Copy the code block, save it as index.html, and upload the file. It is live over HTTPS in seconds. There is no build step and no archive to make.

### Can I paste the code instead of uploading a file?

The upload takes a file, so save the markup first; any text editor does it in a few seconds. If you want to see how it renders before committing to it, the HTML tester takes pasted code directly.

### What if ChatGPT gave me a React component?

Save it as a .jsx or .tsx file and upload that. It is transformed in the visitor browser at the published address, with React and a JSX runtime served from our own edge. No build and no npm install.

### Why does my page have no styling?

The markup is referring to a CSS file that does not exist alongside it. Either ask for one self-contained file with the styles inline, or create the referenced files and upload the whole folder.

### Does the file have to be called index.html?

For a single file, yes, if you want it served at the address itself. Any other name is published but is not the page a visitor sees when they open the link.

### What about packages the code imports?

React and the JSX runtime are provided. Anything else is not fetched from a public CDN on your visitors' behalf, because that would run third-party code in their browser and leak their IP address to it. The live page names what is missing, and the fix is to build the project locally.

### Can the published page call an API?

Only one that already exists somewhere else and allows requests from a browser under its own CORS rules. There is no server here and nothing you upload is executed on our infrastructure.

### Is there a key in my page I should worry about?

Possibly, and the deploy-time security check will name it. Chat-written code is where hard-coded keys appear most often, and anything in front-end code is readable by whoever opens the page.

## Other AI tools

- [Gemini hosting](https://droply.host/gemini-hosting)
- [v0 hosting](https://droply.host/v0-hosting)
- [Codex hosting](https://droply.host/codex-hosting)