Website review
This review may include AI-generated content and is not individually verified. Domain, certificate and other facts come from the observed data on this page.
What is pages.gay?
pages.gay is a static-site hosting service tied to git.gay, a source-code repository. You keep HTML, CSS, fonts, images and other static files in a repository, and pages.gay publishes them at a web address — no separate deploy pipeline or server to manage.
How it works
- Personal site: create a public repository named
pageson git.gay and put your files on themainbranch. The site appears atuser.pages.gay. - Project site: create an empty branch named
pagesin an existing repository. The site appears atuser.pages.gay/repo. - Updates: pages.gay caches content, so changes can take a few minutes to appear. A hard refresh (Ctrl + Shift + R) forces a cache update.
- Custom domains: add a
.domainsfile in the same branch as your page content, then point DNS at the service — a CNAME record for subdomains, or A, AAAA and TXT records for apex domains. - Self-hosting: if you run your own Gitea or Forgejo server, pages.gay can be self-hosted following its documentation.
Who it suits
This is a good fit if you already keep a project on git.gay and want a quick public page for documentation, a portfolio, a demo or a small project site. The repository is the publishing interface, which keeps things simple but also means there is no separate build step described here — you are pushing finished static files, not source that gets compiled.
A practical next step: decide between the two layouts first. If the site is about you, use the pages repository for the short user.pages.gay address. If it belongs to one project among several, use the pages branch so the address includes the repo name and stays organised. If you want a custom domain from the start, plan the DNS records before you publish, since apex domains need the extra A, AAAA and TXT entries rather than a single CNAME.
How do I set up a static site on pages.gay?
You set up a static site on pages.gay by pushing files to a repository on git.gay. There is no separate upload step or build configuration to write on the pages.gay side.
Two ways to publish
- User site: Create a public repository named
pageson git.gay and put your HTML, CSS, fonts and images on themainbranch. The site appears atuser.pages.gay. - Project site: In any repository, create a new empty branch named
pagesand put your files there. The site appears atuser.pages.gay/repo.
Either way, push your files and the site becomes visible. pages.gay caches content, so updates may take a few minutes to appear; a hard refresh (Ctrl + Shift + R) forces the cache to update.
Custom domains
Add a .domains file to the repository on the same branch as your page content, containing the domain you want. Then:
- Subdomain: add a DNS CNAME record pointing to
[branch].[repo].[user].pages.gay. - Apex domain: CNAME records don't work, so add an A record to
213.210.34.143, an AAAA record to2a0f:9400:6906:1977::143, and a TXT record containing[branch].[repo].[user].pages.gay.
First step and one decision
Start with the project-site route if you just want to try it: open one of your repos on git.gay, create an empty pages branch, and push a single index.html. If you later want the shorter user.pages.gay address, make a separate public repo named pages.
The main trade-off is between a user site (one per account, shorter URL, tied to a repo named pages) and project sites (one per repository, URL includes the repo name, easy to keep alongside code). If you run your own Gitea or Forgejo server, pages.gay can also be self-hosted, which suits people who want the same workflow without depending on the hosted service.
How do I add a custom domain to my pages.gay site?
Create a file named .domains in the same repository branch that holds your site's content, and put the domain you want to use inside it. Then point the domain's DNS at pages.gay.
DNS records to add
| Domain type | Records needed |
|---|---|
Subdomain (e.g. www.example.com) |
CNAME pointing to [branch].[repo].[user].pages.gay |
Apex/root (e.g. example.com) |
A record → 213.210.34.143, AAAA record → 2a0f:9400:6906:1977::143, TXT record containing [branch].[repo].[user].pages.gay |
Replace [branch], [repo] and [user] with your actual branch name, repository name and git.gay username. Apex domains need the extra records because CNAME records aren't valid at the root of a zone.
After you push
pages.gay caches responses, so a new domain or changed content may not appear immediately. A hard refresh (Ctrl + Shift + R) can force your browser past the cache, but DNS propagation on your registrar's side is separate and can take longer.
Practical notes
- Put
.domainsin the branch that serves the page — for a user site that's themainbranch of thepagesrepo; for a project site it's thepagesbranch of that project's repo. A file in the wrong branch won't be read. - If you host multiple domains, list each one in the
.domainsfile. - Self-hosted setups (your own Gitea/Forgejo server) follow the same pattern; check the project docs for any differences in the target hostname.
Next step: decide whether you need the apex domain or just www. If both, add the apex records and a CNAME for www, then verify with a DNS lookup tool before assuming the cache is the problem.
Can I self-host pages.gay on my own Gitea or Forgejo server?
Yes. pages.gay can be self-hosted if you run your own Gitea or Forgejo server, and the project points you to its documentation for that setup.
What self-hosting changes
- You control the host. Instead of publishing through pages.gay, your Gitea or Forgejo instance serves the static sites.
- You keep the same publishing model. The page evidence describes the hosted workflow as repository-driven: a public repo named
pagesproducesuser.pages.gay, while a branch namedpagesinside a project repo producesuser.pages.gay/repo. A self-hosted deployment follows the same “push files, get a site” idea on your own server. - You take on the operational work. Your server, storage, domain configuration, TLS, and updates become your responsibility rather than the service's.
Practical decision criteria
Self-host if you already run Gitea or Forgejo and want static sites to live alongside your repositories under your own domain and policies. Use the hosted service if you just want a site online in minutes and would rather not maintain the pages infrastructure.
Example scenario
A small team already hosts its Git repositories on a Forgejo instance for privacy reasons. Rather than pushing docs and demo sites to an external service, they enable the pages component on that same server, keep everything behind their existing access rules, and point a subdomain at it. The trade-off is that they now own backups, upgrades, and any downtime.
Next step
Read the self-hosting documentation linked from the pages.gay site before you start, since it covers the Gitea/Forgejo-specific configuration. If you only need a quick project page and don't already run one of those servers, the standard hosted path is the simpler choice.
Why aren't my changes showing up on my pages.gay site?
Most likely, pages.gay is still serving a cached copy of your site. The service notes that it uses a cache and that updates may not appear for a few minutes after you push. Hard-refresh the page (Ctrl + Shift + R) to force a fresh copy, and check again after a short wait.
If a hard refresh doesn't help, work through these checks:
- Confirm the push landed. Open your repository on git.gay and verify your changed files are actually in the branch that serves the page —
mainfor auser.pages.gaysite, or thepagesbranch for auser.pages.gay/repoproject page. - Check you edited the right branch. A common mistake is pushing to
mainwhen the project page is served from thepagesbranch, or vice versa. The branch that holds your content is the one that gets published. - Look at the file path and name. Static hosting is literal:
index.htmlat the branch root is the entry point, and case matters on many setups. A file namedIndex.htmlor placed in the wrong folder won't replace what visitors see. - Try a private/incognito window. This separates a server-side cache problem from your own browser cache.
- Wait out DNS if you use a custom domain. Domain changes propagate on their own schedule, so a new custom domain can lag even when the content itself is live.
A quick way to tell the two cases apart: view the page source or check whether an unmistakably new file (say, test.txt) loads. If the new file appears but your edited page doesn't, the cache is the culprit. If nothing new appears at all, the push or branch is the problem.
For a concrete scenario: you fix a typo in index.html, push to main, and reload — the old text persists. Hard-refresh, and if it's still stale, open the repo and confirm the commit is on main. That sequence resolves the large majority of "my changes aren't showing" cases on static hosts like this one.
What types of files can I host on pages.gay?
pages.gay hosts static files: HTML, CSS, fonts, images, and "whatever else you'd like" per the page. In practice, that means anything a browser can load directly without server-side code.
What works well
- HTML pages and CSS stylesheets
- JavaScript files
- Fonts (woff, woff2, etc.)
- Images (PNG, JPG, SVG, WebP)
- Other static assets like PDFs, JSON, or text files
What won't work
- Server-side languages (PHP, Python, Ruby, Node.js)
- Databases or dynamic backends
- Anything requiring runtime processing
Your files go into the main branch of a public repo named pages on git.gay, or into an empty branch named pages for a project subpath. The site becomes available at user.pages.gay or user.pages.gay/repo.
One practical note: pages.gay uses a cache, so updates may take a few minutes to appear. A hard refresh (Ctrl + Shift + R) can force it.
If you're unsure whether your project fits, ask: does it need to run code on a server? If yes, static hosting won't work. If it's just files the browser reads, you're fine. For a similar option with a different workflow, see GitHub Pages.
User reviews (0)