OxyPages

What Is A Static Website? A Plain-English Guide

What Is A Static Website? A Plain-English Guide

A static website is a set of files built before anyone visits. Here is how one works, what it can never do, and how to tell whether yours is one already.

The OxyPages Team · · 14 min read

Somebody has told you that what you have is a static website, and it did not sound like a compliment.

Or an AI handed you a folder of files, a tutorial told you to look for static hosting, and you would quite like to know what you just agreed to before you agree to it.

Static is a bad name for the thing it describes. It sounds like a page that cannot move, cannot respond, cannot do anything. That is not what it means at all. Sites you use every week are built this way and you would never guess: video, animation, dropdown menus, a calculator that updates as you type. All fine.

The word describes where the work happens, not what the page looks like. On a site like this, the pages are finished before anybody visits. The server does no thinking. It hands over files that already exist.

That single difference decides what your site can do, what it costs, what can be hacked, and how you go about changing a phone number on it.

Here is the whole thing in plain English, limits included.

TL;DR: A static website is a set of files that were built before anyone visited, and the server sends them to every visitor unchanged. Nothing of yours runs on the server. That makes it fast, cheap and hard to attack, and it makes some things impossible: logins, a database, sending an email when a form is submitted. JavaScript still runs normally in the visitor's browser, so pages can move and respond. If your site shows the same content to everybody, it can be static and probably already is. If it has to know who is looking, it cannot.

What Is A Static Website?

A static website is a collection of files that are built before anyone visits, and served to every visitor exactly as they are, with no code of yours running on the server to assemble them.

The files are the ordinary ones: HTML for the content, CSS for how it looks, images, fonts, JavaScript, maybe a PDF. The server's whole job is to find the file that was asked for and hand it over. Two people opening your site five seconds apart get the same bytes.

That is the definition. What trips people up is everything the word seems to imply but does not.

It does not mean the page sits still. Menus open, sliders slide, forms validate, maps pan. All of that is JavaScript running in the visitor's browser, and the browser does not care where the file came from.

It does not mean one page. A site of two hundred pages is static if all two hundred were built in advance.

It does not mean the content is frozen. You can change it whenever you like. You change the file.

And it does not mean the site is simple. Some of the largest documentation sites on the internet are prebuilt files, and so are a lot of marketing sites belonging to companies you have heard of.

The opposite arrangement is a dynamic site. There, the page does not exist until somebody asks for it. A WordPress page is assembled on demand: PHP starts up, queries a MySQL database for the post, drops it into a theme template, produces HTML, sends it, and throws the result away. The next visitor triggers the same work again.

Here is the part people miss. A reader cannot tell the two apart. The same page could be delivered either way and look identical. The difference is who assembled it and when, and that is an engineering decision, not a design one.

What Happens When Somebody Opens One?

The browser asks a server for a file by name, the server finds it on a disk, and sends it back untouched. The browser reads it and draws the page. That is the entire round trip.

Step by step:

  1. Someone types your address or clicks a link to it.
  2. DNS turns that domain into the address of an actual machine.
  3. The browser asks that machine for a path. A bare address means index.html, which is why that filename matters so much.
  4. The server reads the file off a disk and sends it back, byte for byte as you uploaded it.
  5. The browser reads the HTML, sees it references a stylesheet, three images and a script, and asks for each of those the same way.
  6. The page draws. Any JavaScript now runs on the visitor's own machine.

On a dynamic site, one extra thing happens between steps 3 and 4: the server runs a program. It boots an interpreter, queries a database, assembles the HTML, and only then starts sending. When everything is healthy that takes a few milliseconds. When the database is busy or a plugin is misbehaving it takes seconds, and the visitor stares at a white screen for all of them.

Removing that step is why prebuilt files are fast. There is no work to be slow. A file that already exists can also be copied to machines around the world and kept near your visitors, which is what a CDN does, because there is no risk of serving somebody else's personalised page by mistake.

Be honest about the size of that win, though. It removes one delay. It does not make a page with 3 MB of uncompressed photos load quickly, and I have seen plenty of prebuilt pages lose to a well-tuned WordPress site for exactly that reason. Architecture buys you the first 200 milliseconds. The rest is your own files.

If you want the steps for putting files online rather than the mechanism behind it, this walkthrough of getting an HTML file live takes about a minute end to end.

Static Or Dynamic: What Is The Real Difference?

Static Or Dynamic: What Is The Real Difference? - OxyPages

The difference is when the page gets built: once, before the visit, or freshly during it. Everything else follows from that.

A static siteA dynamic site
When the page is builtOnce, in advanceOn every single request
What the server doesFinds a file, sends itRuns your code, queries a database, assembles HTML
Your software on the serverNonePHP, Node, Python or Ruby, plus a database
Time to first byteThe network trip plus a disk readThe network trip plus however long your code takes
What can be attackedYour host account, your DNS, third party scripts you addedAll of that, plus your code, the database, and every plugin
Typical running cost$0 to $10 a month$5 to $40 a month, plus the hours you spend patching
How it usually breaksA file you forgot to upload, or a link pointing at a file that is not thereA version bump, a full disk, a database that stops answering, an expired plugin licence
What it cannot doLog people in, store records, run anything server sideVery little, if you are willing to maintain it

Most small sites could be prebuilt and their owners would never notice the change. A five page site about a business, with opening hours and a phone number, has no reason to rebuild itself out of a database every time somebody looks at it.

One question settles which side you are on: does the page have to know something about the person looking at it, or remember something they did? If the answer is no, prebuilt files are enough. If the answer is yes, the server has to think, and no amount of clever configuration makes a file server think.

A separate post in this cluster takes that comparison apart properly, including the hybrid middle ground where a site is prebuilt except for one live piece. For most people reading this, the table above is the whole decision.

How Is A Static Site Actually Made?

There are four common routes, in rising order of machinery: you write the HTML yourself, a site generator builds it from templates, a framework compiles an app down into files, or an AI writes the page for you.

By hand. You open a text editor, write HTML, save it as index.html. This is still completely legitimate and it is how a surprising number of good one-page sites exist. It stops being pleasant at around ten pages, because changing the navigation means editing the same block of HTML ten times.

With a site generator. Tools like Hugo, Eleventy, Jekyll and Astro let you write content in Markdown and keep the layout in one template. You run one command, and the generator stamps every piece of content into the template and writes out finished HTML files. MDN's glossary entry for a static site generator Most documentation sites and a large share of developer blogs work this way.

With a framework build. React, Vue, Next.js, Nuxt and Vite all have a build command that produces a folder of HTML, CSS and JavaScript. One caveat worth knowing: a framework app is only static if it is exported to files. If it needs a Node process running to answer requests, it is a dynamic app wearing modern clothes, and it needs a host that runs code.

By AI. Claude, ChatGPT, Lovable and v0 hand you index.html and maybe a stylesheet. That output is a prebuilt site already, which is why putting an AI-generated page online is usually a two minute job rather than a project.

How it is madeWhat you editBuild stepWhat comes out
By handThe HTML itselfNoneThe files you wrote
Site generatorMarkdown and one templateOne commandA folder of finished HTML
Framework buildComponentsOne command, plus a toolchain to installA folder of HTML, CSS and JavaScript
AI generatedThe prompt, then the HTMLNoneindex.html and its assets

Here is the test that settles it for your own folder. Look inside it. If the top level holds index.html and you can double-click that file and see your site in a browser, it is static:

my-site/
  index.html
  about.html
  style.css
  images/
    logo.png

If the folder is full of .php files, or there is a server.js you are told to run first, or the instructions start with installing something, it is not static and a file host will not serve it.

How Do You Update One With No Admin Panel?

How Do You Update One With No Admin Panel? - OxyPages

You change the file and upload it again. That is the entire loop, and on a small site it is genuinely faster than logging into a dashboard, finding the page, and waiting for an editor to load.

What that looks like depends on how the site was made:

  • Written by hand: open the file, edit the text, drag the folder back to your host.
  • Site generator: edit a Markdown file, run the build command, upload the output folder.
  • Connected to a repository: commit the change, and the host rebuilds and publishes on its own.
  • Someone else needs to edit it: point a git-based or headless CMS at the site so they get an editor, and the site rebuilds when they hit save.

Changing a phone number on a five page site is: open the file, find the number, change it, re-upload. Under two minutes, and there is nothing to log into. On OxyPages you drop the folder back in and the new version is live in a few seconds, which is the same shape as every other file host.

The limits here are real and worth hearing before you commit. There is no built-in drafts and preview workflow. There is no schedule-this-for-Tuesday unless your host or your build script provides it. Two people editing the same file will overwrite each other, because nothing is coordinating them.

And when your change does not appear, it is almost always a cache rather than a failed upload. Browsers and CDNs hold on to a stylesheet for a while. A hard refresh usually settles the argument.

Another post in this cluster covers the update loop in detail, including how to stop the browser showing an old stylesheet. If updating is the part that worries you, that is the one to read.

What Can A Static Site Not Do?

It cannot do anything that requires code to run on the server: logging people in, reading or writing a database, processing a payment itself, sending an email when a form is submitted, or running a job on a schedule.

Specifically, that rules out:

  • User accounts, sessions, and anything that should look different per person
  • A database it owns, holding records it can query and update
  • Server-side processing: resizing an upload, generating a PDF, charging a card
  • Email on submit. A plain form tag posts to nothing at all, and the visitor gets an error page
  • Anything on a timer: a nightly job, a reminder, a scheduled publish
  • Anything that must stay secret. Every file you upload can be fetched by anyone who knows the URL, and every line of JavaScript in the page is readable

That last one catches people who otherwise had it right. There is no private area of a prebuilt site. Password protection exists, but it lives in front of the files at the host level, not inside them.

The Honest Workarounds

Most of these gaps have a fix, and the fix is always the same shape: somebody else's server does the part yours cannot.

  • Forms. Point the form's action at a form service and it emails you the submission. Free tiers commonly sit around 50 submissions a month, which is more than most brochure sites ever receive.
  • Comments. A third-party comment embed drops a script into the page and keeps the comments on its own servers.
  • Payments. A hosted checkout link means the card details, the transaction and the receipt all happen on the payment company's side. Your page only links to it. This is how a genuinely small shop can run with no backend at all.
  • Live data. JavaScript in the browser can call an API and draw whatever comes back: prices, availability, a live count. This works well. The catch is that any key that JavaScript carries is public, so if the API needs a secret, you need a server somewhere, even a tiny one.

Each workaround is also a dependency. One or two is sensible engineering. Five of them and you have assembled a fragile application out of other people's free tiers, and you would have been better off paying for a real backend from the start.

So let me say the uncomfortable half plainly. If your project needs accounts and its own database, a prebuilt site is the wrong shape for it, OxyPages is the wrong tool, and so is every other static host. That is a platform decision, not a hosting plan you can upgrade your way into.

Who Is A Static Site Right For, And Who Should Skip It?

It is right for any site whose content is the same for everybody who visits, and wrong for any site that has to know who is looking.

Good fits, and these cover most of the internet by page count:

  • A business site with pages, hours, photos and a contact form
  • A portfolio, a resume, or a personal page
  • A landing page for one product, campaign or event
  • Documentation, a handbook, a menu, a price list
  • A wedding or conference page that exists for three months
  • A client preview you need to send as a link today
  • A blog you post to occasionally, if you are comfortable with a build step
  • Anything an AI just generated for you, which is prebuilt HTML by default

Skip it, and go looking for an application platform instead, if you need:

  • Your own checkout with inventory, accounts and order history
  • A membership area, a course, or anything gated per person
  • Real booking with live availability that two people cannot double-book
  • A forum, a social feed, or user-submitted content
  • Per-user dashboards showing different numbers to different people
  • A newsroom where five non-technical people publish daily with approvals

The grey zone in between is worth naming honestly. A shop with under ten products can run fine on hosted checkout links. A blog with two hundred posts is fine as long as somebody is willing to run a build. A site that needs one live number on the homepage can fetch it with JavaScript. Once three of those exceptions stack up, you have a dynamic site pretending otherwise, and you should stop fighting it.

On cost, the short version: serving finished files is somewhere between free and about $10 a month, and the free tiers are permanent products rather than trials. Netlify, Cloudflare Pages and GitHub Pages all do this well. GitHub Pages expects your files in a git repository, which is either completely natural or a brick wall depending on who you are. A companion post covers what a hosting service actually is and what separates the plans, if that is the part you are unsure about. The plan comparison for prebuilt sites is the shorter version of the same thing.

What to do next, in order:

  1. Open your folder and check that index.html is at the top level of it.
  2. Make sure everything the page references, images and stylesheets included, is in that same folder.
  3. Upload the whole folder to any host that serves files, then open the link on your phone rather than the laptop that has the original cached.
  4. Only go looking for something heavier when a page genuinely has to remember something.

Drop your folder in and get a live link if you want that in one step, or use any of the free tiers named above. Your files do not care who is storing them, and neither should you.

FAQ

Is A Static Site Bad For SEO?

No, and if anything it starts ahead. Google indexes the HTML it is handed, and on a prebuilt page the content is already in that HTML rather than being assembled by JavaScript after the fact. Pages also load fast, which helps. What actually hurts rankings is missing titles, missing meta descriptions and no internal links, and those are equally possible to get wrong on any platform.

Can A Static Site Have A Contact Form?

Yes, through a form service. The form tag itself does nothing on a file host, because there is no code waiting to receive the submission. You point the form's action at a service that accepts it and emails you, which takes one line of HTML and no backend of your own.

Does Static Mean No JavaScript?

No. JavaScript runs in the visitor's browser, not on the server, so animations, filters, calculators, galleries and maps all work normally. The word only describes what the server does with your files, which is nothing except send them.

How Do I Know If The Files An AI Gave Me Are Static?

Double-click index.html. If it opens in your browser and looks like your site, it is static and any file host will serve it. If the instructions tell you to run a command or start a server before you can see anything, it is not, and you need a host that runs code.

Is A Static Website Cheaper To Run?

Almost always, yes. Serving files costs between nothing and about $10 a month, against roughly $5 to $40 for a server that runs code. The bigger saving is invisible: there is no software of yours to patch, no plugin to break at a bad moment, and no database to back up.

Try It Now

Still Here? Drop It In.

The whole pitch fits in one sentence: your HTML, on a link, in seconds.

Drag and drop your HTML file(s), folders, or ZIP file

or ·

No account needed. Your unclaimed website stays live for 30 minutes on a free subdomain. Claim it to your account to keep it permanently.

  • No Account Needed
  • Free SSL
  • 30-Minute Unclaimed Link, Claim To Keep It