<!DOCTYPE html>

[Link in Seconds](https://linkinseconds.com/)

[Pricing](https://linkinseconds.com/pricing)

[Log in](https://linkinseconds.com/login)[Sign up free](https://linkinseconds.com/signup)

[All articles](https://linkinseconds.com/blog)

# How to host a static website from a ZIP, with a subdomain and custom domain

[Sunny](https://linkinseconds.com/about#who-runs-this)·August 31, 2026· 7 min read

[#hosting](https://linkinseconds.com/blog/topic/hosting-and-websites)#host#website#zip#free

Host a website from a ZIP, free

site.zip Live

/p/site

You built a static site (a landing page, a portfolio, a documentation site, the **dist/** output of a Vite or React build) and you want it online right now. Not tomorrow after fighting DNS. Not after learning a new platform's config format. Right now, with a real URL and a proper SSL certificate. Here is the fastest version of that, including how to point your own domain at it once you have confirmed it looks right. If you also need to [share files online](https://linkinseconds.com/share-files-online) without hosting a whole site, a single clean link is often enough.

## What this works for

Any website whose files are complete before a visitor arrives is a static site. That covers a wide range of useful things:

- Hand-coded HTML pages with CSS and JavaScript

- Framework builds: the **dist/** from Vite, the **build/** from Create React App, the **out/** from Next.js static export

- Documentation sites built with Docusaurus, Astro, VitePress, or Hugo

- Landing pages and portfolio sites

- Single-page apps (SPAs) with client-side routing

What it does **not** work for: server-rendered code, PHP, Python scripts, Node.js server routes, or anything that needs to run on a server when a request arrives. If your site is just files, you are in the right place. If all you have is a single asset rather than a whole site, it is faster to turn that [PDF into a link](https://linkinseconds.com/pdf-to-link-converter) or that [image into a link](https://linkinseconds.com/image-to-link) directly, with no ZIP step at all.

## Step 1: zip your site correctly

Try it while you are reading

Upload a file and get a clean, trackable link with a QR code. Free, and no account for whoever opens it.

[Create a link](https://linkinseconds.com/)

The most common mistake is zipping the wrong folder. Here is the rule: zip the folder that contains your **index.html**, not a parent folder with the project source, build scripts, and **node_modules** inside it.

### For a hand-coded site

Zip the folder that has **index.html** at its root, with your CSS, images, and JS files alongside it or in subfolders. Every relative path in your HTML should resolve from that root.

### For a Vite or React build

Run **npm run build** or **pnpm build** first. Then zip the **dist/** folder (Vite) or **build/** folder (Create React App). Do not zip your source. Zip the _built output_. The step-by-step for React/Vite specifically is covered in the [deploy a React or Vite build the easy way](https://linkinseconds.com/blog/deploy-a-react-vite-build-the-easy-way) guide.

### For a Next.js static export

Add **output: 'export'** to **next.config.js**, run **next build**, and zip the **out/** folder that appears.

**Check before you zip:** open the folder on your desktop and confirm you see **index.html** at the top level, not buried inside a subfolder called **dist** inside a folder called **my-project**. The wrong nesting is the single most common cause of a blank or broken site after upload.

## Step 2: upload and get your subdomain

- Sign in to [Link in Seconds](https://linkinseconds.com/host-static-website) and open the static-site hosting page.

- Drop the ZIP onto the upload card. The site is unpacked server-side: your **index.html** is found at the root, every asset is laid out in the correct folder structure, and each file is served with the right content type (CSS as **text/css**, JavaScript as **text/javascript**, fonts as the appropriate font type, and so on).

- Your site goes live at a clean subdomain: **your-chosen-name.linkinseconds.site**, with HTTPS included automatically. No certificate to provision, no Certbot to run.

- Open the URL, click through your pages, and check that the CSS applies and scripts run. They should, because every relative link resolves from the same root they resolved from locally.

## Step 3: connect your own domain

If you want the site at **yourname.com** or a subdomain like **docs.yourcompany.com**, connect it in the site settings. The process:

- In your site settings, enter your custom domain. You will see a DNS record to add, typically a CNAME pointing your domain at the hosted site.

- Add the record in your DNS provider (wherever you bought the domain, like Namecheap, Cloudflare, or GoDaddy). DNS changes usually propagate within minutes to an hour.

- SSL is provisioned automatically for the custom domain too, so you do not need to manage certificates manually.

**Tip:** keep the subdomain live while you wait for DNS. The **your-name.linkinseconds.site** address continues to work in parallel, so you can share a working preview link before the custom domain fully propagates.

## Single-page apps and client-side routing

SPAs (React Router, Vue Router, etc.) serve **index.html** for every URL and handle routing entirely in the browser. The problem is that a server that sees a request for **/about** looks for a file at that path, and when it does not exist, returns a 404 instead of serving **index.html**. Static hosting handles this with a fallback: any URL that does not match a real file serves **index.html**, and your router takes it from there. Enable the **single-page app** toggle in the site settings and client-side routing works as expected.

## Updating the site without changing the URL

Sites change. The best workflow for that: re-zip the built output, upload the new ZIP, and the **same URL** (subdomain and any custom domain) serves the updated site immediately. Every link you have already shared keeps working and shows the latest version automatically. No redeploy command, no git push, no build server.

## Limits to know before you start

- **Static files only.** No PHP, no Python, no server-side rendering at request time. Client-side JavaScript calling an external API over HTTPS works fine.

- **File count and size caps per site.** Pro allows up to 500 files per site with a 100 MB total decompressed size, and each individual asset must be under 25 MB. For larger documentation sites or asset-heavy builds, Lifetime (25 sites, 1,000 files, 250 MB total) gives more room.

- **Static-site hosting is a Pro feature.** You need a Pro or Lifetime account to publish a site. Signing in is always required to upload.

## Pricing

Every link feature is free. Pro adds unlimited links, 15 GB, bigger files and website hosting: up to 10 hosted sites, for $9/mo or $49/yr. The free plan holds 20 links and 500 MB of storage, and a single HTML file still works as a free link. Lifetime is $99 once, so you pay once and host up to 25 sites forever, with 250 MB per site and no renewal to track. See the full comparison on the [pricing page](https://linkinseconds.com/pricing).

## Frequently asked questions

### Can I host a site with multiple pages, not just index.html?

Yes. Multi-page sites work as long as all the HTML files are inside the ZIP. Each page is served as its own file. **/about.html** is a real file, not a redirect. Inter-page links resolve as long as your relative paths are correct.

### What if my framework's build uses hashed asset names?

Hashed names (like **app.4f3a9c2b.js**) are served normally. The server reads the actual file and serves it with a correct content type, regardless of the filename. Hashed assets are also cached aggressively since their name changes with every build, which is exactly what you want for fast repeat visits.

### Is HTTPS included automatically?

Yes, for both the **.linkinseconds.site** subdomain and any custom domain you connect. You do not need to provision a certificate or set up a redirect.

### Can I preview before connecting a custom domain?

The subdomain is the preview. Share it, verify it looks right, and then point your domain at it. Both the subdomain and the custom domain serve the same site simultaneously.

If you are deploying a React or Vite build specifically, the [Vite/React deploy guide](https://linkinseconds.com/blog/deploy-a-react-vite-build-the-easy-way) has the framework-specific details, and the [static-site hosting](https://linkinseconds.com/host-static-website) page is the starting point for any ZIP upload.

## Keep reading

- [Tiiny Host's free plan limits index.html Live /p/landing Tiiny Host free plan limits (2026): 3 MB uploads, one site, and the 3-month login rule 6 min read](https://linkinseconds.com/blog/tiiny-host-free-plan-limits)

- [Share an HTML file as a live link report.html Live /p/report How to share an HTML file as a link that opens as a web page 7 min read](https://linkinseconds.com/blog/share-an-html-file-as-a-link)

- [Share an AI-built website as a link site.zip Live /p/site Share a website you built with AI as a live link 4 min read](https://linkinseconds.com/blog/share-an-ai-built-website-as-a-link)

## Turn any file into a link in seconds

Upload a PDF, image, video, or ZIP and get a clean, trackable link with a QR code, free.

[Try Link in Seconds →](https://linkinseconds.com/)

On this page

- What this works for

- Step 1: zip your site correctly

- Step 2: upload and get your subdomain

- Step 3: connect your own domain

- Single-page apps and client-side routing

- Updating the site without changing the URL

- Limits to know before you start

- Pricing

- Frequently asked questions

[Link in Seconds](https://linkinseconds.com/)

Turn photos, PDFs and files into one clean link to share, with view tracking and a QR code. Works in the browser, nothing to install.

[Follow on LinkedIn](https://www.linkedin.com/company/linkinseconds)

Featured on

33, Bhaktinandan, Sector 4, S G Road, Mota Varachha, Surat, Gujarat 394101, India

[+91 99090 97776](tel:+919909097776)

[support@linkinseconds.com](mailto:support@linkinseconds.com)

Secured by Dodo PaymentsVisaMastercard

Use cases

- [Wedding photos](https://linkinseconds.com/wedding)

- [Event photos](https://linkinseconds.com/event-photo-sharing)

- [Family photos](https://linkinseconds.com/share-photos-with-family)

- [Client proofs](https://linkinseconds.com/client-photo-proofs)

- [Property listings](https://linkinseconds.com/property-listing-link)

- [Product catalogue](https://linkinseconds.com/product-catalogue-link)

- [Pitch decks](https://linkinseconds.com/share-pitch-deck)

- [Resume link](https://linkinseconds.com/resume-link)

- [Portfolio link](https://linkinseconds.com/portfolio-link)

- [Class photos](https://linkinseconds.com/class-photos)

- [All use cases](https://linkinseconds.com/use-cases)

Tools

- [Image to link](https://linkinseconds.com/image-to-link)

- [PDF to link](https://linkinseconds.com/pdf-to-link-converter)

- [Video to link](https://linkinseconds.com/video-to-link)

- [Share files online](https://linkinseconds.com/share-files-online)

- [QR code generator](https://linkinseconds.com/qr-code-generator)

- [Large files by email](https://linkinseconds.com/send-large-files-via-email)

- [View-only sharing](https://linkinseconds.com/view-only-file-sharing)

- [Menu QR code](https://linkinseconds.com/pdf-menu-qr-code)

- [Proposal tracking](https://linkinseconds.com/proposal-tracking)

- [All file viewers](https://linkinseconds.com/viewer)

PDF tools

- [Merge PDF](https://linkinseconds.com/merge-pdf)

- [Split PDF](https://linkinseconds.com/split-pdf)

- [Rotate PDF](https://linkinseconds.com/rotate-pdf)

- [Organise PDF](https://linkinseconds.com/organize-pdf)

- [Watermark PDF](https://linkinseconds.com/watermark-pdf)

- [JPG to PDF](https://linkinseconds.com/jpg-to-pdf)

- [PDF to JPG](https://linkinseconds.com/pdf-to-jpg)

- [All PDF tools](https://linkinseconds.com/pdf-tools)

Hosting

- [Host a static site](https://linkinseconds.com/host-static-website)

- [HTML hosting](https://linkinseconds.com/html-hosting)

- [Publish an HTML ZIP](https://linkinseconds.com/publish-html-zip)

- [Deploy a Vite build](https://linkinseconds.com/deploy-vite-react-build)

- [Publish from AI (MCP)](https://linkinseconds.com/docs/mcp)

- [File upload API](https://linkinseconds.com/docs/api/uploads)

Compare

- [vs WeTransfer](https://linkinseconds.com/wetransfer-alternative)

- [vs Dropbox](https://linkinseconds.com/dropbox-alternative)

- [vs Google Drive](https://linkinseconds.com/google-drive-alternative)

- [vs Tiiny Host](https://linkinseconds.com/tiiny-host-alternative)

- [vs DocSend](https://linkinseconds.com/docsend-alternative)

- [vs Google Photos](https://linkinseconds.com/google-photos-alternative)

- [vs Pixieset](https://linkinseconds.com/pixieset-alternative)

- [vs Netlify Drop](https://linkinseconds.com/netlify-drop-alternative)

- [vs Smash](https://linkinseconds.com/smash-alternative)

- [vs Issuu](https://linkinseconds.com/issuu-alternative)

Company

- [Pricing](https://linkinseconds.com/pricing)

- [Blog](https://linkinseconds.com/blog)

- [FAQ](https://linkinseconds.com/faq)

- [About](https://linkinseconds.com/about)

- [Contact](https://linkinseconds.com/contact)

- [Contact sales](https://linkinseconds.com/contact-sales)

- [Docs](https://linkinseconds.com/docs)

- [API & MCP](https://linkinseconds.com/docs/developers)

Legal

- [Terms](https://linkinseconds.com/terms)

- [Privacy](https://linkinseconds.com/privacy)

- [Cookies](https://linkinseconds.com/cookies)

- [Refunds](https://linkinseconds.com/refunds)

- [Acceptable use](https://linkinseconds.com/acceptable-use)

- [Copyright](https://linkinseconds.com/dmca)

- [Report abuse](https://linkinseconds.com/abuse)

- [Child safety](https://linkinseconds.com/child-safety)

- [Grievance](https://linkinseconds.com/grievance)

- [Security](https://linkinseconds.com/security)

- [Legal notice](https://linkinseconds.com/legal-notice)

© 2026 Link in Seconds. All rights reserved.

[Terms](https://linkinseconds.com/terms)[Privacy](https://linkinseconds.com/privacy)[Cookies](https://linkinseconds.com/cookies)

Source: https://linkinseconds.com/blog/host-website-zip-free-subdomain
