Vercel vs AWS cost for a small SaaS
· Tejo
The short answer: at low traffic, both bills are small, and the difference is a few dollars a month. Do not move platforms for cost alone. What differs is how each bill grows, and that is worth knowing before you pick.
All prices below are list prices I checked on 9 October 2026, in US dollars. AWS prices are
for us-east-1. Providers change prices, so check the linked pages before you rely on any
number here.
How a Vercel bill is built
From vercel.com/pricing, the Pro plan:
- $20 per month per developer seat. Viewer seats are free.
- A $20 usage credit each month, shared across resources.
- Fast Data Transfer: 1 TB per month included, then from $0.15 per GB.
- Compute: Active CPU from $0.128 per hour, provisioned memory from $0.0106 per GB-hour, and invocations from $0.60 per million.
Two things drive this bill. The first is seats: a team of 3 developers starts at $60 a month before any usage. The second is usage past the credit, mostly compute and transfer.
How an AWS bill is built
An SST app on AWS bills per service. For a typical SaaS that means Lambda, DynamoDB, a CDN, and a few small lines.
Lambda (pricing):
- $0.20 per million requests.
- $0.0000166667 per GB-second of compute on x86.
- A free tier of 1 million requests and 400,000 GB-seconds per month. Check that your account qualifies.
ShipPad’s API is a Lambda function with a function URL, not API Gateway. That removes the API Gateway per-request fee. If your stack uses API Gateway HTTP APIs, add about $1.00 per million requests (pricing).
DynamoDB on-demand (pricing):
- $0.625 per million write request units.
- $0.125 per million read request units.
- $0.25 per GB-month of storage, with the first 25 GB free.
The DynamoDB free tier for requests applies to provisioned capacity, not on-demand. On on-demand, you pay for every request from the first one.
CloudFront serves the static site and assets. It now has both pay-as-you-go pricing and flat-rate plans, including a free one. See CloudFront pricing for current limits.
A worked example: DynamoDB cost for a small SaaS
Say your SaaS does 1 million writes and 5 million reads a month, and stores 2 GB.
- Writes: 1 million × $0.625 per million = $0.63
- Reads: 5 million × $0.125 per million = $0.63
- Storage: 2 GB is under the 25 GB free allowance = $0
That is about $1.25 a month. Two details change the number in real use:
- Each global secondary index (GSI) costs writes too. When you write an item that appears in an index, DynamoDB writes to that index as well, and bills for it. ShipPad’s table has 3 GSIs, so one logical write can use up to 4 write units. At 4 units per write, the write line above becomes $2.50.
- Item size matters. One write unit covers 1 KB. One read unit covers one strongly consistent read up to 4 KB, or two eventually consistent reads.
Scans are the real cost risk. A scan reads every item in the table and bills for all of it.
ShipPad avoids them with collection indexes: each entity type you need to list has a
static partition key on a GSI, such as USERS or LEADS, so “list all” is a query, not a
scan.
A worked example: Lambda
Say 2 million requests a month, 100 ms average duration, 1,024 MB of memory.
- Compute: 2,000,000 × 0.1 s × 1 GB = 200,000 GB-seconds. That is under the 400,000 free GB-seconds, so $0.
- Requests: 2 million minus 1 million free = 1 million × $0.20 = $0.20.
Without the free tier, compute would be 200,000 × $0.0000166667, about $3.33, plus $0.40 for requests.
I do not compare this line by line with Vercel. Vercel bills Active CPU time, which excludes time spent waiting on I/O, so the same function can bill quite differently on each platform. Measure your own workload.
The small lines on AWS
These are easy to miss:
- CloudWatch Logs. You pay to ingest and store logs. Verbose logging on a busy function can cost more than the function. Set a retention period.
- Point-in-time recovery on DynamoDB bills by table size. ShipPad turns it on, because restoring data matters more than a few cents.
- SES bills per email sent.
- Route 53 bills per hosted zone and per query.
What AWS costs you that Vercel does not
Time. You set up the account, the domain, IAM, SES production access, and alarms. Nobody watches the bill for you. Use the AWS Pricing Calculator with your own numbers, and set an AWS Budgets alert on day 1.
Where the gap comes from
At low traffic, the Vercel seat price is most of the Vercel bill, and the AWS bill is close to zero. As traffic grows, both grow with usage, at different rates for compute and transfer. If you run several products, each idle AWS stack costs very little, because Lambda and on-demand DynamoDB scale to zero.
To try your own traffic, function duration, and team size, use the cost calculator on the ShipPad home page. It uses the same prices as this post.
I built ShipPad for people who already want to be on AWS. It is an SST boilerplate that deploys to your own account, with the cost shape above. If you are happy on Vercel, stay there. The cost difference alone is not a reason to move.