GEMINI HOSTING
Gemini hosting: from Canvas to a link you own
Gemini Canvas previews the web page it wrote, and its documented export options go to Docs, Slides and Colab. There is no documented HTML download, so the route out is Copy code, save the file, upload it. That takes about a minute and the result is yours.
Free plan, free SSL, no credit card.
- 0
- build steps for a self-contained page
- 0
- documented HTML downloads out of Canvas
- 1
- free site with HTTPS, no card
- 25
- publishes a day, because you will ask for a change
What you are holding
What Gemini outputs
Code inside Canvas, with a preview beside it. Google's own Canvas documentation describes generating and previewing HTML and React code for web app prototypes, and asking for changes to see the preview update.
What that documentation does not describe is a way to download the result as an HTML file. The export options it names go to Google's own tools: Export to Docs, Export to Slides, and Export to Colab for Python. For code the documented action is Copy code. So the honest route out of Canvas is a copy and a paste into a text editor, which takes about a minute and produces a file you own outright rather than a preview that lives inside a chat.
Once that file exists the rest is ordinary. A self-contained HTML page publishes as it is. A React component saved as a .jsx file publishes without a build, transformed in the visitor browser using React and a JSX runtime served from our own edge. If the answer spanned several files or imported packages you would have to install, it is a project rather than a page, and it needs its build run first.
The fork
Which of the two paths you are on
The Canvas preview does not tell you this; the top of the code does. Read the imports.
One file, no build
A complete HTML page, or a React component that imports nothing but React. Either is a single file and a single upload.
- Save the HTML as
index.html. That name is what makes it the page the address serves. - Save a component as
.jsxor.tsxand upload it on its own. - Tailwind classes work on both paths; a Tailwind runtime is served from our own edge.
- The HTML tester renders pasted markup, which is a quick way to confirm the copy came out whole.
Several files, one build first
Canvas described a project, or the code imports from files and packages that are not in the block.
- 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 beyond React are not fetched from a public CDN for your visitors, so this path is not optional once they appear.
Step by step
Getting the code out of Gemini Canvas
Google documents Copy code as the action for code in Canvas, and its documented exports go to Docs, Slides and Colab. These steps use the copy route, because it is the one the documentation actually describes for web code.
-
Open the Canvas with your page in it
Canvas is where the code and its preview sit side by side. The preview is not a hosted page; it is a rendering inside the product.
-
Copy the code
Google documents opening More at the top of the Canvas panel and choosing Copy code. Share and export options live under Share & export at the top right, and go to Docs, Slides or Colab rather than to a file.
-
Paste it into a text editor and save as index.html
The file name is not cosmetic.
index.htmlis the file served at the root of the address; a page saved under any other name will not be the one visitors land on. -
Open the file locally to check the copy is whole
A copy that stopped short is the most common problem with this route, and it shows up immediately: the page opens half-rendered or the console reports an unclosed tag.
-
Upload it and pick a name
Drop the file here, choose the subdomain, and the page is live over HTTPS at an address that does not depend on a Gemini share link.
Canvas behaviour from Google's own documentation at support.google.com/gemini/answer/16047321, read 8 September 2026, which documents Copy code at the top of the Canvas panel, Share & export at the top right with Export to Docs and Export to Slides, Export to Colab for Python, and generating and previewing HTML and React web app prototypes. That article documents no direct HTML file download. Product interfaces can change.
Who it is for
The people who reach for this
-
People without a tech team
Canvas built the page and the preview is not a website. This is the step that makes it one.
-
Marketing teams
A prototype from a prompt, live at an address you can put in a document, not a share link into a chat product.
-
Educators
A small interactive tool built in Canvas, given to a class as a link that works without a Google account.
-
Designers
A generated concept opened on a real device at a real URL rather than inside a preview panel.
In detail
What you actually get
A page anyone can open, with no account
A Canvas share link is a link into a product. A published page is a page. That is the whole difference this step buys.
- HTTPS with a real certificate, issued and renewed for you.
- No sign-in required of your visitors, and nothing to install.
- The address stays the same across every republish.
- Custom domains from Pro, $15 a month.
One file is the whole upload
What you copied out of Canvas is what you publish. There is no archive to build and no configuration to write.
- A self-contained
.htmlpage publishes exactly as written. - A single
.jsxor.tsxis transformed in the visitor browser at the published address. - React, the JSX runtime and a Tailwind runtime come from our own edge.
- Other packages are not fetched for your visitors; the live page names what is missing rather than going blank.
Republish as many times as Canvas rewrites it
Canvas is built for iterating, and the address here is built to survive that without generating a new link each time.
- Up to 25 publishes a day on the free plan.
- From Pro, going back to the version that worked is one click.
- Expiring links from Starter, when the page is meant to be temporary.
- The swap is atomic, so a visitor never sees a half-published page.
Troubleshooting
What breaks, and why
Because the route out of Canvas is a copy rather than a download, the first failure below is specific to this tool and worth checking before anything else.
-
The published page is cut off halfway down
Why The copy did not take the whole document. This happens when text is selected by hand in the Canvas panel instead of using the documented Copy code action, and it is invisible until the page renders.
Fix Copy again with Copy code, then open the saved file locally before uploading. A page that ends mid-tag in your own browser will end mid-tag at the address too.
-
It looked right in the Canvas preview and is broken once published
Why The preview renders inside Google's own environment, which is not the same as a plain browser opening a plain file. Anything the preview supplied for the code, rather than the code supplying for itself, is missing once the file stands alone.
Fix Open the saved file directly in your browser before uploading. What you see there is what the published address will serve, with no environment around it.
-
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.
No card required
What the free plan includes
Turning a Canvas preview into a real address costs nothing, and the free plan is a plan rather than a trial with a countdown.
- 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.
Droply vs Static.app
How this compares with the other host built for AI output
Static.app has a Gemini page of its own. These rows come from what its published pricing and its own documentation state.
| Droply | Static.app | |
|---|---|---|
| A single file copied out of a chat | Dropped as it is, with nothing around it. | Must be zipped first, per its own Claude page. |
| A React component from a chat | Save as .jsx and upload; it runs at the published address. | Needs a self-contained HTML version first, per its own Claude page. |
| Import from a URL | Site import copies up to 40 pages and 600 assets from any site you point it at. | Import from URL takes claude.ai and claude.site links. |
| Expiring links | From Starter: six hours, a week, or a date you pick. | Not listed on any of its plans. |
| Loose .html file accepted | Yes, dropped on its own with nothing around it. | No. Its Claude page states a loose .html file is not accepted and must be zipped. |
| Single .jsx or .tsx without a build | Yes. It is transformed in the visitor browser at the published address. | No. Its Claude page says React-based artifacts need a self-contained HTML version first. |
| Free plan | 1 site, 25 MB storage, no card, and a plan rather than a trial. | A 7-day trial with no credit card, then paid. 1 site and 50 MB during it. |
| Security check on every publish | Every plan, free included: leaked keys, a stray .env, a committed .git folder. | 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
Canvas can describe an application as easily as it can write a page, and the two do not publish the same way.
- The prototype needs a login, a database or anything that runs on a server. Only the static half of it 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 a real build has to happen 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.