←Back

The neocities logo: a cat wearing a hard hat 
	      with a wrench in one hand and a paintbrush in the other.

How to build a Website on Neocities

Neocities hosts static websites. This means that you produce the HTML yourself, upload it, and then neocities serves exactly what you upload. This way of hosting contrasts with the more common dynamic hosting, where you write some code in a language like PHP or python which the server executes to produce HTML pages on request.

Static websites have a major advantage, which is that they're fast and they work anywhere, with no config. But they pose some challenges. For instance, what do you do if you want a header to appear on every page on your site? Do you just copy and past code a bunch of times, and then manually edit every page when you want to change something? That sounds laborious.

A lot of programmers these days handle this using static site generators. These are programs that put together a bunch of pages according to rules and save them to HTML files that you can upload to a static host. This is a great way to make websites, but I recommend against using them on neocities. Why? Well, they go against the spirit of a web host like neocities, which is about reviving the feeling of the old web, where everything was weird, a little ugly, and written by hand.

On neocities, you should write your html my hand in a text editor. So is my suggestion to just copy code all over the place like I said? No. You don't necessarily need uniform pages. For instance, I think it's much better that my Song of Satan poem is styled differently than my satirical faniction. And when you do want consistant style, you should just keep your pages simple enough that you can accomplish it by including one css file across pages on your site with just one line: <link rel="stylesheet" type="text/css" href="style.css">.

This can be a little hard to keep organized, but one trick is to just keep all the pages in your site on the top-level. So every page should have a url like be https:{username}.neocities.org/{page}.html. Then you can link to any other page on your site by name, and you can link you your home with just index.html. This also makes it easy to keep a working copy of your site on your own hard drive, because most servers will do special tricks to serve /page/index.html when given the url /page, but your filesystem isn't that smart. If you always link directly to html files though, that's no problem.