What database does Base44 actually use (and how to reach your data)?
Daniel Frishtik
Founder of EscapeBase44 ·
Your Base44 app runs on Base44's one shared backend, and your data lives in Base44's own MongoDB database. You can't connect to that database, and no part of it runs on accounts you own. It's MongoDB by the way, not Supabase or Postgres like a lot of people assume. What you do get is the Data dashboard, a CSV export per table, and scripts that run through their SDK. If you need a database you can actually open, query and back up, your app has to run on its own backend. That's exactly what a migration gives you, and it doesn't mean rebuilding your app.

Base44 runs on MongoDB, not Supabase or Postgres
Every table you see under Data in your dashboard is really a collection of documents in Base44's MongoDB database. It's why your data behaves the way it does: you can add a field whenever you want without running any migration, because the database doesn't enforce your schemas, they just describe your records. And there are no foreign keys anywhere. Records just point at each other by id, and the app itself is what enforces those relationships.
If you've read somewhere that Base44 runs on Supabase -- it doesn't. Lovable does, so people mix the two up all the time, and there are literally articles out there saying Base44 is Supabase under the hood. Base44 built its own backend, on MongoDB. This matters because so many exit plans start with "I'll just move my data to my own Supabase", and that plan is pointed at the wrong kind of database before it even starts.
You can actually see the database peek through sometimes. When it has a bad day, apps throw errors like pl-0-us-west-2.jmgvw.mongodb.net: timed out. That mongodb.net address is MongoDB Atlas, MongoDB's hosted service, running on Amazon's cloud. Honestly, that error message is the closest you'll ever get to seeing your own database.
There is one Base44 backend, and every app runs on it
A Base44 app is two separate things. There's the code you can see, the React frontend and your backend-function files. And then there's the backend on Base44's servers: the database, the login system, the endpoints your app calls, the hosting. You only ever get the first part. And here's the thing most people don't realize: that backend is not some server Base44 set up for your app. It's one shared Base44 backend, and every single app they host calls that same backend for everything: logins, reading records, running functions, everything.
That's why downloading your code changes nothing. You can run it on your own computer and it still calls Base44 for every piece of data, because there's nowhere else the data exists. Your records sit on Base44's servers in the US, in the same shared infrastructure as everyone else's apps.
You can't connect to the Base44 database from outside
There's no connection string in Base44. Not in the dashboard, not in any plan, not in the CLI. A connection string is the address-and-password line every normal database hands you, the thing you paste into a database tool to open your data. Base44 has nothing to hand you, because there is no database of yours to point it at. Your records are rows inside Base44's shared database, and their backend is what keeps each app seeing only its own data. So this isn't a missing feature. There's genuinely nothing they could hand you.
You'll feel this the first time you need to fix something in your data. Say you want to run one query across all your records, or update one field on two hundred rows. The dashboard gives you filters and editing one row at a time. So people end up building throwaway admin pages inside their own app, or asking the AI to write a cleanup function, and then the bulk update crawls through rate limits in batches of a few dozen. Stuff that takes one line in a normal database turns into an afternoon.
Every way to reach your Base44 data today
To be fair, Base44 does give you a few ways to work with your data. Let me go through them, because each one stops earlier than you'd hope.
- The Data dashboard. View, search, filter, add and edit records one row at a time, and restore deleted records for 30 days. Totally fine for small fixes. It's just not a database tool, and it was never meant to be one.
- CSV export, one table at a time. The only data export Base44 has. Open a table, then More Actions and Export. You get the fields Base44 exposes and nothing else. The User table, for example, comes out without any of the login data behind it, so you can't actually recreate your users anywhere from that file.
- CSV import. Only appends new rows. The obvious move, export a table, fix it in a spreadsheet, import it back, doesn't work: you get duplicates instead of updates.
- Code exports. The ZIP and the GitHub sync (Builder and up) give you code. None of your data is in there.
- The CLI. The newest one, from Base44's developer platform.
base44 execruns scripts against your app through the SDK, and it can genuinely do bulk work. But it runs through Base44's API, against Base44's server, with your user's permissions. So bulk work becomes possible, but you're still going through their backend, you never actually touch the database. Andbase44 eject, despite the name, just copies your schemas into a brand-new Base44 backend with an empty database.
So that's the whole list. You can look at your data, you can script against it through their API, and you can download spreadsheet copies table by table. What you can't do, with any of it, is make a real backup of your app, one you could actually restore somewhere if you ever needed to. The users can't come back in, and neither can everything else that makes the app run.
See exactly what Base44 export includes (and what it doesn't)Plugging in your own database doesn't free your data
You can wire an outside database into a Base44 app. A backend function can call Supabase, Firebase or anything else with an API, and plenty of people use that for extra data they want to control. But it doesn't change anything about the data your app already runs on. Your records, your users, the login system, the permission rules, all of that stays in Base44's database, because Base44's backend is the thing reading and enforcing it. The app literally can't run without it.
So what you end up with is a second database on the side, while your actual app data is exactly as locked in as before. Getting the real thing out, the records your app runs on, means the app has to stop calling Base44's backend altogether.
The only database you can control is one your own app runs on
And honestly, I don't think direct database access is ever coming. It's not an oversight. Your app calling their backend is the whole business model, it's exactly what keeps the subscription going. So if you want a database you can actually open, there's really one way: your app has to run on its own backend, with its own database.
Getting there takes two things. First, your data has to come out in a usable shape: records keeping their ids and relationships, users that can still log in, files, schemas, permission rules, settings. And then something has to actually run it, a backend that behaves like Base44's, so logins, permissions, functions and every screen keep working like before. If you're technical and your app is simple enough, you can honestly build that replacement yourself, and AI tools help a lot. But the more Base44 features your app uses, the more you end up rebuilding Base44 itself piece by piece, then testing every single flow it used to just handle for you.
I hit this exact wall with my own app. Getting the data out turned out to be the easy half. I could pull my records out, but then there was nothing that could actually run them. So I ended up reverse-engineering Base44's entire backend, every endpoint, how apps are stored, how everything works under the hood, until apps genuinely couldn't tell the difference. That became EscapeBase44.
What your backend and database look like after the migration
EscapeBase44 takes the app you already built and moves it, as is, onto accounts you own. It deploys the backend I reverse-engineered, a full replacement for Base44's, so the app behaves exactly like it did before. Every record, every user, every file, schema, permission rule and setting moves with it.
All your data gets transferred to your own database: a MongoDB Atlas cluster created in your own account, which you can open straight from MongoDB's dashboard. It's the same database technology Base44 runs on, so nothing gets translated and nothing gets rebuilt. And this time there's a connection string, because the cluster is yours. Connect MongoDB Compass or whatever tool you like, run any query you want, fix ten thousand records in one command, take backups whenever you feel like it. Atlas is free until you have serious traffic. And your users keep their accounts and log in with the same passwords they already have.
The complete code, backend included, lands in a private GitHub repo you own, and any change you push deploys automatically. You can keep changing the app through an AI chat, just like you did in Base44. You own the app, its database and the infrastructure it runs on, with no Base44 or EscapeBase44 in the picture anymore.
Your app can run on a backend and database you actually own.
Base44 backend and database FAQ
What database does Base44 use?
MongoDB. Base44 stores every app's records as documents in its own MongoDB database, behind its own backend server. So if your exit plan assumes Postgres or Supabase, it's aimed at the wrong database.
Is Base44 built on Supabase?
No. Lovable is the builder that pairs with Supabase; Base44 runs its own backend on MongoDB. Articles claiming otherwise are just mixing up the two platforms.
Can I connect to my Base44 database with MongoDB Compass or another client?
No. Base44 never gives out a connection string, because your records live inside its shared database, not in a database of your own. The dashboard and the SDK are the only ways in.
How do I export my data from Base44?
In the dashboard, open Data, select a table, then More Actions and Export. You get a CSV per table with the fields Base44 exposes. Users' login state isn't included.
Can I make a full backup of a Base44 app?
Not a restorable one. You can save code exports and per-table CSVs, but users can't be imported back, and imports only append rows. There's no way to rebuild a working app from what you can download.
Can Base44 connect to an external database?
A backend function can call one for extra data. But your app's own records, users and permissions stay in Base44's database, so an external database doesn't make you any less dependent on Base44.
Where does Base44 store my data?
On Base44's servers in the US, by default. Putting your app's data in a specific country you choose means moving the app onto infrastructure you pick.
Does the migrated database use foreign keys?
No, and neither does Base44. Records reference each other by id and the app enforces the relationships, exactly like before the migration. That's part of why everything behaves the same afterward.
What database do I get after migrating with EscapeBase44?
Your own MongoDB Atlas cluster, created in your own account, with a normal connection string. Open it with Compass or any MongoDB tool, run any query, back it up. It's yours.