[{"data":1,"prerenderedAt":15},["ShallowReactive",2],{"$f0fMzjHTTBM8Zg5_6lFy64xKnZB8nXPky3WzCBPxiRAo":3},{"slug":4,"title":5,"description":6,"date":7,"tags":8,"draft":12,"readingMinutes":13,"html":14},"vercel-pricing","Vercel Pricing: What Drives the Bill","Vercel pricing past the $20 Pro fee: the monthly credit, what 1 million CDN requests really means, Active CPU vs memory, images, seats and spend limits.","2026-10-11",[9,10,11],"vercel","vercel pricing","cloud costs",false,6,"\u003Cp>Vercel pricing starts at $20 a month for Pro, and for a lot of projects that really is the whole bill. The trouble is that the $20 is a platform fee with a usage credit baked into it, and the moment you pass that credit everything turns into meters: requests, transfer, CPU time, memory, image transformations, seats. Most people only find out which meter matters when the invoice arrives.\u003C/p>\n\u003Cp>So this is the order I&#39;d go through it in. All numbers are from \u003Ca href=\"https://vercel.com/pricing\">vercel.com/pricing\u003C/a> and the \u003Ca href=\"https://vercel.com/docs/pricing\">pricing docs\u003C/a> as of October 2026. Vercel changes this often (the CDN pricing below is newer than most blog posts about it), so check the date on anything else you read.\u003C/p>\n\u003Cimg src=\"/blog/vercel-pricing/vercel-pro-bill-meters.webp\" alt=\"Vercel Pro bill broken into meters: $20 fee with $20 credit, CDN requests, function CPU and memory, images, seats\" width=\"1600\" height=\"900\" loading=\"lazy\">\u003Ch2>The $20 is a fee and a credit\u003C/h2>\n\u003Cp>Pro is a $20 monthly platform fee. It includes one deploying seat and $20 of usage credit. The credit applies to infrastructure from the first unit you use, expires at the end of the month, and doesn&#39;t roll over. Once it&#39;s gone, you&#39;re on on-demand rates for everything.\u003C/p>\n\u003Cp>Hobby is free, but it&#39;s for non-commercial personal use only. That&#39;s in Vercel&#39;s \u003Ca href=\"https://vercel.com/docs/limits/fair-use-guidelines\">fair use guidelines\u003C/a>, and it&#39;s the first thing I&#39;d fix if a client&#39;s business site is running on a Hobby account. When Hobby hits a limit, things stop (new images fail to optimize with a 402, for example). When Pro passes the credit, things keep running and you get billed. Different failure mode, and you should know which one you&#39;re on.\u003C/p>\n\u003Cp>Seats are the quiet one. Every extra person who can deploy is $20 a month. Viewer seats are free, so the designer who only comments on previews doesn&#39;t need a paid seat.\u003C/p>\n\u003Ch2>CDN: what 1 million requests actually is\u003C/h2>\n\u003Cp>Pro now includes the lowest tier of what Vercel calls \u003Ca href=\"https://vercel.com/docs/pricing/flat-rate-cdn\">Flat Rate CDN\u003C/a>: 1 million CDN requests and 1 TB of data transfer a month. Past that, the tiers are $20 a month for 10M requests, $100 for 50M and $300 for 150M (all with 50 TB transfer). If a month goes over your tier, you&#39;re moved up at the start of the next cycle, so a one-day spike doesn&#39;t change the bill.\u003C/p>\n\u003Cp>That sounds generous until you count requests the way the CDN does. A request is every file, not every page view. A Next.js page that loads 30 JavaScript chunks, a few fonts, a favicon and 10 images is around 45 requests for one visitor on a cold cache. Divide 1 million by 45 and you get roughly 22,000 page views. Vercel&#39;s own docs put the included tier at about 33,000 requests a day, which sounds like a lot until you see it&#39;s maybe 700 visitors&#39; worth.\u003C/p>\n\u003Cp>Two things push this up faster than people expect. Bots, because a crawler loading every page of a 5,000-page site is a few hundred thousand requests by itself. And prefetching: Next.js \u003Ccode>&lt;Link&gt;\u003C/code> prefetches routes as they scroll into view, so one visitor scrolling a long listing page can request pages they never open. Neither is wrong. You just pay for it.\u003C/p>\n\u003Cp>The bot part has a cheap fix now. Since May 2026, traffic that the \u003Ca href=\"https://vercel.com/changelog/web-application-firewall-mitigated-traffic-is-free-on-vercel\">Vercel Firewall\u003C/a> denies, challenges or rate-limits doesn&#39;t count toward CDN requests or data transfer. A rate-limit rule on the paths scrapers hammer costs nothing and takes those requests off the bill.\u003C/p>\n\u003Cp>Flat Rate CDN also has rules. Vercel says it isn&#39;t for bulk file downloads or sites where media delivery is most of the bandwidth. If that&#39;s you, put the big files on a storage bucket with a cheaper CDN in front, not on Vercel.\u003C/p>\n\u003Ch2>Functions: CPU and memory are billed differently\u003C/h2>\n\u003Cp>Server-side code runs on what Vercel calls Fluid compute, and it&#39;s billed on three meters (\u003Ca href=\"https://vercel.com/docs/functions/usage-and-pricing\">function pricing\u003C/a>):\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Active CPU\u003C/strong>: only while your code is actually running. $0.128 per hour in the cheapest US regions (iad1, cle1, pdx1), up to $0.221 in São Paulo.\u003C/li>\n\u003Cli>\u003Cstrong>Provisioned Memory\u003C/strong>: for as long as the instance is alive with a request in flight, including while it waits on a database or an API. $0.0106 per GB-hour in the cheap regions.\u003C/li>\n\u003Cli>\u003Cstrong>Invocations\u003C/strong>: $0.60 per million requests, counted whether they succeed or fail.\u003C/li>\n\u003C/ul>\n\u003Cp>The split matters. Waiting on a slow database doesn&#39;t cost CPU any more, but it still costs memory, because the instance is held open. A function with 2 GB configured that spends 8 seconds waiting on an LLM response pays for 2 GB times 8 seconds on every call. If your API routes call slow third-party APIs, memory size is the setting to look at first, and most functions don&#39;t need the default.\u003C/p>\n\u003Cp>Region is the other cheap win. If your database is in us-east-1 and your functions are in Frankfurt, you pay 44% more for CPU and you add a transatlantic round trip to every query. Put functions next to the data.\u003C/p>\n\u003Ch2>Image Optimization\u003C/h2>\n\u003Cp>The \u003Ccode>next/image\u003C/code> component is great until you look at what it costs at scale. Vercel bills \u003Ca href=\"https://vercel.com/docs/image-optimization/limits-and-pricing\">image transformations\u003C/a> at $0.05 to $0.0812 per 1,000, on every cache miss, plus cache reads and writes.\u003C/p>\n\u003Cp>The cache key includes the width and quality, so one source photo can turn into many transformations: one for each size in your \u003Ccode>deviceSizes\u003C/code>, times every quality value you use. A marketplace with 20,000 user-uploaded photos and a dozen widths can do six figures of transformations a month without anyone noticing. Fixes, cheapest first: trim \u003Ccode>deviceSizes\u003C/code> and \u003Ccode>imageSizes\u003C/code> to what you actually render, use one \u003Ccode>quality\u003C/code> value, raise \u003Ccode>minimumCacheTTL\u003C/code> for images that never change, and lock \u003Ccode>remotePatterns\u003C/code> down so nobody can use your optimizer to resize images from other sites. For user uploads, I&#39;d usually resize once at upload time and serve the result as a plain file.\u003C/p>\n\u003Ch2>The add-ons that sit in the invoice\u003C/h2>\n\u003Cp>These are billed monthly and don&#39;t count toward spend limits: Password Protection is $20 per project per month, SAML SSO $300, Static IPs $100 per project, Observability Plus $1.20 per million events, Web Analytics Plus $10, Speed Insights Plus $10 per project. Each one is fine. Five of them switched on for a test two years ago and forgotten is $100+ a month for nothing. Open Settings, Billing, Add-Ons and switch off what nobody uses.\u003C/p>\n\u003Cp>There&#39;s also a new line coming for older teams: \u003Ca href=\"https://vercel.com/changelog/deployment-storage-pricing-expands-to-existing-teams\">Deployment Storage\u003C/a>, the space your old deployments and function bundles take, billed at $0.10 per GB-month. Default retention moves to 30 days on October 23, 2026 unless you opt out. Unless you really roll back to builds from last spring, let it happen.\u003C/p>\n\u003Ch2>Spend Management: set it up on purpose\u003C/h2>\n\u003Cp>Vercel&#39;s \u003Ca href=\"https://vercel.com/docs/spend-management\">Spend Management\u003C/a> lets you set an on-demand budget and get emails at 50%, 75% and 100% of it (SMS at 100%), call a webhook, or pause every production deployment when you hit it. New Pro customers start with notifications at $200.\u003C/p>\n\u003Cp>Two caveats from the docs. The budget only alerts unless the \u003Cstrong>Pause Production Deployments\u003C/strong> switch is on, so check that it&#39;s in the state you want. And Vercel checks spend every few minutes, not continuously, so usage keeps running for a bit after you cross the line. A paused project shows visitors a \u003Ccode>503 DEPLOYMENT_PAUSED\u003C/code> and has to be resumed by hand, project by project. For a business site I&#39;d rather have alerts plus a webhook to Slack than a hard pause. For a side project, pause it.\u003C/p>\n\u003Cp>Also, Pro teams can now get a partial invoice in the middle of the cycle once on-demand usage passes a threshold. If your card gets charged on the 14th, that&#39;s why, and it&#39;s a good time to open the Usage page.\u003C/p>\n\u003Ch2>Where to look\u003C/h2>\n\u003Cp>The Usage page in your team dashboard breaks spend down by product, and \u003Ccode>vercel usage\u003C/code> in the CLI can split CDN usage by day, which is how you find the day the bot showed up. Read it in this order: seats and add-ons (fixed money), CDN requests, function memory, image transformations. That&#39;s usually most of it.\u003C/p>\n\u003Cp>If you go through all of this and the bill still doesn&#39;t add up, send it to me. Cutting bills like this is what my \u003Ca href=\"/cloud-cost-optimization\">free cloud cost optimization\u003C/a> is for: I look at the invoice, the usage graphs and the code behind them, and you only pay out of what I actually save. Sometimes the answer is moving part of it off Vercel, and I&#39;ll tell you when it is.\u003C/p>\n",1791696796997]