File uploads
for your app.
Three lines of code to add uploads, previews, and a CDN to any app. Downloads are always free, no matter how many users you have.
import { upload } from '@dropkit/upload';
const { data, error } = await upload(file, {
key: 'pk_live_...',
});
if (error) throw new Error(error.message);
console.log(data.url); Why dropkit
Every app eventually needs file uploads. Most ship with a hand-rolled S3 presign, a background queue, a CDN config, and a bill that grows with every new user. dropkit replaces all of that with two functions and a public key.
Nothing scales with traffic
Cloudflare R2 holds the bytes. You pay for what you store, and we do not bill you for a single download, ever. A file that goes viral costs the same as one that never loads.
Every framework, one SDK
The core @dropkit/upload package runs anywhere that has fetch. React and Svelte get drop-in components. The README is shorter than a tweet.
Your own domain, from day one
Files live on cdn.yourapp.com, not a shared subdomain. No extra setup cost. Paste a CNAME and it works.
Pricing
Four tiers, $0 to $99. Overage is $0.05 per GB stored. That is the whole pricing page in one sentence.
Full pricingQuestions
What happens when I exceed my plan?
Storage past your plan is metered at $0.05 per GB on the next invoice. Uploads never hard-stop mid-flight. We email you at 80%.
How does the public key stay safe in the browser?
Public keys are rate-limited and origin-scoped per project. If you need per-user policies (max size, folder prefix, expiry), use the secret key on your server to sign uploads.
What file types are allowed?
Anything up to 5 GiB per file. No MIME whitelist. You can add one in your own server if you want stricter rules.
Can I self-host dropkit?
Not yet. The Worker source is open on GitHub; a self-host path is on the roadmap once the API is stable.
Who made this?
A solo developer in Indonesia. Built on Cloudflare R2, Workers, D1. Billing by Polar.