GitHub Pages is excellent and free for what it's designed to do: publish a static site from a repository, rebuilt on every push, on infrastructure you never think about. The wall people hit is visibility. Per GitHub's own documentation, publishing a Pages site privately requires a GitHub Enterprise Cloud organisation with Pages access control — it isn't available on Free, Pro, or Team. And even where it is available, access is granted to GitHub users with access to the repository, which means there is no way to hand the site to someone who isn't a GitHub user at all. If your reader is a client, that's the end of the road, regardless of plan.
Try it now
Drop a file — get a private link in seconds. No sign-up.
Drop an HTML, ZIP, PDF, PNG or JPEG file, or click to choose.
One file, or a ZIP bundle. Max 3 MB.
Up to 3 MB, link self-destructs after 7 days. Sign up free to keep links forever, password-protect them, and store more.
Build the site the way you already do, then upload the output rather than pushing it. Zip the built folder — the entry HTML with its JS, CSS, and assets — and drop it in. The bundle is unpacked with relative paths intact and served behind one link in seconds, so a static site behaves exactly as it does locally.
The link is unguessable and no-indexed by default. Your reader opens it in any browser with no GitHub account, no organisation membership, and no repository permissions — because there's no repository involved. Add a password if the work is confidential, or an expiry if it's tied to a review window; both are free on every plan.
Re-upload when you rebuild and the link stays the same, so a client who bookmarked it in week one is still looking at the current build in week six. On Studio ($14.99/mo) it runs on your own domain with white-label, which reads differently on a client deliverable than any platform URL does.
Only under specific conditions. GitHub's documentation states that privately publishing a Pages site requires a GitHub Enterprise Cloud organisation with Pages access control enabled, on an eligible project site built from a private or internal repository. It isn't offered on Free, Pro, or Team plans. One thing that catches people: building from a private repository does not by itself make the published site private — the site's visibility is a separate setting you have to configure explicitly.
Because they're two different settings. Repository visibility governs who can see your code; Pages visibility governs who can reach the published site, and on the plans most people are on there is no private option for the second one. A private repo can and does produce a fully public site. That surprises people at exactly the wrong moment, which is why it's worth checking rather than assuming the repo setting carried over.
Not as a GitHub Pages site. Access control there is granted to GitHub users with access to the repository, so your reader needs a GitHub account and a permission grant on your repo. For a colleague that's a minor annoyance; for a client, a stakeholder, or anyone outside engineering it isn't going to happen. This is the specific case where a link that requires nothing of the recipient is the only workable shape.
Probably not, and this isn't an argument for that. If your site is public and git-backed — documentation, an open-source project page, a personal site — Pages is a genuinely good answer and rebuilding on push is worth a lot. The use here is narrower: the builds that shouldn't be public. Client deliverables, previews before launch, internal reports. Many people run both and pick per project rather than migrating.
Yes — the input is the build output, not the source, so the generator is irrelevant. Run your build, zip the output directory, and upload it. Next.js static exports, Astro, Hugo, Jekyll, Eleventy, Vite builds all land the same way. What isn't supported is anything needing a server at request time: API routes, server-side rendering, a database. That part needs a real deployment on Vercel or Netlify.
They can gate a static site, and if one of them fits your setup you should use it. Cloudflare Access sits in front of a site you route through Cloudflare and asks the visitor to authenticate — solid for a team, heavier than it sounds for one client, because someone still has to be granted an identity. Vercel and Netlify both offer password protection on a deployment and connect natively to a private GitHub repo, so if you already deploy there or your project needs a build pipeline, that is the shorter path. The place they all ask something of you is setup: an account, a project, a deploy, and a config. The narrower case here is when you have a finished build and one person to send it to, and the only thing standing between those two facts is a URL.
Yes on paid personal plans — GitHub Pages can build from a private repository on Pro and Team, and your source stays hidden. What it does not do is make the resulting site private: the published page is still reachable by anyone with the URL. That is the single most common misread of this feature, because 'Pages from a private repo' sounds like it should mean a private page and means the opposite half. On GitHub Free, Pages requires a public repository outright.
Nothing, and you don't need an account to see whether it fits — an anonymous upload takes a file up to 3 MB and returns a link that self-destructs after 7 days. With an account the free tier allows 10 MB per file; Solo is $4.99/mo with 25 MB files and links that never expire; Studio is $14.99/mo with 50 MB files, a custom domain, and white-label.
No card to try, no sign-up to get a link. Sign up free to keep links forever, password-protect them, and store more.