Deploy a landing page.
Push HTML, CSS, and JavaScript — or the build output of any static site generator — and HostingGuru serves it from disk with cache headers, gzip, HTTP/2, and HTTPS. No web server to configure, no Dockerfile to write. The right service type for marketing sites, documentation, indie portfolios, and SPA shells.
Four steps from a folder of HTML to a live URL
1. Push to GitHub
Your repo can contain plain HTML/CSS/JS or a static site generator project. We don't care which — we look at the contents to figure it out.
2. Pick "Landing page"
From the dashboard, click New service → Landing page. Pick the repo and branch. We auto-detect the generator from hugo.toml, _config.yml, gatsby-config.js, .eleventy.js, astro.config.mjs, or next.config.js with output: 'export'. If we don't find a generator, we look for index.html at the root or in public/, dist/, build/, _site/.
3. Confirm build & output
For pure static repos, no build runs — we serve the files as-is. For generators, the build command and output directory are pre-filled (hugo → public/, jekyll build → _site/, npm run build → dist/ or out/). Override anything you don't like.
4. Deploy
Files land on a CDN edge cache. The first byte typically arrives in <100ms from any region. You get a live URL with HTTPS and HTTP/2 immediately. Push again and the next build runs automatically.
Static the way modern web infrastructure ships it
Smart cache headers
HTML files get short TTLs (max-age=300, must-revalidate) so deploys take effect quickly. Hashed assets (app.5f3a.js) get max-age=31536000, immutable. Unhashed assets get a sensible middle ground. You don't configure any of this — we read the filenames.
Brotli + gzip + HTTP/2
Compressed responses out of the box, served over HTTP/2 (HTTP/3 on Pro+). Brotli for text-based content, gzip fallback for older clients, no compression for already-compressed media. Average page weight drops 60–80% for typical content.
SPA fallback rules
For client-side-routed apps (React Router, Vue Router, plain history-API SPAs), enable SPA mode and unknown routes serve index.html with a 200 — so deep links work. Otherwise we serve a custom 404.html if you have one, or our default 404 page.
Free SSL + custom domain
Add a CNAME on your domain, we provision a Let's Encrypt cert in seconds and rotate it automatically. www → apex redirect handled. HSTS on by default.
Atomic deploys + rollback
A new deploy doesn't replace files in-place — it builds a new immutable bundle and flips the pointer. There's no half-deployed window where some pages are old and some are new. Roll back to any prior deploy instantly.
Free on Starter
Your portfolio, your indie SaaS landing, your conference page — all fit on the Starter plan free, with HTTPS, custom builds, and no sleep.
Auto-config for the most common static stacks
Hugo
hugo.toml, config.toml, or hugo.yaml. Build: hugo --minify. Output: public/. Hugo version is read from .hugoignore or netlify.toml if present.
Jekyll
_config.yml. Build: bundle install && bundle exec jekyll build. Output: _site/.
Gatsby
gatsby-config.js. Build: npm run build (i.e., gatsby build). Output: public/.
Eleventy (11ty)
.eleventy.js or eleventy.config.js. Build: npm run build or npx eleventy. Output: _site/.
Astro
astro.config.mjs. Build: npm run build. Output: dist/. SSR adapters trigger the API service type instead.
Next.js export
next.config.js with output: 'export'. Build: npm run build. Output: out/. Without the export flag, Next.js is treated as an API service.
Nuxt static
nuxt.config.ts with nitro.preset: 'static' or npm run generate. Output: dist/ or .output/public/.
Vite (React/Vue/Svelte SPA)
vite.config.ts + a build script. Build: npm run build. Output: dist/. Enable SPA mode for client-side routing.
Plain HTML
No config detected, but an index.html in the root or in public/, dist/, build/, site/. No build step. Files served as-is.
Common questions
I have client-side routing — deep links 404. How do I fix it?
Toggle SPA mode in the service settings. Unknown paths will fall through to index.html with a 200 status, letting your client-side router handle them.
Can I add custom redirects?
Yes — add a _redirects file at the root of your output directory, with one rule per line: /old-path /new-path 301. Same syntax as Netlify. Wildcard and splat rules supported.
Can I use environment variables in a static site?
Yes — they're injected during the build phase. For Vite, prefix with VITE_. For Next.js, NEXT_PUBLIC_. For Astro, PUBLIC_. The variable values are baked into the bundle, so don't put secrets in build-time vars — anyone can read them in the browser.
How fast does a deploy go live?
For pure static repos with no build, ~5 seconds end-to-end. For a 200-page Hugo site, typically <30s. Gatsby and similar can take longer because their build is slow — that's the framework, not us.
Does the static service count toward my plan limit?
Yes — every service counts as one. Starter (free) gives you 1 service, Hobby ($19/mo) gives 3, Pro ($35/mo) gives 10, Custom is unlimited. A landing page and an API are 2 services.
Ship your landing page in minutes.
Free SSL, custom domain, atomic deploys, instant rollback.
Landing page deployment in detail
A landing page on HostingGuru is served as a static site: HostingGuru runs your build, stores the output, and serves it with gzip and brotli pre-compression behind a free Let's Encrypt certificate.
How fast is a landing page served from HostingGuru?
Time-to-first-byte for cached HTML is typically under 40 ms within the same region. Static assets are served with a 1-year Cache-Control: immutable header when the filename contains a content hash.
What is the cheapest way to host a landing page on HostingGuru?
The Starter plan is free for one always-on service and is a great fit for a single landing page with a custom domain. Free SSL is included on every plan.
Can I add custom redirects to a HostingGuru landing page?
Yes. Drop a Netlify-compatible _redirects file at the root of your output directory. Each line specifies a source path, target path, and optional status code (301, 302, 410).