To build a personal webpage on GitHub, create a repository named exactly username.github.io, push an index.html (or a Jekyll theme) to it, and GitHub serves it as a live site at that address for free. It is one of the cleanest ways to get a personal site or portfolio online, and it is worth knowing both the five-minute setup and the specific point at which a static-only host stops being enough.
GitHub Pages is genuinely great for a personal site. It is also genuinely limited in ways that only bite once your site stops being just pages - so here is both halves.
Table of contents
- The username.github.io trick
- Adding a custom domain
- What GitHub Pages will not do
- The point where you move
- Where RunxBuild fits
- FAQ
The username.github.io trick
GitHub Pages treats one repository per account specially: name it exactly yourusername.github.io, and whatever you push to it is published at that same URL. This is your user site, and it is the simplest path.
Put an index.html at the root, commit, and within a minute the site is live. Prefer not to write raw HTML? Enable Pages on the repo and pick a Jekyll theme in the settings - GitHub builds it for you, and you edit Markdown with a title and description in a small config file.
For project documentation, any repo can also serve a Pages site from a branch or a /docs folder. The user site is the one that gets the clean personal URL.
Adding a custom domain
A github.io address is fine, but a personal brand usually wants its own domain. Buy the domain from any registrar, add a CNAME record pointing your domain (or www) at your username.github.io target, and set the custom domain in the repository’s Pages settings. GitHub provisions an HTTPS certificate automatically once DNS resolves.
The only common snag is the apex versus www choice and getting the DNS records right - apex domains use A/ALIAS records to GitHub’s IPs, subdomains use a CNAME. Once it resolves and the certificate issues, you have a professional-looking personal site at your own name for the price of a domain.
What GitHub Pages will not do
Pages serves static files. That is the whole model, and it is also the ceiling. There is no server-side code: no contact form that actually emails you, no login, no database, no API, no scheduled jobs. Anything dynamic has to be bolted on through third-party services or client-side calls.
There are also soft limits on repository size and bandwidth intended for personal and project use, not for a high-traffic application. For a static portfolio or blog, none of this matters. The moment your “personal site” grows a feature that needs to run code, you have outgrown the host, not the idea.
The point where you move
The signal is specific: you want a working contact form, a members area, a small API behind the site, a database, or a dynamic page that renders per request. At that point you are no longer building a page, you are building an application, and a static-only host cannot run it.
The usual migration is painless because the static front end moves as-is and you add the backend beside it. Keep the static pages where they are fast and cheap, and put the one dynamic piece on something that can execute code - you rarely need to throw away what GitHub Pages was already doing well.
Where RunxBuild fits
When the personal site grows a backend, RunxBuild runs both halves on one platform. The static site builds from your repo with custom domains, headers, and redirects, and 120GB of bandwidth is included before any per-GB charge. When you need the contact form to actually send mail or the portfolio to pull from a database, you deploy a small service and a managed Postgres or MySQL beside the static site, from the same dashboard.
That means the growth path is additive: keep the static pages, add the one dynamic piece, point the same custom domain at it - rather than migrating the whole thing the day you need one server-side feature.
How this fits the rest of the stack
The cost of a project is the sum of its line items, not the headline number, and the RunxBuild hosting calculator is the right place to add them up: the service, the database, the storage, the bandwidth, each a separate figure. Model it before committing, not after the first invoice. The RunxBuild dashboard is where the running project shows its real usage in one place.
Useful related references:
FAQ
How do I make a personal website on GitHub?
Create a repository named exactly yourusername.github.io, push an index.html or enable a Jekyll theme in the repository’s Pages settings, and GitHub serves it live at that address for free, usually within a minute of the first push.
Can I use a custom domain with GitHub Pages?
Yes. Add a DNS record pointing your domain at your username.github.io target - a CNAME for a subdomain, A or ALIAS records for an apex domain - then set the custom domain in Pages settings. GitHub issues an HTTPS certificate automatically once DNS resolves.
Is GitHub Pages really free?
Yes for public repositories and normal personal or project use, including HTTPS and a custom domain. There are soft limits on storage and bandwidth meant to discourage running a heavy commercial application, but a static portfolio or blog sits comfortably inside them.
Can GitHub Pages run a contact form or database?
No. Pages serves static files only, with no server-side code, database, or API. A contact form or any dynamic feature has to use a third-party service or client-side calls - and wanting one of those is usually the sign you have outgrown a static-only host.
When should I move off GitHub Pages?
When the site needs to run code: a working contact form, authentication, an API, a database, or per-request rendering. The static pages can stay where they are fast and free while you add the one dynamic piece on a platform that can execute server-side code.