Best file.io Alternative in 2026: 5 Services Compared
file.io is a popular file upload API for one-time transfers. If you are integrating it, the two things that trip people up most are the default 14-day expiration and the auto-delete-after-one-download behavior. This reference covers file.io's expiration defaults, file size limits by plan, the upload endpoint with curl examples, and what to use instead when you need permanent file URLs.
file.io at a Glance: Defaults and Limits
| Setting | Default / Limit |
|---|---|
| Default expiration | 14 days (free tier) |
| Default auto-delete behavior | File is deleted after 1 successful download |
| Max file size (free) | 2 GB per file |
| Max file size (paid) | Up to 5 GB per file |
| Upload endpoint | POST https://file.io/ |
| Body format | multipart/form-data with file field |
| Authentication | Anonymous (optional API key for paid plans) |
| Paid plans start at | $12/month |
file.io Default Expiration: 14 Days (but there's a catch)
On the free tier, the default expiration for an uploaded file is 14 days. However, that 14-day window is not the whole story. By default, file.io also sets autoDelete=true, which means the file is deleted as soon as someone downloads it once — regardless of how many days remain on the expiry timer.
In practice, there are two ways a file gets removed from file.io:
- Expiration timer fires: 14 days pass with no downloads (free tier default), or the custom
expiresvalue you set at upload time elapses. - Single-download auto-delete: someone downloads the file successfully. Even if 13 days remain on the expiry, the file is gone.
If you want the file to stay available until the expiration window ends (and not disappear after the first download), set autoDelete=false when uploading:
curl -F "file=@report.pdf" "https://file.io?expires=1w&autoDelete=false"
Even with those overrides, the file will not last beyond the maximum expiration your plan allows: 14 days on free, 30 days on Light ($12/mo), and up to 1 year on Pro ($25/mo). file.io is not designed for permanent hosting.
file.io File Size Limits by Plan
file.io allows large individual files, which is one of its main selling points. The per-file maximum depends on your plan:
- Free: 2 GB per file
- Light ($12/mo): 5 GB per file
- Pro ($25/mo): 5 GB per file with higher bandwidth and storage quotas
Note that the per-file size is only one constraint. Free-tier uploads are also rate-limited, and daily bandwidth caps apply on every tier. If you are doing automated uploads at scale, the rate limits tend to bite before the file size limit does.
file.io Upload API: Endpoint and curl Example
The file.io upload endpoint is a single POST:
# Basic upload - uses all defaults (14-day expiry, auto-delete after 1 download)
curl -F "file=@report.pdf" https://file.io
# With custom expiration and no auto-delete
curl -F "file=@report.pdf" "https://file.io?expires=7d&autoDelete=false&maxDownloads=10"
A successful response looks like:
{
"success": true,
"status": 200,
"id": "abc123",
"key": "abc123",
"name": "report.pdf",
"link": "https://file.io/abc123",
"expires": "2026-05-07T10:32:14.123Z",
"expiry": "14 days",
"downloads": 0,
"maxDownloads": 1,
"autoDelete": true,
"size": 204800,
"mimeType": "application/pdf",
"created": "2026-04-23T10:32:14.123Z",
"modified": "2026-04-23T10:32:14.123Z"
}
The useful upload parameters are:
expires: how long until the file expires. Accepts values like1d,1w,14d, or an ISO 8601 duration.maxDownloads: number of downloads allowed before the file is deleted. Defaults to 1 whenautoDelete=true.autoDelete: whentrue(the default), the file is deleted after reachingmaxDownloads. Set tofalseto keep the file available until the expiration window ends.
When file.io's Ephemeral Model Is a Problem
file.io's delete-after-download default is a feature for one-time file transfers. It becomes a liability the moment you need the URL to be stable. Common situations where developers run into the limit:
- Storing file URLs in a database. User avatars, uploaded documents, form submissions — anything the app will re-read later. The URL breaks the first time it is fetched.
- CMS or blog asset hosting. Images referenced in published content need to load every time a reader visits, not just once.
- Automation webhooks. Zapier/Make/n8n workflows that upload a file and pass the URL to another step can hit the first-download delete mid-flow.
- Sharing links with unknown download counts. Any link that might be retrieved by a link-unfurler, preview bot, or scraper before the human opens it will be burned by the first automated fetch.
If any of those are your use case, you need a file upload API with permanent URLs. That is exactly what FilePost provides — the same simple curl -F upload pattern as file.io, but the URLs do not expire and are not deleted on first download.
FilePost vs file.io: Ephemeral vs Permanent
This is the single most important distinction between the two services, and it should drive your decision:
- file.io: Files are deleted after one download (default) or after an expiration period you set (max 14 days on free tier). The URL stops working once the file is gone.
- FilePost: Files are stored on Backblaze B2 and served through Cloudflare CDN. The URL is permanent. Your file stays live until you explicitly delete it through the API or dashboard.
If you are building a one-time file transfer tool, a "send this to someone" feature, or a temporary paste service, file.io is a great fit. If you are building anything where the file URL needs to persist: user avatars, document storage, hosted assets, form submissions, you need FilePost.
Quick Comparison Table
| Feature | FilePost | file.io |
|---|---|---|
| File permanence | Permanent (until you delete) | Deleted after download or expiry |
| CDN delivery | Yes (Cloudflare) | No |
| Authentication | API key required | Anonymous (optional account) |
| File management API | Yes (list, delete, metadata) | No |
| Dashboard | Yes | Limited |
| Intake links (shareable upload pages) | Yes | No |
| Max file size (free) | 50 MB | 2 GB |
| Free tier uploads | 300/month | Limited (rate-limited) |
| Swagger / OpenAPI docs | Yes | No |
| Paid plan starting price | $9/mo | $12/mo |
Uploading a File: curl Examples
Both APIs keep the upload flow simple. Here is how they compare side by side.
Upload with file.io
curl -F "file=@report.pdf" https://file.io
Response:
{
"success": true,
"key": "abc123",
"link": "https://file.io/abc123",
"expiry": "14 days"
}
That link works exactly once. After someone downloads the file, the URL returns a 404. If nobody downloads it, it expires after 14 days (on the free tier).
Upload with FilePost
curl -X POST https://filepost.dev/v1/upload \
-H "X-API-Key: your_api_key" \
-F "file=@report.pdf"
Response:
{
"url": "https://cdn.filepost.dev/file/filepost/uploads/a1/a1b2c3.pdf",
"file_id": "a1b2c3d4e5f6",
"size": 204800
}
That URL is permanent. It is served from Cloudflare's CDN, so it loads fast globally. You can share it, embed it, store it in your database, and it will keep working until you delete the file.
Upload with Python
import requests
# file.io : temporary link
resp = requests.post("https://file.io", files={"file": open("report.pdf", "rb")})
print(resp.json()["link"]) # expires after download
# FilePost : permanent CDN URL
resp = requests.post(
"https://filepost.dev/v1/upload",
headers={"X-API-Key": "your_api_key"},
files={"file": open("report.pdf", "rb")}
)
print(resp.json()["url"]) # permanent
Switch from file.io in 2 Minutes
Same curl command, permanent URLs. Free plan includes 300 uploads/month. No credit card required.
Get Your Free API KeyWhen file.io Is the Right Choice
file.io is not a bad service. It is a different tool for a different job. Use file.io when:
- You need self-destructing links. Sending a file to someone and you want the link to die after they download it? That is file.io's core feature.
- You want anonymous uploads. file.io does not require an API key or account for basic usage. If you need zero-friction, no-auth file sharing, it works.
- You are transferring files between machines. Quick one-time transfers from a server to your laptop, from CI to a staging environment, or between two scripts that do not need persistent storage.
If any of those describe your use case, file.io is a solid pick. But if you answered "no" to all three, keep reading.
When FilePost Is the Right Choice
FilePost is built for developers who need file URLs that last. Use FilePost when:
- Your app stores file URLs in a database. User profile photos, uploaded documents, form attachments. If the URL breaks, your app breaks. FilePost URLs are permanent.
- You need a file management API. FilePost lets you list all your uploaded files, get metadata, and delete files programmatically. file.io does not provide this.
- You want CDN performance. FilePost serves files through Cloudflare's global CDN. For apps that embed uploaded content (images, PDFs, downloads), this matters.
- You need intake links. FilePost's intake links feature lets you create shareable upload pages. Send a link to a client or teammate, they upload files through a branded page, and the files land in your FilePost account. file.io has nothing like this.
- You want a dashboard. FilePost gives you a web dashboard to browse, search, and manage your uploaded files. Useful when you need to find a file without writing code.
- You need authentication. FilePost requires an API key, which means only you can upload to your account. file.io's anonymous model is a feature for some use cases, but a liability for others.
Pricing Comparison
Both services offer free tiers, but the paid plans differ in what you get.
FilePost Pricing
- Free: 300 uploads/month, 50 MB max file size
- Starter ($9/mo): 5,000 uploads/month, 200 MB max file size
- Pro ($29/mo): 25,000 uploads/month, 500 MB max file size
All plans include permanent CDN URLs, the file management API, dashboard access, and intake links.
file.io Pricing
- Free: Rate-limited uploads, 2 GB max file size, 14-day expiry max
- Light ($12/mo): Higher rate limits, 30-day expiry, 5 GB storage
- Pro ($25/mo): Extended limits, 1-year expiry, 100 GB storage
Note that even on file.io's paid plans, files still expire. You are paying for longer expiration windows and more storage, not for permanent hosting.
Migrating from file.io to FilePost
If you are currently using file.io and want permanent URLs, the migration is a few lines of code. The upload pattern is nearly identical.
Step 1: Get Your API Key
Sign up at filepost.dev and grab your API key from the dashboard. Free tier gives you 300 uploads/month to test with.
Step 2: Swap the Endpoint
# Before: file.io
curl -F "file=@photo.jpg" https://file.io
# After: FilePost
curl -X POST https://filepost.dev/v1/upload \
-H "X-API-Key: your_api_key" \
-F "file=@photo.jpg"
The main differences: you add the X-API-Key header, and the response gives you a permanent CDN URL instead of a self-destructing link.
Step 3: Use the File Management API
Unlike file.io, FilePost lets you list and manage your files after upload:
# List your files
curl -H "X-API-Key: your_api_key" https://filepost.dev/v1/files
# Delete a file
curl -X DELETE -H "X-API-Key: your_api_key" \
https://filepost.dev/v1/files/a1b2c3d4e5f6
FAQ
What is file.io's default expiration time?
14 days on the free tier. However, files are also auto-deleted after the first download by default, so the 14-day window only applies if nobody downloads the file. You can extend or shorten the expiry window with the expires parameter and disable auto-delete with autoDelete=false.
What is file.io's maximum file size limit?
2 GB per file on the free tier. Paid plans raise the per-file limit up to 5 GB. Uploads are also subject to per-day bandwidth and rate limits that vary by plan.
What is the file.io upload API endpoint?
The endpoint is POST https://file.io/ with a multipart/form-data body containing a file field. Basic example: curl -F "file=@report.pdf" https://file.io. Optional query parameters include expires, maxDownloads, and autoDelete.
Can I use file.io for permanent file hosting?
No. file.io is designed for temporary, ephemeral file sharing. Even on paid plans, files expire after a set window (up to 1 year). For permanent file hosting with a REST API, FilePost is a direct alternative that stores files on CDN with no expiration.
What is the best file.io alternative for developers?
FilePost is the closest alternative to file.io for developers who want a simple upload API but need permanent URLs. Both services use a single POST request to upload. FilePost adds CDN delivery, a file management dashboard, intake links, and API key authentication.
How much does FilePost cost compared to file.io?
FilePost's free tier includes 300 uploads per month with 50 MB max file size. Paid plans are $9/mo (Starter: 5,000 uploads, 200 MB max) and $29/mo (Pro: 25,000 uploads, 500 MB max). file.io's paid plans offer longer expiry windows, but files still expire. FilePost gives you permanent URLs at a comparable price point.
Try FilePost Free
300 free uploads per month, permanent CDN URLs, full API access. No credit card required.
Get Your Free API Key