Web design tutorials and tools since 2014Privacy
Search 108 articles

Blog

How to Host a Website: 4 Ways, From One HTML File to a Full App

Hosting a website means putting its files on a computer that is always online and pointing a domain name at it. How you do that depends almost entirely on what you have: a single HTML file, a folder of pages, a JavaScript app that needs a build step, or a WordPress site. This guide gives the cheapest working route for each, step by step, plus how to connect your own domain.

Prices and limits below come from each provider’s own pricing and documentation pages, checked on November 11, 2026.

The Short Answer

What you haveEasiest routeCost
One HTML file, or a folder of HTML, CSS and imagesStatic host with drag and drop: Netlify Drop, Cloudflare Pages, Static.appFree to about $5/mo
Code in a Git repositoryGitHub Pages, Cloudflare Pages or Netlify, deploying on every pushFree
A React, Vue, Svelte or Next.js appVercel, Netlify or CloudflareFree for hobby projects, about $20/mo for business
WordPress or another PHP siteShared or managed WordPress hostingAbout $2–11/mo shared, $35/mo managed
Anything, with full controlA VPS you manage yourselfAbout $4–7/mo plus your time

If you just want a site online today and it is plain HTML, use Option 1. Most people with a portfolio, landing page or small business site never need more.

What Hosting Actually Is

Four pieces work together every time someone opens your site:

  • Files. Your pages: HTML, CSS, JavaScript and images. A static site is only files. WordPress also needs PHP and a database to build pages on request.
  • Server. A computer that stores the files and sends them to visitors over HTTPS. A host runs the server for you, or you rent one and run it yourself.
  • Domain. The name people type, such as example.com. You rent it yearly from a registrar.
  • DNS. The records that tell browsers which server answers for your domain. You set them at your registrar or DNS provider.
Request flow: a visitor types your domain, DNS records point to the host, the server answers over HTTPS, and your files are sent back
Every visit goes from the domain through DNS to the server and back with your files.

Not sure whether your site counts as static? If you can open index.html on your computer and the site works, it is static. Our guide to the basics of HTML explains how those files fit together.

Option 1: A Static Host (Upload a Folder or ZIP)

Static hosts serve your files from a global network, add HTTPS automatically, and have nothing for you to update or patch. This is the cheapest and fastest option for any site made of HTML, CSS and JavaScript, including sites exported from Figma or written by an AI tool.

Fastest: Netlify Drop (no account needed)

  1. Put your site in one folder with index.html at the top level.
  2. Open app.netlify.com/drop and drag the folder, a ZIP or a single HTML file onto the page.
  3. You get a live netlify.app link in seconds. Without an account the site is protected by a temporary password; sign up or log in to claim it and make it public.
Netlify Drop page with the headline Drag and drop to publish instantly and a drop area for a folder, ZIP or HTML file
Netlify Drop publishes a folder, ZIP or single HTML file without Git.

Netlify’s free plan gives 300 credits a month. A production deploy costs 15 credits and bandwidth 20 credits per GB, so it suits small sites. If you run out, your projects pause until the next month. Pro costs $20 a month for the whole team.

Free with generous limits: Cloudflare Pages

  1. Create a free Cloudflare account and open Workers & Pages in the dashboard.
  2. Create a Pages project and choose direct upload.
  3. Drag in your folder or ZIP. Uploads in the dashboard can hold up to 1,000 files of up to 25 MiB each; larger sites deploy with the Wrangler command-line tool (up to 20,000 files) or from Git.
Cloudflare Pages product page with the headline Build and deploy full-stack applications instantly
Cloudflare Pages serves static files free, with no bandwidth charge.

Requests for static files are free and unlimited, and the free plan includes 500 builds a month. Cloudflare now recommends Workers for new full-stack projects, but Pages is still the simplest way to put a folder of files online.

Free from a repository: GitHub Pages

  1. Push your files to a GitHub repository.
  2. In the repository’s Settings, open Pages and choose the branch and folder to publish.
  3. Your site appears at username.github.io/repository, and every push updates it.
GitHub Pages documentation with Quickstart and Overview buttons and articles about custom domains and Jekyll
GitHub Pages publishes straight from a repository.

Sites can be up to 1 GB with a soft limit of 100 GB of bandwidth a month. GitHub does not allow Pages to be used to run an online business, e-commerce site or SaaS, so it is best for portfolios, docs and personal projects.

Paid, with no Git or command line: Static.app

Static.app is built for people who just want to upload a ZIP and get a site. You drag in an archive, connect a domain, and replace files from the dashboard or a desktop app that publishes a local folder on every save. Plans start at $5 a month on the pricing page, after a 7-day trial with no card required. There is no ongoing free plan. Our guide to publishing a Claude-generated website walks through it.

Static.app homepage with the headline One-click hosting solution for your static website and a drag and drop upload box
Static.app hosts a ZIP upload on your own domain.

For a side-by-side comparison of these and other hosts, see our guide to the best static hosting for HTML websites.

Option 2: A Platform for Front-End Apps

If your project needs a build step (React, Vue, Svelte, Astro or Next.js), use a host that builds it for you. Connect the Git repository, set the build command (for example npm run build) and the output folder (dist or build), and every push deploys a new version, with a preview link for each branch.

  • Vercel: the natural home for Next.js. The Hobby plan is free for personal, non-commercial use. Commercial projects need Pro at $20 per developer seat a month. You can also deploy any folder by running vercel in it.
  • Netlify and Cloudflare: both build and deploy front-end frameworks from Git on the free plans above.
Vercel homepage with the headline Agentic Infrastructure and Deploy now and Talk to sales buttons
Vercel builds and hosts front-end frameworks from Git.

If an AI tool built your app, our guide on where to host Claude apps covers the same choice for generated projects.

Option 3: Shared or Managed Hosting for WordPress and PHP

WordPress, and anything else written in PHP, needs a server that runs code and a database. Static hosts cannot do that.

  • Shared hosting puts many sites on one server and is the cheapest way to run WordPress. Hostinger’s Premium plan, for example, is $1.99 a month, but only on a 48-month term paid upfront ($95.52), and it renews at $10.99 a month. Always compare the renewal price, not the first-term price.
  • Managed WordPress hosting handles updates, backups, caching and security for you. Entry plans at Kinsta and WP Engine cost about $35 a month for one site.
Hostinger WordPress hosting page advertising managed hosting for WordPress with a Claim deal button
Shared hosting is cheap upfront; check the renewal price.

Setup is similar everywhere: buy the plan, use the one-click WordPress installer in the control panel, then point your domain at the host. If your WordPress site has become mostly static content, you can also export it to HTML and move to Option 1, which is what this site did.

Option 4: Self-Hosting on a VPS

A virtual private server (VPS) is a small Linux machine you rent by the month. You install a web server such as nginx or Caddy, upload your files, and you are responsible for updates, security and backups. In return you get full control and very low prices.

  • DigitalOcean Droplets start at $4 a month for 1 vCPU, 512 MiB of RAM and 10 GiB of storage.
  • Hetzner Cloud starts at about €5.49 a month (excluding VAT) for 1 vCPU, 1 GB of RAM, 20 GB of storage and 20 TB of traffic in its EU locations.
DigitalOcean Droplets page with the headline Virtual machines for every use case
DigitalOcean Droplets are one of the cheapest ways to rent a server.
Hetzner Cloud page with the headline Affordable Cloud Hosting Services and a Create cloud instance button
Hetzner Cloud offers low-cost servers in Europe and the US.

How This Site Deploys to Its Own Server

Web Designer Hut is a static site on a server we manage. The pages live in a Git repository. When a change is merged into the main branch, a CI job copies the files to the server with rsync over SSH, so the live site always matches the repository. The whole pipeline is a few lines:

deploy:
  image: alpine:3.20
  rules:
    - if: $CI_COMMIT_BRANCH == "master"
  before_script:
    - apk add --no-cache openssh-client rsync
    # SSH key and known_hosts come from protected CI variables
  script:
    - rsync -rlz --delete src/ "$DEPLOY_USER@$DEPLOY_HOST:$DEPLOY_PATH"

--delete removes files on the server that no longer exist in the repository, and the SSH key is stored as a protected CI variable rather than in the code. The same idea works with GitHub Actions and any VPS. If you would rather not run a server, Options 1 to 3 do all of this for you.

Connecting Your Domain

Every host gives you a free address such as yoursite.netlify.app. To use your own name:

  1. Buy the domain. A .com usually costs around $10–20 a year. Cloudflare Registrar sells domains at the registry price with no markup; other registrars often discount the first year and charge more on renewal.
  2. Add the domain in your host’s dashboard. The host tells you which DNS records to create.
  3. Create the DNS records at your registrar or DNS provider. For example:
    • GitHub Pages: four A records for the root domain pointing to 185.199.108.153, 185.199.109.153, 185.199.110.153 and 185.199.111.153, and a CNAME for www pointing to username.github.io.
    • Netlify: an ALIAS, ANAME or flattened CNAME for the root domain pointing to apex-loadbalancer.netlify.com (or an A record to 75.2.60.5 if your DNS provider cannot do that), and a CNAME for www pointing to your netlify.app address.
  4. Wait for DNS and HTTPS. Changes usually show up within minutes to a few hours. The host then issues a free SSL certificate automatically.
Cloudflare Registrar page with the headline Start your next idea with a domain name and a domain search box
Cloudflare Registrar sells domains at cost.

Most hosts get their certificates from Let’s Encrypt, a nonprofit certificate authority. Its certificates are valid for 90 days today, moving to 64 days in February 2027 and 45 days in February 2028, so let your host renew them automatically rather than doing it by hand. On a VPS, tools like Certbot or Caddy handle renewal for you.

Let’s Encrypt homepage with the headline Encryption for Everybody
Let’s Encrypt issues the free certificates most hosts use.

Once your site is live, add an uptime monitor so you know if it goes down. Our uptime calculator shows what a 99.9% target really allows, and the best uptime monitoring tools guide covers free options.

FAQ

Can I host a website for free?

Yes, if it is a static site. Cloudflare Pages, GitHub Pages and Netlify all have free plans with HTTPS and custom domains. You only pay for the domain name. GitHub Pages and Vercel’s free plan are not meant for commercial sites, so check the terms before you launch a business site.

How much does it cost to host a website?

A static site can cost nothing beyond a domain at around $10–20 a year. Shared WordPress hosting runs about $2–11 a month depending on the term, managed WordPress about $35 a month, and a self-managed VPS about $4–7 a month.

How long does it take to put a website online?

Uploading a folder to a static host takes a minute or two. Connecting a custom domain adds DNS time, usually minutes to a few hours. Setting up a VPS from scratch takes an hour or more if you have done it before.

Can I host a website on my own computer?

Technically yes, but your computer would have to stay on and reachable from the internet all the time, and many home internet connections block incoming traffic or change their IP address. A free static host or a $4 VPS is more reliable and safer.

Do I need a domain name to host a website?

No. Every host gives you a free subdomain such as yoursite.pages.dev or username.github.io. A custom domain looks more professional and stays yours if you change hosts. If you are comparing simple upload hosts, our list of Tiiny Host alternatives covers more options.