REPLIT HOSTING
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.
Free plan, free SSL, no credit card.
- zip
- the documented way out of a Replit workspace
- 96
- file types accepted on the way in
- 1
- free site with HTTPS, no card
- 25
- publishes a day on the free plan
What you are holding
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.
The fork
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.htmlat 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, thennpm 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.
Step by step
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.
-
Open the project
Open the workspace containing the files you want, not a fork or a template preview.
-
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.
-
If the download fails, zip it in the Shell
Replit's documented fallback is to open a Shell, run
zip -r project.zip ., then downloadproject.zipfrom the file tree. -
Unzip and read the project
No
package.jsonand anindex.htmlat the root means it is already static. A build script means one build to run first. -
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.
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.
Who it is for
The people who reach for this
-
Developers
A front end that no longer needs a workspace to stay awake, on an address that costs nothing to keep.
-
Educators
A class project moved off a shared workspace and onto a link that keeps working after the term ends.
-
Students
A portfolio piece at a permanent address you can put on an application, rather than a workspace URL.
-
Anyone shipping a side project
The building is done. What is left is somewhere to put it, and that part should be dull.
In detail
What you actually get
A ZIP is a first-class upload
Replit hands you a zip, and a zip is exactly what this expects. There is no unpacking step for you to get wrong on our side.
- The archive is extracted in a sandbox, and its real bytes are checked rather than its file names.
index.htmlhas to be at the top level of the archive. The three ways that goes wrong.- Up to 25 MB per upload on the free plan, 25 MB across the account.
- Nothing inside the archive is executed on our infrastructure.
An address that does not depend on a session
The reason to move a finished front end at all: a host answers requests whether or not anyone is logged in anywhere.
- HTTPS with a real certificate, issued and renewed for you.
- The address stays the same across every republish.
- Custom domains from Pro, $15 a month.
- Expiring links from Starter, when a link is meant to be temporary on purpose.
Republish without re-sending the link
You will go back and change it. The address is fixed from the first publish, so iterating does not cost a new link each time.
- Up to 25 publishes a day on the free plan.
- From Pro, going back to the version that worked is one click.
- The swap is atomic, so a visitor never sees a half-published page.
Troubleshooting
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.githistory 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.
No card required
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.
Droply vs Static.app
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.
| Droply | Static.app | |
|---|---|---|
| A workspace ZIP | Accepted, extracted in a sandbox, with the real bytes checked rather than the file names. | ZIP upload is the documented path. |
| Upload a folder instead | Yes, no archive required. | ZIP is the documented path. |
| Client-side routing | One free Single-page app switch, applied live with no redeploy. | Not documented as a per-site setting. |
| Expiring links | From Starter: six hours, a week, or a date you pick. | Not listed on any of its plans. |
| Loose .html file accepted | Yes, dropped on its own with nothing around it. | No. Its Claude page states a loose .html file is not accepted and must be zipped. |
| Single .jsx or .tsx without a build | Yes. It is transformed in the visitor browser at the published address. | No. Its Claude page says React-based artifacts need a self-contained HTML version first. |
| Free plan | 1 site, 25 MB storage, no card, and a plan rather than a trial. | A 7-day trial with no credit card, then paid. 1 site and 50 MB during it. |
| Security check on every publish | Every plan, free included: leaked keys, a stray .env, a committed .git folder. | 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.