Do you actually own your Replit site?
A Replit app is ordinary code you can download or push to GitHub any time. What makes Replit different is how much of the rest of the site Replit runs for you: hosting, database, sign-in, storage, managed API keys. That integration is the convenience and the dependency. This guide is honest about both.
The short answer
You own the code of a Replit app, and getting it out is easy: the project can be downloaded as a ZIP or pushed to a GitHub repository from the built-in Git pane at any time, and Replit’s documentation says you own the code Agent generates. What you don’t own by default is most of what surrounds the code. Replit Agent builds on Replit’s own services: its hosting, its databases, Replit Auth for sign-in, App Storage for files, and managed credentials for Stripe and AI models. Each of those is convenient precisely because Replit runs it, and each is a dependency until you replace it. A Replit site is portable at the code layer and integrated at every other layer, and how much that matters depends on which services the app uses.
The tradeoff, honestly
Replit isn’t a trap for being integrated. An app whose database, sign-in, storage and API keys are all provisioned in one place with no setup is genuinely easier to build and run, and for many projects that’s the right deal. The cost is that leaving means replacing each service rather than moving it, and one of them, Replit Auth, can’t be exported at all. Ownership here means knowing which services your app uses, so the deal is one you chose rather than one you discover on the way out.
What you should own
| Layer | Yours when |
|---|---|
| Domain | It’s in a registrar account you can sign in to. A Replit-bought domain lives in Replit until transferred out through support; see the builder-domain guide. |
| Source code | It’s pushed to a GitHub repository under your account, or you hold a current ZIP. |
| Hosting | You accept Replit publishing as a rented service, or a host you control runs the app from the repository. |
| Database | You have a dump of the production database and, ideally, it runs on a Postgres provider in your own account. |
| Sign-in | Users sign in through a provider you own, such as Clerk, rather than Replit Auth. |
| Files | Uploaded objects are downloaded and in a storage account of yours. |
| Credentials | Every key in Secrets was issued from an account you own; Stripe and AI models use your keys, not Replit’s. |
What Replit runs by default
- Hosting, through publishing to a
replit.appaddress or a custom domain, on Google’s infrastructure. On the free Starter plan a published app expires after 30 days. - Two databases: a development database on Replit’s own infrastructure (since December 2025), reachable only from inside Replit, and a production database on Neon, reachable from anywhere with its connection string. Replit keeps one daily restore point for the production database.
- Replit Auth, which signs users in with Replit accounts through Replit’s shared login apps. Only Agent can set it up, and there’s no documented user export.
- App Storage, Google Cloud Storage with one bucket per project.
- Secrets, encrypted, viewable in an “Edit as .env” form, never included in a ZIP or a push.
- Managed credentials for Stripe (when connected through Replit’s Marketplace app) and for AI models through Replit’s integrations.
Moving toward a repo-owned setup
You can do these in any order, and stop wherever the tradeoff suits you.
- Push to GitHub. Link GitHub in Replit’s connected services, initialize the repository in the Git pane if needed, connect it to a repository under your account, and push. Agent’s checkpoints are Git commits, so history comes with it. Turn on auto-sync if you want pushes to happen without clicking.
- Export the secrets by hand. Edit as .env, copy, store in your password manager. Check both development and deployment secrets.
- Dump the production database with the connection string from the Database tool’s Settings tab, which works from any Postgres client; the development one has to be dumped from Replit’s Shell.
- Replace Replit Auth while the app is still in Replit. Replit’s documented migration lands in a Clerk tenant that Replit manages; moving to a Clerk app you own is a support request, and no documented path carries users into it. The Replit Auth guide separates a new site from a live one with users and gives the safe sequence.
- Download App Storage objects and note their addresses.
- Create your own keys at Stripe and your AI provider, and store them as secrets.
- Prove the deployment path by running the app from the repository on a host you control. Replit doesn’t document this; a developer or agent sets it up from
.replitandpackage.json.
The full sequence is in moving a Replit site to GitHub and your own hosting. Steps 1 and 2 alone make the code yours and recoverable; the rest is what makes the whole site movable.
What may not move automatically
- Replit Auth users. No export. Migrate to Clerk first, ideally to a Clerk app you own rather than the Replit-managed one.
- Secrets, which never leave except by hand, and which the
.cachefolder can leak if you zip the project yourself. - The development database, which can’t be reached from outside Replit.
- Managed credentials for Stripe and AI integrations, which authenticate through Replit.
- Code that reads Replit’s environment: the
REPLIT_DOMAINS,REPLIT_DEPLOYMENT,REPL_IDandREPL_OWNERvariables, and the@replit/object-storageclient, each of which needs replacing off-platform. - The project itself, which can’t be transferred directly between personal accounts; the route is sharing and forking, without secrets, database or publishing settings.
What happens if you stop using Replit
What Replit’s documentation says, and only that; the cancellation guide compares all four builders.
- Cancelling keeps the plan until the end of the billing period, then moves the account to Starter. Replit warns that before that transition, published apps may go offline, custom domain connections are removed and storage is reduced, and tells you to download anything you want to keep first.
- Downgrading deletes nothing; projects and data stay intact, and the plan reduces what it includes going forward.
- Continued payment failures can lead to published apps being suspended, after a 24-hour grace period.
- A Starter plan’s published app goes down after 30 days and can be republished.
- Free accounts inactive for a year can be terminated and their apps deleted; paid accounts aren’t subject to inactivity termination.
- Deleted projects are recoverable for 30 days; deleting the account purges everything, unrecoverably.
- Databases have a seven-day soft-delete window.
What we could not verify: who the registrar is for domains bought through Replit, whether custom domains need a paid plan, and what happens to a published app’s custom domain when the account lapses.
Ownership checklist
- The app is pushed to a GitHub repository under my account, and I’ve opened it.
- I have a copy of every secret, from both the development and deployment stores, in my password manager.
- I have a dump of the production database and know which provider runs it.
- I know whether the app uses Replit Auth, and if so, whether I’ve migrated to Clerk or accepted the dependency.
- I know whether the app uses App Storage, Stripe through Replit, or Replit’s AI integrations, and what each would need replacing with.
- I can sign in to the registrar that holds the domain.
- I know my plan, whether the published app expires, and that my account isn’t at risk of inactivity deletion.
The real test
Could another developer, or another AI coding agent, take over this site tomorrow without rebuilding it?
For a Replit app pushed to GitHub with its secrets exported and no Replit-only services, yes. For an Agent-built app using Replit Auth, App Storage and managed keys, the honest answer is “the code, yes; the running site only after each service is replaced”. That isn’t a reason to leave; it’s the thing to know before you depend on it. The portability test scores each layer.
Sources
The rules and product behaviour described above were checked against these pages when the guide was last updated. If something here has changed, these are the places to look.
- Projects and files · Replit
- Manually copy projects · Replit
- Git interface · Replit
- Secrets · Replit
- Development and production databases · Replit
- Connection details · Replit
- Authentication (Replit Auth) · Replit
- Migrate auth to Clerk · Replit
- Clerk auth · Replit
- Subscriptions help · Replit
- Shared responsibility model · Replit
- App Storage · Replit
- Deployment types · Replit
- Custom domains · Replit
- Domain purchasing · Replit
- Stripe payments · Replit
- Replit AI integrations · Replit
- Starter plan · Replit
- Changing your plan · Replit
- About usage-based billing · Replit
- Account inactivity · Replit
- Deleting your data · Replit
Keep going
Related guides
Or go back to the overview of what owning your site means, which ties all of these together.
How to move a Replit website to GitHub and your own hosting
What Replit lets you take with you today: pushing to GitHub, downloading the project, the Replit database, auth and storage services and how portable each is, deployments and custom domains, and the migration sequence.
About a 9 minute read
Is your AI-built website actually portable?
A concrete portability test for a website built with an AI tool: nine questions about the code, the accounts, the hosting, the domain, the data, the credentials and the deployment path, with a way to score where you stand and what to fix first.
About a 7 minute read