Ta strona nie jest jeszcze przetłumaczona, więc wyświetla się po angielsku.

How to deploy an HTML, CSS, and JavaScript site for free

Quick answer

A site made of HTML, CSS, and JavaScript files is static: no server code runs, so a static host serves it free. Without Git, drop the folder on Convika's upload box, Netlify Drop, Cloudflare Pages, or Vercel Drop. With a repository, GitHub Pages and Cloudflare Pages publish it on every push. The hosts differ in whether they need an account, Git, and an index.html.

Deploy my folder for free

Free plan: no credit card, 1 published page, 1 custom subdomain.

On this page

You have three files, index.html, style.css, and script.js, from a course, your editor, or ChatGPT, and you want them live at a link without paying. That takes no server of your own. Five hosts do it free, and they differ in what they ask of you first: an account, a Git repository, or a file named index.html.

Each host's row below comes from that host's own docs and pricing page, read on November 15, 2026. Where a page doesn't state something, this guide says the host doesn't say. We didn't deploy a site to the other four hosts for this guide, so a button on yours may read differently.

To see your own files online first, drop the folder into the upload box at the top of this page. It gives a preview link without an account.

What "deploy" means for three files

To deploy a site is to copy its files to a computer that answers web requests, so a link opens them. A site of HTML, CSS, and JavaScript files is static: the browser does all the work, and the host only hands over files. Nothing has to be built, installed, or kept running.

That is why it can be free. Cloudflare's docs say "Cloudflare supports deploying any static HTML website to Cloudflare Pages", and for a site with no framework, "If you do not need a build step, leave the Build command field blank." GitHub's docs say "GitHub Pages publishes any static files that you push to your repository."

Two things change the answer. A project with a package.json (React, Vite, Next.js) needs a build first, and you deploy the folder the build makes. And a page whose JavaScript needs a server of its own needs more than a static host. Both are covered below.

Free hosts for HTML, CSS, and JS compared

HostAccount neededGit neededTakes a dropped folderYour own domain, freeWhat the free tier limits
ConvikaNone for a preview link that lasts 3 minutes; a free account to publishNoYes: a folder or .zip, combined into one page of up to 2 MB1 subdomain, such as www1 published page, 10,000 page views a month, a small Convika bar on the page
Netlify Drop"no account required" to drop; the link "is protected with a temporary password until you claim it"No: "No Git repository is needed"Yes: a "project folder or zip file"Yes: "Custom domains with SSL" on FreeA "300 credit limit / month"; a production deploy costs 15 credits, and all projects pause when the credits run out
GitHub PagesA GitHub account; on GitHub Free "the repository must be public"A repository, which you can fill in the browser without Git commandsInto a repository: "drag and drop the file or folder", up to 25 MiB per fileYes: a subdomain or an apex domainA site "no larger than 1 GB", "a soft bandwidth limit of 100 GB per month", and no online business or store
Cloudflare PagesA Cloudflare account. Cloudflare Drop needs none, and you "Claim the deployment within 60 minutes to keep it"No, with Direct Upload; yes, for a deploy on every pushYes: "A zip file or single folder of assets", up to 1,000 files of 25 MiB eachYes: 100 per project20,000 files per site, 500 builds a month, 100 projects per account
Vercel DropNone for a static site; the deployment "is temporary" until you claim it with a free accountNoYes: "a file, folder, or .zip"Yes: 50 per project on HobbyHobby is for "personal or non-commercial use"; without an account, each file up to 100 MB and a drop up to 1 GB

Vercel doesn't say how long an unclaimed drop stays up: "the success page shows a countdown until it expires." Netlify's quickstart doesn't say how long you have to claim a drop either. Cloudflare's docs don't say how long a Pages site stays up, and GitHub's don't for a Pages site. Free HTML hosting compared adds 6 more hosts and compares forms, stats, and badges.

Deploy the folder without Git in 4 steps

Convika takes a folder, a .zip, one .html or .htm file, or pasted code. In your browser, the upload box finds index.html and puts the CSS, JavaScript, images, and fonts it names inside that one file, up to 2 MB in all. The result is one page at one link. Convika runs no server code.

1. Drop the folder

Drop the folder that holds index.html, style.css, and script.js into the upload box at the top of this page, or drop a .zip of it. If the HTML names a file that isn't in the folder, the box lists it. If the folder holds other pages, the box lists them as left out: one link shows one page.

Click Get my preview link. You get a link in seconds, without an account. It works for 3 minutes, with scripts and forms off, so it's for checking the layout and the styles.

3. Keep the page

Click Keep this page — free, no card and sign up. The page moves into your account, and its JavaScript runs in the dashboard preview.

4. Publish it

Click Publish page. Under Who can open this page?, choose Public and click Next. The first time, click Publish free: the page goes live at an address like yourpage.convika.page, with a small Convika bar at the bottom. Under it, Publish without the Convika bar opens an order for Pro monthly ($12 a month). On Free, the page is Public: anyone with the link can open it, and it may show up in search results and in Convika's gallery.

The same drop on the other hosts

  • Netlify Drop. Netlify's quickstart: "Drag and drop your project folder or zip file to the Netlify Drop zone and get a live URL in seconds", at app.netlify.com/drop. The address ends in netlify.app. Dropped without signing in, the link has a temporary password until you claim it by logging in or signing up. How to use Netlify Drop walks through it.
  • Cloudflare Pages. In the Cloudflare dashboard, go to Workers & Pages, select Create application > Get started > Drag and drop your files, name the project, drop the folder, and select Save and Deploy. The site is served from <PROJECT_NAME>.pages.dev. Cloudflare warns: "If you choose Direct Upload, you cannot switch to Git integration later."
  • Vercel Drop. Go to vercel.com/drop and "Drag and drop a file, folder, or .zip onto the page". Signed in, you choose a team and a project name and select Deploy. Without an account, "Vercel deploys your site right away and gives you a live URL", and you select Claim Project before the countdown ends.

Not a fit for Convika: a site with several pages, or one too big for a single 2 MB file. Use Netlify, Cloudflare Pages, or GitHub Pages for those.

Deploy from a GitHub repository

A repository suits a site you keep changing: each push publishes the new version.

GitHub Pages, from GitHub's docs:

  1. Create a repository. On GitHub Free it has to be public. A repository named <user>.github.io becomes your user site.
  2. Add the files. Above the file list, select Add file, click Upload files, and "drag and drop the file or folder". Commit the changes.
  3. Under the repository name, click Settings, then Pages in the sidebar.
  4. Under Build and deployment, under Source, select Deploy from a branch, then pick the branch and the folder: the root (/) or /docs.
  5. Click Visit site. GitHub says "it can take up to 10 minutes for changes to your site to publish after you push the changes to GitHub."

GitHub's limits page says Pages is "not intended for or allowed to be used as a free web-hosting service to run your online business, e-commerce site, or any other website that is primarily directed at either facilitating commercial transactions or providing commercial software as a service (SaaS)."

Cloudflare Pages, from Cloudflare's docs:

  1. In the Cloudflare dashboard, go to Workers & Pages and select Create application > Pages > Connect to Git.
  2. Select GitHub or GitLab and the repository. "Both private and public repositories are supported."
  3. With no framework, leave Build command blank. Cloudflare's static HTML guide recommends exit 0 as the build command if you want Pages Functions later. Set the build output directory to the folder that holds your files.
  4. Select Save and Deploy. You get a *.pages.dev address, and Pages deploys again on each push.

Vercel deploys from a repository too: its Git docs say setup "is only a matter of clicking the "New Project" button on the top right of your dashboard and following the steps", after which it deploys "on every branch push and merges onto the production branch". Netlify's quickstart for Drop doesn't cover its Git deploys, and we didn't read that page for this guide.

Relative paths and the index.html name

Most "it works on my computer, but the deployed page has no styling" problems are one of these two.

The home page is index.html. Each host looks for that name at the top of what you upload:

  • GitHub: "GitHub Pages will look for an index.html, index.md, or README.md file as the entry file for your site", and with a branch as the source, "the entry file must be at the top level of the source folder".
  • Cloudflare Pages: "If you are getting 404 errors when visiting your *.pages.dev domain, make sure your website has a top-level file for index.html."
  • Netlify: "You may need to add an empty index.html file in your project folder to get your site to show up as expected."
  • Vercel Drop: "For a static site with no index.html at the top of your folder, Vercel asks which page people should see first".
  • Convika's upload box uses index.html, or without one, the first .html file it finds. A folder with no .html file gets the message "The folder has no .html file. Drop the folder with the page's index.html in it."

So drop or push the folder that holds index.html, not the folder above it.

Paths are relative to the HTML file. <link rel="stylesheet" href="style.css"> finds style.css beside the page wherever the page lives. Two kinds of path break after a deploy:

  • A path into your computer, such as C:\Users\you\site\style.css or file:///Users/you/site/style.css. No visitor has that disk. Use style.css or css/style.css.
  • A path that starts with a slash, such as /style.css. It means the top of the domain. A GitHub Pages project site lives one folder down, at https://<user>.github.io/<repository>/, so /style.css asks for a file above your site and gets a 404. Write style.css or ./style.css.

A file left out of the upload fails the same way. Why an HTML file opens without its images and styling covers the cause and the fix for each case.

When the JavaScript calls an API or needs a server

A static host runs your JavaScript in the visitor's browser. Three cases need more than that.

  • A call to someone else's API. fetch("https://api.example.com/...") from the browser works on a static host when that API allows requests from your page's address. Convika is stricter: a published page's scripts can't send requests to other sites, so a page that loads live data from an API needs one of the other four hosts.
  • A secret key. Everything in script.js is public: a visitor reads it with View Source. An API key that must stay secret can't live there. It belongs in code that runs on a server.
  • Server code. GitHub's docs: "GitHub Pages does not support server-side languages such as PHP, Ruby, or Python." Convika runs none either. Cloudflare Pages has Pages Functions, though "Drag and drop deployments made from the Cloudflare dashboard do not currently support compiling a functions folder of Pages Functions." Vercel's Hobby plan includes function invocations, and signing in to Vercel Drop lets you "deploy framework projects, which Vercel detects and builds for you."

A form is the common case. A static page can show a form, but something has to receive what people type. On Convika, Add a form to my page in the dashboard adds a form that keeps entries; Free shows 50 a month. A landing page form without a backend compares the options.

Frequently asked questions

How do I deploy an HTML, CSS, and JS website for free?

Upload the folder to a static host. Without Git: drop the folder on Convika's upload box, Netlify Drop, Cloudflare Pages, or Vercel Drop, and you get a link. With a repository: push the files to GitHub and turn on GitHub Pages under Settings, then Pages. Each is free for a small site; the limits differ per host.

Can I host a simple HTML page for free?

Yes. One HTML file or a small folder is free on Convika, Netlify, GitHub Pages, Cloudflare Pages, and Vercel's Hobby plan. Convika Free publishes 1 page with 10,000 page views a month. GitHub Pages isn't for running an online business, and Vercel Hobby is for "personal or non-commercial use".

Do I need Git to deploy a website?

No. Netlify Drop, Cloudflare Pages' Direct Upload, Vercel Drop, and Convika's upload box each take a folder dragged into the browser. GitHub Pages needs a repository, but you can upload the files to it in the browser with Add file, then Upload files. Git helps once you change the site often: each push deploys the new version.

Do I need an account to deploy an HTML file?

Not for a first look. Netlify Drop, Cloudflare Drop, Vercel Drop, and Convika's upload box each give a link before you sign up. Each of those links is temporary or locked: Netlify's has a temporary password until you claim it, Cloudflare's lasts if you claim it within 60 minutes, Vercel's expires at the end of a countdown, and Convika's works for 3 minutes. A link that stays needs a free account on every host here.

Why does my deployed site show no CSS?

The page can't find style.css. Check 3 things: the file was uploaded with the page, the href is a relative path such as style.css and not a path on your computer, and the path doesn't start with / on a GitHub Pages project site, where the site lives under /<repository>/. Open the browser's developer tools and look for a 404 next to the file's name.

Can I deploy a site with more than one page?

Yes. GitHub Pages serves each file "in the same directory structure as your publishing source", and Vercel "serves each file at its own path". Netlify and Cloudflare Pages take the whole folder too. Convika publishes one page per link, so for a folder with several pages it publishes index.html and lists the others as left out.

Is GitHub Pages free?

Yes, for public repositories on GitHub Free. GitHub's docs give a site limit of 1 GB, a soft bandwidth limit of 100 GB a month, and a soft limit of 10 builds an hour. It doesn't support server-side languages, and it isn't allowed as free hosting for an online business or store.

Sources

Each page was read on November 15, 2026.

Next step

How to password protect an HTML page or website

A JavaScript password script leaves the password in the page source. To password protect an HTML page or link, encrypt the file or let a server check it.

Related articles

More ways to send your page

Skipbox

Cheap & fast GitHub Actions runners, unlimited for $39 a month

Your own machine keeps Docker layers and package caches between jobs. Switch by changing one runs-on line.

Start a free Skipbox trial⁠

Skipbox is made by the team behind Convika.

Share this article

Put your HTML, CSS, and JS online from one drop

Drop the folder with index.html, style.css, and script.js. Convika puts the files inside one page and publishes it at a lasting link.

Deploy my folder for free

Free plan: no credit card, 1 published page, 1 custom subdomain.