A personal site can be three files and a domain

Personal websites accumulate frameworks out of boredom. If your goal is a public presence—bio, links, a short projects list—HTML is enough. You do not need a component library, a design system, or a build pipeline to tell people who you are. StaticHost will host that HTML with HTTPS, an optional custom domain, and rollback when you over-design at 1 a.m. and regret it by breakfast.

The product boundaries are deliberate. There is no forever-free plan after a short trial of about a day; Starter is $9/mo for 1 site and 2 GB. There is no email product, no cPanel, no built-in CDN product, and no remote build farm. nginx serves files strictly with try_files $uri $uri/ =404, which is fine when every page is a real file you authored. If a path does not exist on disk, visitors get 404—not a silent fallback to index.html.

That strictness is a feature for personal sites. You control every URL. You are not fighting a client router, a plugin ecosystem, or a theme marketplace. The artifact you upload is the site people see.

A minimal durable structure

Start with a folder that would still make sense in five years:

personal/
  index.html
  projects.html
  styles.css
  avatar.jpg

index.html sketch:

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1" />
  <title>Jordan Lee</title>
  <meta name="description" content="Jordan Lee — developer, writer, coffee burner." />
  <link rel="stylesheet" href="styles.css" />
</head>
<body>
  <header>
    <img src="avatar.jpg" alt="" width="96" height="96" />
    <h1>Jordan Lee</h1>
    <p>Developer · writer · coffee burner</p>
  </header>
  <nav>
    <a href="index.html">Home</a>
    <a href="projects.html">Projects</a>
  </nav>
  <main>
    <p>I ship small websites and occasionally useful tools.</p>
  </main>
</body>
</html>

Keep CSS restrained. Personality beats Bootstrap clones. Prefer system fonts or one self-hosted family over a stack of webfonts that delay first paint. A personal site that loads in under a second on a phone says more about craft than a hero video ever will—see lightweight high-performance static hosting.

Worked example: from empty folder to shareable preview

Assume you are on a laptop with zip available and a StaticHost account (trial or Starter).

  1. Create personal/index.html, projects.html, and styles.css as above.
  2. Put a square avatar at personal/avatar.jpg (keep it under ~100 KB; crop before upload).
  3. From inside the folder, pack only the site root:
cd personal
zip -r ../personal.zip index.html projects.html styles.css avatar.jpg
unzip -l ../personal.zip
  1. Confirm the listing shows index.html at the archive root—not personal/index.html. Nested roots are the most common first-deploy failure; details in zip a static site without 404.
  2. Create a site in StaticHost, upload personal.zip, and open the HTTPS preview URL. TLS is available on preview immediately; you do not wait on DNS for that first look.
  3. Click Home → Projects → Home. View source and confirm relative CSS loads. Fix locally, re-zip, redeploy if anything is off.
  4. When the preview is something you would put in a bio link, attach a custom domain. Follow HTML website with custom domain and static hosting with a custom domain. Certificate issuance happens after DNS verifies—not before.

If you hotlinked an old HTTP asset, fix mixed content before cutover—static hosting with free SSL.

Growth without rewrites

Add pages as files: uses.html, now.html, or a blog/ folder of static posts with one HTML file each. Relative links keep the site portable. Generators can appear later (Eleventy, Hugo); you can still start hand-written and migrate content into Markdown when the page count becomes annoying.

Avoid turning the personal site into a history-mode SPA unless you enjoy hash routes. On StaticHost, unknown paths 404; there is no SPA index fallback. If you later want a React toy on a subdomain, read host a single-page application first and isolate it from the brochure pages.

When not to use a hand-HTML personal site

  • You need a CMS login for a non-technical co-author every week → static HTML will frustrate them; pick a CMS host or a generator plus your own build habit.
  • You need server-rendered member areas on the same origin → wrong product shape; StaticHost is files only.
  • You want $0 forever with no trial clock → use a forever-free host; StaticHost is paid after ~1 day—compare honestly in free vs paid static hosting.
  • Your “personal site” is actually a full commerce catalog → use a commerce platform.

Related personal shapes

Maintenance rhythm

Edit locally → zip → deploy → peek preview → roll back if needed. Optional Git for your own history—git deploy a static site with HTML committed directly. StaticHost will not compile Markdown or run npm; if the repo is pure HTML, that is fine. If the repo is source-only for a generator, build elsewhere and publish the output tree.

Plans if the personal brand expands into multiple properties: Pro $30/mo (3 sites, 10 GB, staging), Scale $65 (10 sites, 30 GB), Business $130 (30 sites, 100 GB, teams). Most people never leave Starter.

Failure table (personal HTML)

SymptomLikely causeFix
Preview shows directory noise or 404 on /Zip nested an extra folderRe-zip so index.html is at archive root
CSS missing on custom domain onlyAbsolute URLs pointing at preview hostUse relative href/src; redeploy
Deep link to /projects 404sYou linked a path without .html and no projects/index.htmlLink projects.html or use a projects/index.html directory
Mixed content warningshttp:// image or font URLsSelf-host assets over HTTPS
Site “stuck” after redesignBrowser cache or an old service worker from a past experimentHard refresh; unregister SW if you added one

FAQ

Do I need JavaScript?

No. Add small progressive enhancements later if you want.

Can I use a free Google Site instead?

Yes, with different tradeoffs. StaticHost gives you ordinary files and a normal host/domain relationship after the trial or paid plan.

How do I add a contact form?

Use a third-party form endpoint, or a mailto: link if you accept spam tradeoffs. StaticHost does not process form posts or host mailboxes.

Should I blog on WordPress?

Only if you want WordPress. That needs a PHP host. Static blog generators stay on StaticHost after you build locally.

Is $9/mo worth it for a personal site?

If you want paid predictability, HTTPS, rollback, and a clear upgrade path, yes. If you need $0 forever, choose a forever-free host and accept their limits—free vs paid static hosting.