Loved by 2,300+ people

Deploy your Vite or React build from the dist folder

You ran the build and got a dist/ folder of static files. Zip it, drop it here, and your app is live, hashed assets cached correctly, client-side routes resolving, no deploy pipeline.

See who opened it, and whenLock it with a passwordPrint or share it as a QR code

Drop your file here

Drop several at once and they become one album link

Files up to 250 MB free

FreeNo sign-up to view250 MB freeWorks in your browser, nothing to install
ImagesPDFsVideoAudioSlidesCodeSites

How do I deploy a Vite or React build without a server?

To deploy a Vite or React build, run npm run build, zip the output folder (dist/, build/, or out/), and drop it in the uploader above. We unpack it, find your index.html, and serve every file with the right content type at a clean URL, hashed assets cached hard, client-side routes resolving, custom domain and SSL on Pro, no CI and no deploy config.

Your build is already a static site

A modern front-end build is a folder of static files by design. Vite, Create React App, Vue CLI, SvelteKit's static adapter, and Astro all emit an index.html plus fingerprinted bundles. Zipping that folder and dropping it here is the shortest path from npm run build to a public URL, no CI and nothing to install.

Host a static website

Client-side routing that resolves

Single-page apps route in the browser: /dashboard and /settings are handled by React Router or Vue Router, not by separate HTML files. Turn on single-page-app mode and unknown paths fall back to index.html with a 200, so deep links and refreshes work instead of 404-ing.

Hashed assets cached hard, HTML never stale

Content-hashed bundles are served with a one-year immutable cache, so repeat visits are instant, while your index.html is served no-cache so a re-upload shows immediately. Ship a new build by dropping a new ZIP; the URL stays the same and visitors get the new version on their next load.

Publish an HTML ZIP

On your own domain, with SSL

A build on a random URL is fine for a preview, but a real app wants a real address. On Pro, connect your domain or subdomain and we provision HTTPS automatically, no certificate setup and no renewals. That makes this a legitimate home for a small production front-end: an internal tool, a marketing site, a docs app, a client deliverable.

HTML hosting

What deploying a build here does not do

No server, no API routes, no database. This serves your built static files and nothing else, so anything that needs a running server at request time is out of scope.

No per-request server rendering. Next.js server components rendered per request, SvelteKit endpoints, and server secrets need a platform that runs that server; export a fully static build instead.

No build step on our side. Upload the built output, not your raw source; a project with no build won't render, and we'll tell you if we can't find an index.html. Your ZIP can be up to 250 MB on a free sign-in and 500 MB on Pro.

How it works

  1. 1

    Build your app

    Run your production build, npm run build for Vite/React/Vue/Svelte, or the equivalent for your tool. It writes a folder of static files: an index.html, hashed JavaScript and CSS in an assets/ folder, and your images and fonts. That folder is a complete static site.

  2. 2

    Zip the output and upload it

    Compress the build output, dist/ for Vite, build/ for Create React App, or out/ for a static export, into a .zip and drag it onto the card. We unpack it, find your index.html, and serve every file with the right content type, so you don't have to be precise about the folder.

  3. 3

    Turn on SPA mode and add your domain

    If your app uses client-side routing, enable single-page-app mode so deep links resolve to your index.html instead of 404-ing. On Pro, connect your own domain with automatic SSL. Re-upload after your next build to ship an update to the same URL.

Your build is already a static site

A modern front-end build is, by design, a folder of static files, that's the whole point of the build step. Vite, Create React App, Vue CLI, SvelteKit's static adapter, and Astro all emit an index.html plus fingerprinted JS/CSS bundles and your assets. There's no server required to serve them; you just need somewhere to put the files. Zipping that folder and dropping it here is the shortest path from npm run build to a public URL, with no CI, no deploy config, and nothing to install.

Zip dist/ (or build/, or out/), we find it

Different tools name the output folder differently: Vite writes dist/, Create React App writes build/, a static Next or Nuxt export writes out/, Jekyll and 11ty write _site/ and public/. You don't have to remember which, if your ZIP contains one of those folders (or a single wrapper folder from compressing on your desktop), we detect the real web root and serve from it. Zip the built output rather than your source; uploading a raw project with no build won't render, and we'll tell you if we can't find an index.html.

Client-side routing that actually resolves

Single-page apps route in the browser: /dashboard and /settings are handled by React Router or Vue Router, not by separate HTML files. That means a visitor who opens a deep link directly, or refreshes on an inner page, needs the server to hand back index.html so your router can take over. Turn on single-page-app mode and that's exactly what happens: unknown paths fall back to index.html with a 200, so refreshes and shared deep links work instead of 404-ing. Leave it off for a plain multi-page site and unknown paths return a real 404 (or your own 404.html).

Hashed assets cached hard, HTML never stale

Good build tools fingerprint your bundles, app.4f3a9c2b.js, precisely so they can be cached forever. We honor that: content-hashed assets are served with a one-year immutable cache, so repeat visits are instant, while your index.html is served no-cache so a re-upload shows immediately. You get the performance of aggressive caching without the classic trap of a stale HTML file pointing at bundles that no longer exist. Ship a new build by dropping a new ZIP; the URL stays the same and visitors get the new version on their next load.

On your own domain, with SSL

A build parked on a random URL is fine for a preview, but a real app wants a real address. On Pro, connect your domain or subdomain and we provision HTTPS automatically, no certificate setup, no renewals. That makes this a legitimate home for a small production front-end: an internal tool, a marketing site, a docs app, a client deliverable. Everything the browser needs to run your app is served correctly; there's just no backend, which is the honest boundary of static hosting.

Static only, where a backend is needed, this isn't it

This serves your built static files and nothing else: no server-side rendering at request time, no API routes, no database. If your app calls an external API from the browser over HTTPS, that keeps working. If it depends on server code, Next.js server components rendered per request, SvelteKit endpoints, environment secrets read on the server, you need a platform that runs that server, and you should export a fully static build or host elsewhere. Said plainly: bring your built output, get a fast static host; bring a server-dependent app and static hosting is the wrong tool.

Vite build index.html served at a clean URL
index.htmlHTML
Zipped dist folder deployed as a live site
dist.zipZIP
Hashed JavaScript bundle served with the right content type
app.4f3a9c.jsHTML
SPA dashboard route resolving after refresh
dashboard-routeHTML
Create React App build folder deployed from a ZIP
build.zipZIP
Vite build index.html served at a clean URL
index.htmlHTML
Zipped dist folder deployed as a live site
dist.zipZIP
Hashed JavaScript bundle served with the right content type
app.4f3a9c.jsHTML
SPA dashboard route resolving after refresh
dashboard-routeHTML
Create React App build folder deployed from a ZIP
build.zipZIP
Static marketing site served on a custom domain
landing-pageHTML
Deep link to an inner route loading correctly
settings-routeHTML
Static export out folder deployed as a ZIP
out.zipZIP
Docs app running as a static build
docs-appHTML
Hashed CSS served with a one-year immutable cache
styles.a1b2.cssHTML
Static marketing site served on a custom domain
landing-pageHTML
Deep link to an inner route loading correctly
settings-routeHTML
Static export out folder deployed as a ZIP
out.zipZIP
Docs app running as a static build
docs-appHTML
Hashed CSS served with a one-year immutable cache
styles.a1b2.cssHTML
2,300+
people sharing files
4,400+
links shared
15,300+
times opened

Keep reading

Built for people who ship front-end builds

Front-end developer deploying a build

Front-end developers

Ship a Vite or React dist/ folder to a live URL without a CI pipeline.

Agency delivering a static front-end

Agencies & studios

Hand a client a live app on your own domain with SSL, as a deliverable.

Designer publishing a static site

Designers & indie makers

Put a portfolio, a landing page, or a docs app online in seconds.

Team hosting an internal static tool

Teams shipping internal tools

Host an internal dashboard or tool as a static SPA, with deep links that resolve.

What people say

In their words

Every link feature is free. Pro adds room and website hosting.

Compare every plan →
Free
$0

free forever

20 links · 500 MB total · every link feature

  • Password, expiry & view limits
  • Advanced analytics + notify-on-open
  • Custom name, your domain, no branding
  • Links never expire, nothing goes offline
Start free
Pro · Monthly
$9/mo

billed $9 every month

Unlimited links · 15 GB · 500 MB per file

  • Everything in Free, every link feature
  • Host up to 10 websites from a .zip
  • Links keep working if you cancel
  • Cancel anytime
Go Pro
Most popular
Lifetime
$99 once

one payment, no renewals

Unlimited links · 30 GB · pay once, keep it

  • Website hosting, with the most storage and sites
  • One payment, no subscription
  • Best value for steady client work
  • 30 GB storage, 500 MB per file
Buy Lifetime
Pro · Yearly
$4.08/mo

billed $49/yr

Unlimited links · 15 GB · billed once a year

  • Save 55% vs paying monthly
  • Everything in Free, every link feature
  • Host up to 10 websites from a .zip
  • Links keep working if you cancel
  • Cancel anytime
Go Pro

Coming from WeTransfer, DocSend or tiiny.host? See the comparisons →

Deploy-a-build questions

Whichever your tool produces: dist/ for Vite, build/ for Create React App, out/ for a static export. You can also zip the whole project, we detect the output folder (dist/build/out/public/_site) and serve from it, so you don't have to be exact.

Ship your dist/ folder as a live app, in seconds

Run npm run build, zip the output, and drop it here. Your app goes live at a clean URL with hashed assets, SPA routing, and a custom domain with SSL on Pro, no deploy pipeline.