Bubble.io File Storage

Production File Storage for Bubble.io Apps via the API Connector

External file storage for Bubble apps with reliable global delivery.

Bubble's built-in file storage is fine for a prototype but leaks at scale: the URLs Bubble hands back point at Bubble's own infrastructure and are tied to your app's lifecycle, free apps often serve without a CDN in front, and there's no clean way to expire access to a private document. As an app grows into real user-generated content — avatars, uploaded documents, receipts, course files — you want a storage backend you'd be comfortable shipping in a hand-coded product. files.link gives a no-code Bubble app exactly that: a REST API you wire into the API Connector, permanent CDN URLs returned on every upload, and signed URLs for anything that must stay private. You stay in Bubble; the bytes live on durable storage with edge delivery.

Setup runs through Bubble's API Connector. Add an API named files.link, set the Authorization header to your raw API key (no Bearer prefix), and define three calls matching the upload flow: (1) POST https://api.files.link/v1/files/[folderId] with the file metadata, which returns a presigned PUT URL and a file id; (2) a PUT to that presigned URL carrying the file body; (3) POST https://api.files.link/v1/files/confirm-upload with the id.

Initialize each call once so Bubble learns the response schema, then expose them as workflow actions. On a page, drop a File Uploader, and in its on-upload workflow pass the uploader's value into your upload action, then "Make changes to a thing" to save the returned CDN URL onto the relevant record's text field. Bind an Image or Link element to that field to display it.

Keep private documents private by uploading with the private flag and calling the signed-URL endpoint from a Backend Workflow each time a user needs access, so the API key never ships to the browser and the 10-minute-default URL dies quickly if leaked. The portability win is the one teams underrate: because the CDN URLs belong to files.link rather than Bubble, exporting your app or rebuilding the front end in code later doesn't orphan your asset library — the same URLs keep resolving while your balance is active, so you're not re-uploading everything during a migration.

Billing is prepaid credits with per-GB storage and CDN delivery included, so you watch one balance instead of guessing how file operations consume Bubble workload units.

Benefits With No Complexity

Global CDN delivery

Your files are served from 450+ edge locations worldwide.

Edge-cached worldwide

Files are cached close to your users for fast delivery.

Signed-URL security

Private files stay protected with time-limited access.

What You Get

Unlimited files

Upload as many files as you need.

Unlimited storage

There is no storage limit.

Public + Private storage

Private files are fully secured.

CDN ready links

Upload directly to 450+ edge locations worldwide.

Prepaid credits

No subscription. Pay only for the storage and bandwidth you use.

More coming soon

We have plenty of features coming!

How files.link Works

1. Upload

Create a project and upload your first file.

2. Copy

Copy the CDN link.

3. Use Anywhere

Paste and enjoy the blazing speed.

Why Developers Choose files.link

A Better Way to Store & Deliver Files

Bubble Built-in StorageFirebase StorageAmazon S3files.link
Global CDN delivery on every plan
Wired in via API Connector (no SDK)
Signed URLs for private files
URLs survive app export/migration
Prepaid credits (no subscription)
Cold storage tier for archives

Calculate Your Needs

Storage

0GB

Egress

0GB

CDN Bandwidth

0GB
Total: $0.000/month

Start Bubble Storage

  • Global CDN delivery
  • Edge-cached worldwide
  • Signed-URL security
  • Unlimited files
  • Unlimited storage
  • Public + Private storage
  • No subscription — prepaid credits keep spend predictable
Start Bubble Storage

Frequently Asked Questions

How do I set up files.link in Bubble's API Connector?
Add an API named files.link with the Authorization header set to your raw API key (no Bearer prefix). Define three calls: POST /v1/files/[folderId] (returns a presigned PUT URL + id), a PUT to that presigned URL with the file body, and POST /v1/files/confirm-upload with the id. Initialize each once so Bubble learns the schema, then expose them as workflow actions.
How do I save a user's uploaded file?
Add a File Uploader element; in its on-upload workflow pass the uploader value into your upload action, then run "Make changes to a thing" to write the returned CDN URL into a text field on the record (e.g. User's avatar_url). Bind an Image or Link element to that field to show it.
How do I keep documents private in a Bubble app?
Upload with the private flag and call the signed-URL endpoint from a Backend Workflow whenever a user needs access, so your API key stays server-side. The signed URL expires (10-minute default), so a leaked link goes dead quickly.
Do my file URLs break if I move off Bubble later?
No. The CDN URLs belong to files.link, not Bubble. If you export the app or rebuild the front end in code, the same URLs keep resolving while your balance is active, so you don't have to re-upload your whole asset library during a migration.
General Questions
Is there a subscription?
No. files.link uses prepaid credits, so storage, bandwidth, and API usage are deducted from your balance as you go. The app explains the payment step before uploads are enabled — no monthly subscription and no per-user fees.
What is files.link?
files.link is a developer-first file platform that makes it simple to store, secure, and deliver files globally. It provides signed URLs, public/private access, and an API-first design so you can integrate file delivery into any app without the usual complexity.
How does billing work?
files.link uses prepaid credits. As you use storage, bandwidth, and API requests, credits are deducted daily. When your balance runs low, we automatically recharge it using your saved card. If an auto-recharge doesn't go through, your files and links stay put — you simply update your payment method or top up manually to keep going. No monthly subscriptions — just simple usage-based pricing.
How secure is my data?
All files are encrypted at rest and in transit. You can use signed URLs for private files, control access with permissions, and rely on enterprise-grade infrastructure for data protection.

Related

files.link
Copyright © 2026
All rights reserved
ContactGuidesGlossaryStatusLegal