# Replit hosting: move the static output off the platform

Replit is a workspace with its own deployments attached. If what you built is a static front end, you do not need the platform to keep serving it. Download the project as a zip, build it, and the output lives at your own address instead.

## What Replit outputs

Whatever you built in it. Replit is a development workspace rather than a generator with one house stack, so the answer depends on your project: a single HTML page, a Vite front end, a Node server, or all three in one folder.

That makes the first step a reading exercise rather than a build. Open the file tree and look for a package.json. If there is none and there is an index.html at the root, you are holding a finished static site and can upload it as it is. If there is one, read the scripts block: a build script means there is a build to run and an output folder to find. If there is a server file that listens on a port, that part of the project is not static and no file host will run it.

The reason to move a static front end off the platform at all is what a workspace is for. It is an environment that keeps a session alive so you can work; a host is a thing that answers requests for the next three years without you thinking about it. Once the front end is built, it needs the second thing, and the second thing is cheaper and simpler than the first.

## Which of the two paths you are on

Look for a package.json. That is the whole test, and it takes a few seconds.

### Already static, no build

An index.html at the root with its CSS, JavaScript and images alongside it. Nothing to compile.

- Zip the contents of the folder, with index.html at the top level of the archive.
- Or upload the folder directly. Both are accepted.
- A single self-contained .html page can be dropped on its own with nothing around it.
- A single .jsx or .tsx works too, transformed in the visitor browser with no build.

### A project, one build first

There is a package.json with a build script. Install, build, and upload the folder it writes.

- Run npm install, then npm run build.
- Vite writes to dist; other frameworks differ. Check the guide for yours.
- Upload that folder, not the project root and not node_modules.
- A server file that listens on a port does not run here. Only the built front end does.

## Getting the code out of Replit

Replit documents a direct download, and a fallback for when a large project times out. Both are worth knowing before you need the second one.

1. **Open the project.** Open the workspace containing the files you want, not a fork or a template preview.
2. **Download as zip.** Replit documents selecting the three-dot menu at the top of the file tree and choosing Download as zip. Large projects can take a moment.
3. **If the download fails, zip it in the Shell.** Replit's documented fallback is to open a Shell, run zip -r project.zip ., then download project.zip from the file tree.
4. **Unzip and read the project.** No package.json and an index.html at the root means it is already static. A build script means one build to run first.
5. **Build if you need to, then upload.** Run the build, then drop the output folder here. Pick a name and it is live over HTTPS, at an address that does not depend on a workspace staying awake.

Source: Download steps quoted from Replit's own documentation at docs.replit.com/help/projects-and-files, read 8 September 2026, which states: select the three-dot menu at the top of the file tree and choose Download as zip, and that if the download fails you can open a Shell and run zip -r project.zip . then download project.zip from the file tree. Interfaces can change.

## What breaks, and why

A zip of a whole workspace is a different animal from a zip of a build, and the two failures below both come from that.

### The upload is enormous, or times out

Why: A workspace zip contains node_modules, a .git history and every file you ever created in it. That is frequently hundreds of megabytes of things a visitor will never request.

Fix: Upload the build output, not the workspace. If the project is already static, zip only the files the site needs: the HTML, the CSS, the JavaScript and the images.

### The app worked in Replit and does nothing here

Why: Replit was running a server for it. If the project has a file that listens on a port, that is the half that made it work, and a static host runs no code at all.

Fix: Publish the built front end here and host the server somewhere that executes code. If the project is mostly server, this is the wrong kind of host and it is better to know now.

### Every route except the home page returns a 404

Why: The app routes in the browser, so /about exists only once JavaScript has run. A static host asked for /about looks for a file at that path, does not find one, and answers 404 before your code loads.

Fix: Turn on the Single-page app switch in the site settings. Unknown paths are then served the root index.html and the client router takes over. Free on every plan, applied without a redeploy, and off by default because a multi-page site wants real 404s.

### The API keys the tool wrote into the code are now public

Why: AI tools fill in the value they can see, and a key in front-end code is readable by anyone who opens the page. No host can fix that: a published page is public by definition.

Fix: The deploy-time security check names the key it found. Rotate it, then move the call behind something that can hold a secret. Every plan, free included, and it never blocks the publish.

## What the free plan includes

Moving a finished front end off a workspace costs nothing here, and the free plan is a plan rather than a trial with a deadline.

- 1 live site on a real free plan, not a trial of a paid one, with HTTPS and no card to start.
- Up to 25 MB per upload and 25 MB of storage across the account.
- 5,000 visits and 5 GB of traffic a month.
- Up to 25 publishes a day, which is the number that matters when you are regenerating.
- The Single-page app switch, so a client-routed build works without paying for anything.
- The deploy-time security check, which warns about a stray .env file, a .git folder, a private key or an API key left in your JavaScript.
- A small Droply badge in the corner of the page. Removing it starts on Starter.
- Free sites are served noindex, so search engines do not list them. Search visibility starts on Starter.

## How this compares with the other host built for AI output

Static.app has a Replit page of its own. These rows come from its published pricing and documentation.

- **A workspace ZIP.** Droply: Accepted, extracted in a sandbox, with the real bytes checked rather than the file names. Static.app: ZIP upload is the documented path.
- **Upload a folder instead.** Droply: Yes, no archive required. Static.app: ZIP is the documented path.
- **Client-side routing.** Droply: One free Single-page app switch, applied live with no redeploy. Static.app: Not documented as a per-site setting.
- **Expiring links.** Droply: From Starter: six hours, a week, or a date you pick. Static.app: Not listed on any of its plans.
- **Loose .html file accepted.** Droply: Yes, dropped on its own with nothing around it. Static.app: No. Its Claude page states a loose .html file is not accepted and must be zipped.
- **Single .jsx or .tsx without a build.** Droply: Yes. It is transformed in the visitor browser at the published address. Static.app: No. Its Claude page says React-based artifacts need a self-contained HTML version first.
- **Free plan.** Droply: 1 site, 25 MB storage, no card, and a plan rather than a trial. Static.app: A 7-day trial with no credit card, then paid. 1 site and 50 MB during it.
- **Security check on every publish.** Droply: Every plan, free included: leaked keys, a stray .env, a committed .git folder. Static.app: Not offered.

Static.app figures checked 8 September 2026 on its own pricing page (free tier: 1 site, 50 MB, a 7-day trial with no credit card; Starter $5 a month or $60 a year for 2 sites and 500 MB with a custom domain; Medium $10; Large $15) and on its Claude hosting page, which states that a loose .html file is not accepted and must be zipped, that React-based artifacts need an extra step because you have to ask the model for a self-contained HTML version, and that Import from URL takes claude.ai and claude.site links. Product plans can change.

## When Droply is the wrong choice

Plenty of Replit projects are servers wearing a front end, and moving one here would publish the half that does not do the work.

- The project listens on a port, holds a database or handles logins. None of that runs on a static host.
- You want the workspace and the published site to stay in sync automatically. There is no Git integration here: each publish is an upload you make.
- The generated app has a database, a login screen or server actions. Those need a runtime; only the static half of it can be published here.
- You want a build to run here, on upload or on every push. There is no build step and no Git integration: you build locally and bring the output.
- You are running WordPress or another PHP application. A static export of it can be hosted here, but the application itself cannot.

## Frequently asked questions

### How do I download a project from Replit?

Replit documents selecting the three-dot menu at the top of the file tree and choosing Download as zip. If that fails on a large project, its documented fallback is to open a Shell, run zip -r project.zip . and download the archive from the file tree.

### Can I host a Replit project somewhere else?

The static part, yes. Download the project, run its build if it has one, and upload the output folder. Anything that listens on a port stays behind, because a static host runs no code.

### Do I upload the whole zip Replit gave me?

Usually not. That archive contains node_modules and the git history, which no visitor will ever request. Upload the build output, or just the files the site actually needs.

### How do I know whether my project needs a build?

Look for a package.json. No package.json and an index.html at the root means it is already static. A build script inside it means one build to run, and the deploy guides name the output folder for each framework.

### Why does every route except the home page 404?

Because the routing happens in the browser and a static host answers with a file or a 404 first. Turn on the Single-page app switch in the site settings; unknown paths are then served the root index.html. It is free and applies without a redeploy.

### Does the published site stay up if I stop using Replit?

Yes. Once the files are here they are served independently of anything on the original platform. That is the reason to move a finished front end at all.

### What happens to the secrets in my workspace?

They should not travel with the upload. The deploy-time security check reads what you published and names a .env, a private key or an API key if it finds one, on every plan including free.

### Can I put the site on my own domain?

Yes, from Pro at $15 a month, with the certificate issued and renewed for you. The free plan serves the site on a subdomain over HTTPS.

## Other AI tools

- [bolt.new hosting](https://droply.host/bolt-new-hosting)
- [Cursor hosting](https://droply.host/cursor-hosting)
- [Lovable hosting](https://droply.host/lovable-hosting)