← Back to all tools
Web Hosting

GitLab Pages

Free static site hosting built into GitLab.com, deploying via GitLab CI from any public project with automatic HTTPS and custom domains.

Host project documentation that rebuilds automatically on every merge
Publish a Hugo/Jekyll/plain-static site from a public GitLab repo at zero cost
Keep site hosting inside the same platform as your repos and CI

Free static hosting for public projects, 10 GiB storage per project, 400 CI minutes/month, 5 users

GitLab Pages is free for public projects — make your repo public unless you need privacy. The 400 CI minutes/month shared across your namespace are the real constraint: use a lightweight image (e.g. a plain `image: alpine` or busybox) and cache dependencies so rebuilds are fast and cheap, and only rebuild on merge (not every push). Keep your site under the 10 GiB per-project storage quota — exclude node_modules and build artifacts from the repo. Add a custom domain under Deploy → Pages and GitLab provisions Let's Encrypt HTTPS automatically. Combine with GitLab's free CI for a complete docs-and-deploy workflow, and pair with a free CDN like Cloudflare if you need caching beyond gitlab.io.

Create a free GitLab.com account → push your static site to a public project → add a .gitlab-ci.yml with a `pages` job that publishes to `public/` → push → your site is live at username.gitlab.io/project → enable custom domain under Deploy → Pages.

Pros

  • Tight CI integration: Pages deploys ride the same pipeline as your code — every merge can build and publish automatically
  • Generous storage: 10 GiB per project (repo + LFS) is far more than GitHub Pages' 1 GB
  • Built-in HTTPS: Free automatic TLS on gitlab.io subdomains and custom domains via Let's Encrypt

Cons

  • Public-only on free: Free tier Pages requires public projects — private repos need a paid plan
  • CI minute limits: 400 CI minutes/month per namespace runs out fast if every push triggers a full build
  • Build config required: No zero-config deploys — you must write a .gitlab-ci.yml pages job yourself