A Google Sites Alternative For Custom HTML

Google Sites has no HTML upload button, only embeds inside a frame. What it really allows, checked October 2026, plus a Google Sites alternative for your file.
The OxyPages Team · · 9 min read
Someone told you to put your page on Google Sites. So you opened it, clicked Insert, and went hunting for the button that takes your index.html.
There isn't one.
That is not a setting you missed or a tier you pay for. Google Sites is a builder, not a host. You get a fixed set of blocks, and the only door for your own code is Embed, which puts your markup in a frame on their page.
None of which makes it bad. For an internal team page, a school club roster or a notice board for people already signed into Google, it is free, genuinely easy, and I would not talk you out of it.
It is the wrong tool when you already have the HTML. I run a static host, so weigh this accordingly. Here is where the wall is, checked against Google's help pages and three live published sites on 11 October 2026, then a Google Sites alternative for each reason you would leave.
TL;DR: You cannot upload an HTML file to Google Sites. The Insert panel takes .jpg, .png and .gif images plus Drive files, and your own code only arrives through Embed, which runs it in a sandboxed, fixed-height iframe with no access to the page's real URL. There is no meta description field and no redirect control: the three published Google Sites I fetched on 11 October 2026 served no description meta tag, and every one carried a Google Sites link and a Report abuse button. Custom domains are free but need a subdomain like www. Cloudflare Pages, Netlify and GitHub Pages take the file itself for nothing.
For the whole field rather than this one swap, a static hosting comparison organised by what you already have covers eleven hosts. This post assumes somebody pointed you at Google Sites specifically.
Can You Upload An HTML File To Google Sites?
No. There is no HTML file upload anywhere in Google Sites, on any account type, free or paid.
Google's own help page for adding content lists what the Insert panel accepts: Docs, Slides, Sheets, Forms and Charts, YouTube, Calendar, Maps, Google Groups, image files from your computer as .jpg, .png or .gif, and files from Drive. Checked 11 October 2026. Markup is not on that list, and no plan adds it.
Putting the file in Drive first does not help: Drive stores HTML as a code file and previews it as text. what happened to the Google Drive hosting trick has that story.
One warning about old guides. If an article mentions the HTML Box, gadgets or unlimited subpage nesting, it is describing classic Google Sites. Google began switching off editing for the remaining classic sites on 30 January 2023 and converted the leftovers into new Sites drafts, so those instructions map onto nothing you can click.
That leaves two options: rebuild the page out of their blocks, retyping your content and accepting their look, or paste your code into an embed.
What The Embed Option Actually Does

Embed gives you two choices and only one involves your code. "By URL" puts another web page in a window on yours. "Embed code" takes HTML, CSS and JavaScript directly, and Google's help page states the rules: JavaScript has to be inside <script> tags and CSS inside <style> tags.
Your code does run. It just does not run on your page.
Your Code Lives In A Frame, Not On The Page
I read the markup of a published Google Sites page on its own custom domain on 11 October 2026. The custom code block arrives as an iframe labelled "Custom embed", with scrolling="no" and this sandbox list:
<iframe sandbox="allow-scripts allow-popups allow-forms allow-same-origin
allow-popups-to-escape-sandbox allow-downloads
allow-storage-access-by-user-activation" scrolling="no" title="Custom embed">
A sandbox attribute strips every capability from a frame and hands back only the ones listed. MDN on the iframe sandbox attribute Read it for what is missing: allow-top-navigation is not there, so nothing in your embed can change the address of the page it sits on.
Three consequences, in the order people hit them:
- Your script cannot see the page. It reads the frame's own address, so anything keyed to the path, a query string or a referrer gets the wrong answer.
- The box does not grow. You set a pixel height in the editor and that is the height. With
scrolling="no", taller content is cut off on a phone. - Nothing sticks, floats or overlays. A cookie banner, a chat bubble or a full-width hero cannot escape the frame. The only pinned elements on a Google Site are Google's own bars.
What You Control, And What Google Keeps
The honest division of labour. The SEO rows are the ones that surprise people.
| What you control | Google Sites | A plain static host |
|---|---|---|
Upload an .html file | No, not on any plan | Yes, the whole product |
| Your own CSS across the page | Only inside an embed frame | Yes |
The <title> tag | Derived from page and site names | Yours to write |
| A meta description | No field exists | Yours to write |
| A 301 redirect | No control at all | A config file or a dashboard field |
| Favicon and logo | Yes, Settings then Brand images | Yes |
| Google Analytics | Yes, a property ID field | Yes, or any script |
| Branding Google adds | A Sites link and Report abuse | None |
| Injected ads | None | None |
| Pages per site | 10,000, per Google's own limits | As many files as the plan holds |
| Site search finds text in your code | No, the embed is a closed window | Not applicable |
Checked 11 October 2026. I verified the meta description row by hand rather than trusting a forum post: three published Google Sites on their own custom domains all returned og:title, og:type, og:url and og:image, and not one carried a description meta tag. The <title> in each case was simply the site name.
Under publish settings you can ask Google to keep the whole site out of search, with a checkbox worded "Request public search engines to not display my site". Google's help page adds that this is a request and no guarantee, and there is no per-page equivalent.
Size is never the problem here. Control is.
Your Own Domain, And The Footer You Cannot Remove
Custom domains are free on Google Sites, which is better than several paid builders manage, and they come with conditions worth knowing before you buy anything.
Per Google's Sites help page on custom domains, checked 11 October 2026: the address has to include a subdomain like www, only the owner of a site can connect a domain, and the site must be shared with the world for published viewers. You verify ownership through Search Console, add a CNAME record at your registrar, and changes can take up to 48 hours.
The naked domain is what catches people. A bare example.com with no www is not something Sites will serve, so you arrange a redirect at the registrar instead. how to connect a domain to a website walks the general version, which is the same twenty minutes on any host.
Then the footer. On all three live sites I checked, every published page carried a link labelled "Google Sites" pointing at sites.google.com/new, plus a "Report abuse" button, both still there on their own domains. The abuse widget even exposed the underlying sites.google.com/view/... address, because a custom domain here is an alias in front of a Google-hosted page, not a page of your own.
For a team wiki, who cares. On a page asking a stranger for money, Google's footer on your domain is a different conversation.
Who Should Stay With Google Sites

Stay, and skip the rest of this, if any of these is true:
- Your readers already sign into Google. On Workspace you can publish so that only named people can view the live site, an option Google announced on 29 January 2018 for all G Suite editions. Nothing else gives you that gate for free. On a personal account the choices are only restricted or public.
- You have no files yet. If the page does not exist, a builder beats a host every time.
- Someone non-technical inherits it. Editing a Google Site is editing a Doc. That is a real handover, not a shared password.
- The content is Google documents. Live Docs, Sheets and Forms, embedded natively and updating themselves, is what Sites does better than anybody.
- Free with a custom domain is the whole requirement and a
wwwsubdomain suits you.
If you want a builder but the blocks feel rigid, Carrd is a fairer comparison than any static host. It has no HTML import either, and it gives you more design control over one page. Google Sites wins on price and sharing. Carrd wins on looks.
A Google Sites Alternative, Chosen By What You Are Holding
Pick by the file on your desk, not by the feature list.
| Tool | Builder or host | Takes your HTML file | Free custom domain | Best when |
|---|---|---|---|---|
| Google Sites | Builder | No, embeds only | Yes, on a subdomain | Readers already sign into Google |
| Carrd | Builder | No, embeds only | Paid tiers only | One page, no files, design matters |
| Cloudflare Pages | Host | Yes, a folder or zip | Yes | Free and permanent |
| Netlify | Host | Yes, Netlify Drop | Yes | You need a link in a minute |
| GitHub Pages | Host | Yes, by commit | Yes | Docs or open source |
| OxyPages | Host | Yes, folder, zip or paste | Paid plans, see the plan page | Editing it later without a redeploy |
Checked October 2026 against each vendor's own pages. Cloudflare Pages if the page must sit at one address for years and cost nothing, Netlify if you want the URL before an account, GitHub Pages if it already lives in a public repository.
And our own wall, since I am asking you to trust that table. OxyPages does not run PHP, does not run a build step, and is not a builder. If you have no files yet and want to click blocks together, Google Sites or Carrd is the better answer.
The one thing that never travels with your files is the contact form, because a form needs something on a server to catch it. Google Sites embeds a Google Form, which works and looks like a Google Form. On a static host you wire it to the host's own handler, which on ours means a data-oxy-form="contact" attribute on the form tag. the general mechanism for forms on a static site covers the rest.
What To Do Next
Twenty minutes, in this order.
- Look in your folder. An
index.htmlplus a stylesheet and some images means you have a site already, and rebuilding it in a block editor throws that work away. - Decide whether anyone outside your organisation has to read it. If not, Google Sites is the shortest path and you can stop here.
- If yes, buy the domain first. It is the piece that is yours and it works on every host in the table.
- Upload the whole folder, not the one file, so your CSS and images resolve where they expect. how to host an HTML file and get a link is the four-step version.
- Open the result on your phone and look at the footer. That tells you whose page you just published.
Drag your folder in and see what each plan includes takes about as long as rebuilding one section by hand.
Google Sites is a good product being asked to do a job it was never built for. The Google Sites alternative you want is just a host that accepts the file you already wrote.
FAQ
Can I Add Custom HTML To Google Sites?
Yes, through Embed, but it lands in a sandboxed iframe rather than on the page. Google's help page says JavaScript must be in <script> tags and CSS in <style> tags, and the frame I inspected on 11 October 2026 had no allow-top-navigation permission. Your code runs, cannot read the real page URL, and sits in a fixed-height box.
Does Google Sites Support A Custom Domain For Free?
Yes, with conditions. Google's help page states the address must include a subdomain like www, only the site's owner can connect it, and the site must be published publicly. You verify ownership in Search Console and add a CNAME at your registrar.
Can I Add A Meta Description To A Google Sites Page?
No, there is no field for one. Three published Google Sites I fetched on 11 October 2026 served Open Graph tags and a <title> taken from the site name, and no description meta tag. You can ask search engines to skip the whole site, which Google calls a request rather than a guarantee.
Do I Need A Google Sites Alternative, Or Just An Embed?
Just an embed, if the custom code is one widget on an otherwise ordinary page: a booking box, a chart, a map. Move when the code is the page, when the frame cuts your layout off, when you need a meta description or a redirect, or when Google's footer sits on your own domain.