V0 HOSTING
v0 hosting: put what v0 built at your own address
v0 generates Next.js with React, TypeScript, Tailwind and shadcn/ui. That is a project, not a page, so one build has to happen before a static host can serve it. This page covers the export, the static-export setting Next.js needs, and the two things that break first.
Free plan, free SSL, no credit card.
- 1
- build, run once on your machine
- out/
- the folder a static Next.js export produces
- 1
- free site with HTTPS, no card
- 25
- publishes a day while you keep regenerating
What you are holding
What v0 outputs
A Next.js project. v0 builds applications with Next.js, React, TypeScript, Tailwind CSS and shadcn/ui, so what you export is source code with a package.json and a dependency list, not a page a browser can open.
That matters more here than with most generators, because Next.js is a framework with a server in it. Its default build produces a server application, and a static host has nothing to run it with. The fix is a setting rather than a rewrite: Next.js has a static export mode that renders every page to plain HTML at build time and writes the result to an out folder. Set it, build, upload that folder, done. The Next.js deploy guide has the exact configuration line.
There is one case where none of this applies. If you asked v0 for a single component and it gave you one file that imports nothing but React, save it as a .jsx and upload that on its own. It is transformed in the visitor browser at the published address, with no build and nothing installed. The moment a shadcn/ui import appears in the file, that path is closed and you are back to building the project, because those components live in your project rather than on a public CDN.
The fork
Which of the two paths you are on
Open what you exported. The answer is visible in about five seconds and everything else on this page follows from it.
One file, no build
You copied a single component out of v0 and it imports nothing but React. Save it as a .jsx or .tsx file and upload it.
- React, the JSX runtime and a Tailwind runtime are served from our own edge, so the file runs as it is.
- Nothing is installed and nothing you upload runs on our servers. We serve static files.
- A
@/components/ui/...import means this path is closed: those are shadcn/ui files that live in the project. - The single-file runtime is described in full here, including what it declines to do.
A project, one build first
You exported the whole thing and there is a package.json in it. Run the static export once, then upload the folder it writes.
- Set
output: 'export'innext.config.js, then runnpm installandnpm run build. - Upload the
outfolder, as a folder or zipped. Not the project folder, and not.next. - Route handlers, server actions and anything under
app/apido not survive a static export. Next.js will tell you which ones at build time. - Full command and configuration in the Next.js deploy guide.
Step by step
Getting the code out of v0
v0 documents two ways off the platform. The GitHub route is the one its own docs describe in detail, and it is the one to use if the download ever gives you a repository containing only a README.
-
Open the project in v0
Not a single message in a chat: the project, so you get the whole file tree rather than the block that is currently on screen.
-
Download the ZIP, or sync to GitHub
Open the project menu and choose Download ZIP; the browser offers a Save As dialog where it supports one. v0 also has a bi-directional GitHub integration, which is the better route if you intend to keep changing the project in both places.
-
Install and check it runs
Run
npm install, thennpm run dev. If it does not run locally it will not run as a static build either, and finding that out now is cheaper. -
Switch Next.js to static export
Add
output: 'export'tonext.config.js. Next.js then refuses to build any route it cannot render ahead of time, which is the fastest way to discover what in the generated app was server-side. -
Build, then upload the out folder
Run
npm run buildand drop theoutfolder here. Pick a name and the page is live over HTTPS.
Stack from v0's own FAQ documentation at v0.app/docs/faqs, read 8 September 2026, which states that v0 builds with Next.js, React, TypeScript, Tailwind CSS and shadcn/ui, that you can export the code to work locally, and that it offers bi-directional GitHub integration. The Download ZIP label and its location are from v0's own changelog, also read 8 September 2026: the entry of 28 August 2026 states that Download ZIP shows a native Save As dialog where the browser supports it, and the entry of 19 June 2026 states that view-only members can download a chat's code as a ZIP from the project menu. Menu labels can change.
Who it is for
The people who reach for this
-
Developers
A generated interface at a URL a colleague can open, without adding a deploy target for something you may throw away on Friday.
-
Designers
A v0 concept shown as a working page on a real phone rather than as a screenshot of the v0 preview.
-
Marketing teams
A landing page generated in an afternoon, live at an address, without an engineering ticket to host it.
-
Founders without a team
The interface exists and now it needs to be somewhere people can see it. This is that step.
In detail
What you actually get
A static export publishes as it is
Once Next.js has written the out folder, there is nothing left to configure. It is HTML, CSS, JavaScript and assets, and that is exactly what we serve.
- Upload the folder directly or zip it first; both work.
- Up to 25 MB per upload on the free plan, 25 MB across the account.
- Nothing is installed on our side and nothing you upload is executed on our infrastructure.
- The Next.js guide carries the build command and the configuration line.
The address survives the next fifty prompts
Generated interfaces get regenerated. The URL belongs to the site rather than to the upload, so the link you already sent shows the current version.
- Up to 25 publishes a day on the free plan.
- From Pro, returning to the version that worked is one click.
- The swap is atomic, so a visitor never sees a half-published page.
It behaves like a site, because it is one
A v0 build at an address gets the same treatment as anything else hosted here, which is more than a preview link normally gets.
- Password protection from Starter, checked at the edge before a file is served.
- Visitor analytics from Pro.
- Expiring links from Starter, for a demo that should not outlive the pitch.
- Custom domains from Pro, $15 a month.
Troubleshooting
What breaks, and why
Four failures cover almost every v0 upload that does not work first time. The first two are specific to what v0 generates; the rest are true of any generated project.
-
The build fails on a route that uses a server feature
Why v0 scaffolds Next.js applications, and Next.js applications often contain route handlers, server actions or dynamic rendering. A static export has no server to run any of it, so the build stops and names the route.
Fix Either delete the server-side route if it was scaffolding you never used, or accept that this part of the app is not static. Only the static half can be published here. The Next.js guide covers which features survive an export.
-
A single .jsx you copied out of v0 renders blank or names a missing package
Why The component imports shadcn/ui, lucide-react or another package. Those are not fetched from a public CDN on your visitors' behalf, because that would run third-party code in their browser and hand that CDN their IP address.
Fix The live page lists the missing packages by name rather than rendering a blank screen. Export the whole project and build it instead: the imports resolve at build time, which is where they were meant to resolve.
-
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
Publishing a generated build costs nothing, which matters here more than elsewhere: most v0 projects are shown once and then regenerated.
- 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 the deepest content in this category and a page for v0 of its own. The rows below are the ones its own pricing and documentation make checkable.
| Droply | Static.app | |
|---|---|---|
| A Next.js static export | Upload the out folder as a folder or a ZIP. | Accepted as a ZIP of built output. |
| Runs the build for you | No. You build once locally and upload the result. | No. |
| Client-side routing | One free Single-page app switch, applied to the live site with no redeploy. | Not documented as a per-site setting. |
| Password protection | From Starter, enforced at the edge. | 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
Much of what v0 generates is a real application, and calling it a website does not make it static. Recognizing that before you upload is cheaper than discovering it afterwards.
- Your v0 app uses server actions, route handlers or a database. Those need a runtime; the static export drops them and the features that depended on them stop working.
- You want the project rebuilt every time you regenerate it in v0. There is no Git integration and no CI here: each version is a build you run and 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
Can I host a v0 project without Vercel?
Does v0 give me the code?
What does v0 actually generate?
Do I have to run a build?
Which folder do I upload?
out folder that a static Next.js export produces. Not the project folder and not .next. The Next.js deploy guide names the configuration line that produces it.