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.
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.
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.
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
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
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
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.
Set an end date or a view cap and the link stops on its own. Send a quote that expires Friday, or a preview that closes after five opens, without remembering to delete it.
Ship a Vite or React dist/ folder to a live URL without a CI pipeline.
Agencies & studios
Hand a client a live app on your own domain with SSL, as a deliverable.
Designers & indie makers
Put a portfolio, a landing page, or a docs app online in seconds.
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
“The admin interface is incredibly intuitive and set up exactly how a user actually thinks. My students all said it was easy to use and worked perfectly.”
JJasonTeacher · shares class materials
“The app is genuinely nice and easy to handle. I keep all my different app links in one place, my App Store and Play Store screenshots, and I organise my images and PDFs into albums with tags. The big storage means everything just lives here.”
EEvelynApp developer
“I handle contracts, invoices and legal files for several different organisations, so almost everything I send is password protected. Link in Seconds makes that simple, and I run my portfolio on a custom domain. It is easy to use and genuinely affordable.”
GGuy HenryFreelancer · contracts and invoices
Every link feature is free. Pro adds room and website hosting.
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.
Yes. Every asset is served with the exact MIME type the browser requires, text/javascript for JS, text/css for CSS, font/woff2 for fonts, and content-hashed bundles get a one-year immutable cache while HTML stays no-cache, so updates show immediately.
Turn on single-page-app mode. Unknown paths then fall back to your index.html with a 200, so deep links and refreshes let your router (React Router, Vue Router, and so on) resolve them instead of returning a 404.
Yes, if you export a fully static build (the out/ folder). Anything that needs a running server at request time, server components rendered per request, API routes, server middleware, is out of scope for static hosting; export static output or host on a platform that runs the server.
Run your build again, zip the output, and upload it, the same URL serves the new version, so links you've shared keep working. There's no CI pipeline and no redeploy command; replacing the ZIP replaces the site.
Yes, on Pro. Connect a domain or subdomain to your site with automatic SSL so visitors see your address in the URL bar. Without one, the site lives on its own linkinseconds address.
Static-site hosting is a Pro feature. Pro sites hold up to 500 files and 100 MB total; Lifetime raises that. Each site is served from its own isolated origin, so your app's JavaScript is fully sandboxed from ours.
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.