Skip to content
BataDB

CompareHeroku

Heroku bills it while it sleeps.BataDB doesn't.

Every Heroku Postgres add-on bills as long as it exists, and review apps start on an empty database. BataDB costs $0 while idle, and every branch comes with your data.

Side by side

What's in the box.

Every plan gets branching and point-in-time restore, Free included. Your agents get the same CLI and MCP server you do.

BataDB and Heroku, feature by feature
FeatureBataDBHeroku
Scale to zeroYes: After 5 idle minutesNo: Bills while it exists
Branches with your dataYes: Copy-on-write, one commandPartly: Forks from Standard up
No branch feesYes: NoneNo: Full plan price
Point-in-time restoreYes: Up to 30 days, includedPartly: Rollback from Standard up
Connection poolingYes: Built inPartly: Standard and up
CLI with JSON outputYes: --json on every API commandPartly: Some commands
MCP serverYes: 128 toolsPartly: Early development
One-command importYes: bata importPartly: Dump and restore

The bill

Watch the idle hours add up.

We priced the same workload on BataDB and on Heroku, then let the month run.

One small database, busy two hours a day and idle the rest.

  • BataDBPay as you go$0.58 a month
  • HerokuEssential-1$9.00 a month

Saved against Heroku, every month

$8.4294% less

The bigger workloads run on our Team plan: $69 a month with 5,000 compute-hours included.

Talk to us

Move

Moving over takes one command.

bata import copies your database from Heroku into a new BataDB project, then checks row counts and sequences on both sides.

From Heroku
npm install -g @batadata/cli
bata login
bata import --source "$HEROKU_DATABASE_URL" --name my-app
  • Use DATABASE_URL on port 5432, not DATABASE_CONNECTION_POOL_URL.
  • Add sslmode=require. Credentials can rotate, so copy them right before the run.

Move one database.Then watch the bill.