Serverless File Storage
Zero-Infra File Storage for Serverless and Edge Backends
Serverless file storage with automatic scaling and global CDN delivery.
Serverless functions are stateless and short-lived, which makes file handling awkward in ways that bite you in production. A Lambda's /tmp is ephemeral and capped, function execution time is limited, and — the classic trap — any client that holds connections (a database driver, an S3 client with a connection pool) fights the concurrency model, because a thousand simultaneous invocations try to open a thousand pools.
The clean pattern for serverless storage is a stateless HTTP call to an external service, and that is exactly the shape files.link takes. There is no connection pool to warm, no SDK whose cold-start initialization adds latency to the first invocation, and no driver to keep alive between requests — just three HTTP calls: POST /v1/files/{folderId} with your raw API key in the Authorization header returns a presigned URL; PUT the bytes; POST /v1/files/confirm-upload to finalize and get the permanent CDN URL.
There is a serverless-specific optimization hiding in that flow. Because step one returns a presigned URL, your function doesn't have to be the thing that streams the file body at all. A common pattern: a tiny function calls POST /v1/files/{folderId}, returns the presigned URL to the browser, and the browser PUTs the bytes directly — so a large upload never passes through your function, never counts against its execution time or memory, and never risks hitting the API Gateway payload limit.
The function only brokers a short JSON request and the lightweight confirm call. This works from anything that speaks HTTP: AWS Lambda, Google Cloud Functions, Azure Functions, Vercel Functions, Netlify Functions, Cloudflare Workers, Deno Deploy. Edge runtimes that forbid Node built-ins and native modules can't run many storage SDKs at all, but fetch() is always available, so the three-call flow runs at the edge unchanged.
Files are encrypted at rest and move over TLS; private files are gated by signed URLs your function mints per request. And because billing is prepaid credits rather than per-request metering, a function that fans out to high concurrency draws down a balance you control instead of producing a request-count invoice you discover at month end.
Benefits With No Complexity
Global CDN delivery
Edge-cached worldwide
Signed-URL security
What You Get
Unlimited files
Unlimited storage
Public + Private storage
CDN ready links
Prepaid credits
More coming soon
How files.link Works
1. Upload
2. Copy
3. Use Anywhere
Why Developers Choose files.link
A Better Way to Store & Deliver Files
| Vercel Blob | Cloudflare R2 | Amazon S3 | files.link | |
|---|---|---|---|---|
| Stateless HTTP upload, no SDK required | ||||
| No connection pool to manage in functions | ||||
| Presigned URL for direct-to-browser upload | ||||
| Runs in edge runtimes (fetch-only) | ||||
| Built-in CDN delivery | ||||
| Prepaid credits (no per-request invoice) |
Calculate Your Needs
Storage
Egress
CDN Bandwidth
Start Serverless Storage
- Global CDN delivery
- Edge-cached worldwide
- Signed-URL security
- Unlimited files
- Unlimited storage
- Public + Private storage
- No subscription — prepaid credits keep spend predictable