Vercel storage is a shorter list than most tutorials suggest. Vercel runs exactly two storage products itself: Vercel Blob for files, and Global Config for small, read-heavy configuration. Everything with a query language, Postgres, Redis, NoSQL, vector, comes from third-party providers through the Vercel Marketplace. The products once branded Vercel Postgres and Vercel KV do not exist under those names anymore. Picking correctly is mostly a matter of knowing which of those three doors to walk through, and when to walk past all of them.
The lineup changed in December 2024
The history matters, because a lot of published guidance still describes retired products.
In 2023 Vercel shipped four storage options at once: first-party Blob and Global Config, plus Vercel Postgres (powered by Neon) and Vercel KV (powered by Upstash). On August 28, 2024, Vercel announced the Vercel Marketplace and said both partner-powered products would move out from under the Vercel brand, starting that November, with no downtime and no work required from customers.
That migration finished. Vercel’s documentation now states it flatly: "Vercel Postgres is no longer available", with existing databases moved to Neon in December 2024, and "Vercel KV is no longer available", with existing stores moved to Upstash Redis in the same month.
The decision now has three doors:
- Vercel Blob: first-party object storage for files of any size, backed by Amazon S3.
- Global Config: first-party, globally replicated store for small values read constantly and written rarely.
- Vercel Marketplace: Postgres, Redis, NoSQL, and vector databases from Neon, Upstash, Supabase, AWS, Prisma, Nile, and others, provisioned from the dashboard and billed on your Vercel invoice.
If the platform is new to you, our introduction to Vercel as a frontend cloud covers the deployment model these products attach to.
Vercel Blob: object storage with a CDN in front
Blob is the file bucket: avatars, screenshots, cover images, video, PDFs, build artifacts, anything you would otherwise put in an S3 bucket. Vercel’s docs confirm S3 is the underlying infrastructure, which is where the quoted durability of 99.999999999% and availability of 99.99% come from.
Four specifications are worth knowing before you commit:
- Access mode is permanent: a store is public or private, and you cannot change it after creation. Public blobs are fetched straight from their URL. Private blobs are read through your own function with a token.
- Maximum file size is 5 TB, with multipart uploads recommended above 100 MB.
- The cache ceiling is 512 MB per blob. Anything larger misses cache on every single access, which converts a cheap read into a billable operation plus origin transfer every time.
- Stores are regional, created in one of 20 regions and not movable afterward.
Blob content is cached by Vercel’s CDN for up to a month by default, and deletes or overwrites can take up to 60 seconds to propagate. Vercel recommends treating blobs as immutable and writing new pathnames rather than overwriting, the same discipline that makes invalidation manageable on any content delivery network.
Blob is the wrong tool for structured records you need to query, filter, or join, because it has no query engine. If you are listing a prefix and filtering in application code to answer a question a WHERE clause would answer, you picked the wrong product.
Global Config: deliberately tiny, deliberately fast
Vercel renamed this product from Edge Config to Global Config on 29 July 2026. The SDK moved from @vercel/edge-config to @vercel/global-config and the environment variable from EDGE_CONFIG to GLOBAL_CONFIG, so existing code needs a migration.
Global Config is the one people misuse most, usually by trying to make it a database. It is a globally replicated key-value document read at the CDN edge. Vercel says the vast majority of reads complete within 15ms at P99 and often under 1ms, because data is replicated into every region rather than fetched from an origin. That suits feature flags, A/B test assignments, emergency redirects, and IP blocklists: values middleware needs on the hot path of every request.
The limits explain the intended use better than any description. Per Vercel’s Global Config limits, maximum store size is 1 MB on every plan since the July 2026 rename, up from the old 8 KB, 64 KB and 512 KB tiers. You get one store on Hobby and unlimited stores on Pro and Enterprise, with three connections per project. Writes take up to 10 seconds to propagate globally.
Even at 1 MB that is a configuration file, not a data store, and a great deal of published guidance still quotes the old 64 KB Pro ceiling. The 10-second propagation window also means you cannot read a value immediately after writing it and expect the new one.
One runtime caveat catches teams out: Vercel’s Global Config read optimizations are only available on the Edge and Node.js runtimes by default. Functions running Python, Go, or Ruby need Vercel to enable them on request.
Postgres and Redis come from the Marketplace now
For anything relational or cache-shaped, you install a provider. From the CLI that is one command:
vercel install neon
vercel install upstash
vercel install supabase
The command provisions the resource, connects it to the linked project, and pulls credentials into .env.local. The dashboard flow is the same with a plan picker. Either way, Vercel injects connection strings as environment variables and the usage lands on your Vercel bill at the rate you would pay going direct.
What you gain is consolidation: one invoice, one login, credentials wired up without copy-paste, plus an in-dashboard database browser with query, data-editing, and schema-graph tabs for AWS Aurora Postgres, Neon, Prisma Postgres, and Supabase.
Pricing shape differs by provider, which is the point of the Marketplace. Two live examples: Upstash Redis offers a free tier at 256 MB and 500,000 commands per month, then pay-as-you-go at $0.20 per 100,000 commands with storage at $0.25 per GB after the first free gigabyte, or fixed plans from $10 per month. Neon, per its Vercel-managed integration docs, injects both a pooled DATABASE_URL (through PgBouncer) and a DATABASE_URL_UNPOOLED direct string, and can spin up a copy-on-write database branch for every preview deployment.
Preview branching carries a footgun: branches are cleaned up when their Vercel deployment is removed, and Vercel provides unlimited deployment retention by default. Retention periods are an opt-in policy rather than a default expiry, so unless you configure one or automate cleanup, a preview branch never ages out on its own.
What Vercel storage actually costs
Neither first-party product carries a simple monthly price, so read the meter definitions before modelling anything.
Blob is metered on five axes: average stored size in GB-month, simple operations (a cache-miss URL read or a head() call), advanced operations (put(), copy(), list()), blob data transfer, and standard CDN edge requests plus origin transfer. Deletes are free, and cache hits do not count as simple operations, which makes cache strategy a cost lever rather than only a latency lever.
Two details in the Blob pricing docs surprise people. Browsing your own store in the Vercel dashboard bills as operations, because the file browser calls the same list() and put() APIs your code does. And operations are rate-limited per plan: 1,200 simple and 900 advanced per minute on Hobby, 7,200 and 4,500 on Pro. A bulk delete of 100 blobs counts as 100 operations against that ceiling.
Vercel’s worked example anchors the order of magnitude: 50 GB average storage, 120,000 uploads, and 2.5 million downloads totalling 350 GB of transfer at a 70% cache-hit ratio comes to $15.73 per month. Storage is the cheap part. Transfer is roughly 80% of that bill.
Storage choice is a function-runtime decision too
Where data lives interacts directly with how compute runs, and this is what separates a working prototype from a system that survives a traffic spike.
Fluid compute is now the default execution model for new Vercel projects, and it changes the database math. Functions reuse global state within a warm instance, so concurrent invocations share one connection pool instead of each opening its own. Vercel’s guidance is to create the pool in module scope and register it with attachDatabasePool from @vercel/functions, which closes idle connections before an instance suspends:
import { Pool } from 'pg';
import { attachDatabasePool } from '@vercel/functions';
const pool = new Pool({ connectionString: process.env.DATABASE_URL });
attachDatabasePool(pool);
Skip that helper and you get what Vercel calls phantom pool usage: suspended instances hold connections open, because idle timeouts do not run while suspended. One more rule is worth repeating because teams get it backwards. Set the pool minimum to 1, not the maximum; capping max connections at 1 does not reduce total connections and does hurt concurrency.
Runtime choice narrows things further. Edge runtime code cannot hold a TCP connection to Postgres, which is why Global Config and HTTP data APIs exist. Our breakdown of edge versus serverless execution on Vercel Functions covers where that boundary sits after the runtimes were consolidated. Isolated execution is catching up too: in May 2026 Vercel taught the Vercel Sandbox firewall to wait for Postgres’s deferred TLS upgrade before applying domain policy, so sandboxes can now reach hosted databases.
When to bring your own database instead
The Marketplace is convenient, not mandatory. Reach past it when any of these are true.
- The database is the product. If your data layer outlives your frontend, or you expect to run the same backend against a second host, keep the account relationship with the database vendor directly.
- You need the vendor’s full surface. A Vercel-managed Neon install locks plan changes, scaling settings, and member management into the Vercel dashboard, and the `neon auth` CLI command does not work against it.
- You want a backend, not just a database. Row-level security, auth, realtime, and storage under one roof is a different product category, and our guide to Supabase as an open-source backend platform covers the comparison most teams are actually weighing.
- Compliance dictates the region or the contract. Data residency rules and negotiated DPAs are easier to satisfy when you hold the contract with the processor.
Use Blob for files, use Global Config for the handful of values middleware reads on every request, and treat the Marketplace as a provisioning convenience rather than a lock-in decision. Nothing in the current lineup makes data hard to move, which is exactly the property that made the 2024 rebrand painless.
Frequently Asked Questions
Is Vercel Postgres still available?
No. Vercel’s documentation states that Vercel Postgres is no longer available, and existing databases were automatically moved to Neon in December 2024. New projects install a Postgres provider from the Vercel Marketplace instead. Neon, Supabase, AWS Aurora Postgres, and Prisma Postgres are all options.
What replaced Vercel KV?
Upstash Redis. Vercel KV was powered by Upstash from the start, and existing stores were migrated to the Upstash Marketplace integration in December 2024. Vercel’s docs now list Redis on Vercel purely as a Marketplace category.
Is Vercel Blob just S3 with a different label?
It runs on Amazon S3 underneath, and Vercel quotes S3’s durability and availability numbers directly. The differences are the developer surface and the delivery path: a TypeScript SDK, credentials injected automatically, CDN caching by default, and blob data transfer that Vercel says averages three times more cost-efficient than its standard fast data transfer.
Can I use Global Config as a small database?
Not sensibly. The maximum store size is 1 MB on every plan, and writes take up to 10 seconds to propagate globally. It is built for feature flags, redirects, and blocklists that are read on every request and changed occasionally. Anything with per-user records belongs in a real database.
Do I have to buy my database through the Vercel Marketplace?
No. Any externally hosted database works if you set the connection string as an environment variable. The Marketplace buys you unified billing, automatic credential injection, and a dashboard database browser. Going direct buys you the provider’s full account controls and CLI.
Which options have a usable free tier?
Vercel Blob and Global Config are both included on Hobby within usage limits, and Vercel cuts off access rather than billing you when a Hobby limit is exceeded. On the Marketplace side, free tiers belong to the provider: Upstash Redis offers 256 MB and 500,000 commands per month at no cost.
How do I stop serverless functions from exhausting database connections?
Create the connection pool in module scope so warm instances reuse it, register it with attachDatabasePool from @vercel/functions so idle connections close before an instance suspends, keep the pool minimum at 1 rather than capping the maximum at 1, and use rolling releases so a deploy does not bring every new instance online at once.
Can I change a Blob store from public to private later?
No. Access mode is set when the store is created and cannot be changed afterward, and the same applies to the store’s region. Plan for both up front, or create separate stores for public assets and private user content.