-
Notifications
You must be signed in to change notification settings - Fork 0
Pricing
Cloudflare rates read 2026-08-03, sources at the bottom. Onelight-specific usage numbers are marked measured or unmeasured.
Workers
| Free | Paid ($5/mo base) | |
|---|---|---|
| Requests | 100,000/day | 10M/mo, then $0.30/M |
| CPU time | 10 ms per request | 30M CPU-ms/mo, then $0.02/M |
| Memory | 128 MB | 128 MB |
| Subrequests | 50/request | 1,000/request |
R2
| Free | Beyond | |
|---|---|---|
| Storage | 10 GB-mo | $0.015/GB-mo |
| Class A (writes) | 1M/mo | $4.50/M |
| Class B (reads) | 10M/mo | $0.36/M |
| Egress | unlimited | $0 |
D1
| Free | Paid | |
|---|---|---|
| Rows read | 5M/day | 25B/mo, then $0.001/M |
| Rows written | 100,000/day | 50M/mo, then $1.00/M |
| Storage | 5 GB | 5 GB, then $0.75/GB-mo |
Containers (Workers Paid only), if you encode on Cloudflare. See Encoding.
| Included | Beyond | |
|---|---|---|
| vCPU | 375 vCPU-min/mo | $0.000020/vCPU-s |
| Memory | 25 GiB-hr/mo | $0.0000025/GiB-s |
| Disk | 200 GB-hr/mo | $0.00000007/GB-s |
| Egress (NA/EU) | 1 TB | $0.025/GB |
Serving video is what this application does most, and R2 does not charge for it. On S3 plus CloudFront, egress is typically the largest line. Here it is zero at any volume.
1 TB stored costs $15/month. Serving all of it costs nothing.
Both blob stores return an app-relative /api/v1/media/<key>, and the API
streams the object back. Playback spends Worker requests, not only R2 Class B
reads.
This is deliberate: one code path for both deployment targets, and access control that cannot be bypassed by holding a URL. The consequence is that request volume scales with viewers while storage scales with footage. R2 can issue presigned URLs directly if this becomes the binding cost, at the price of that shared code path.
Stored per version: the original, plus renditions.
Originals are kept. A proxy is not a master, and the master is what is under review.
Renditions for a video version: proxy_1080, proxy_540, poster, sprite, waveform data. A 4K source adds proxy_2160. An HDR source adds hdr_av1 and hdr_hevc. Audio and image versions get smaller sets.
Renditions are small next to the original, so the original dominates.
Assumption: 100 GB of masters per month, retained 12 months, renditions adding 10%.
| Month | Stored | R2 storage |
|---|---|---|
| 1 | 110 GB | $1.50 |
| 6 | 660 GB | $9.75 |
| 12 | 1.32 TB | $19.80 |
Plus $5/month for Workers Paid, plus encoding (Encoding).
Multipart parts are 16 MiB and each part is one Class A operation. A 40 GB master is about 2,560 operations, or $0.012.
Possible for a small deployment. Not confirmed, for one reason.
The free plan allows 10 ms of CPU per request. The most frequent request here is streaming media back through the Worker. Streaming waits on the network rather than computing, and waiting is not billed as CPU, so it probably fits. Not measured. See Benchmarks.
Quotas likely to bind before CPU does:
- 100,000 requests/day for the whole deployment. Every media range request spends one, and one reviewer scrubbing a timeline issues many.
- 10 GB R2 storage, roughly one camera master.
Containers require Workers Paid, so encoding on Cloudflare rules out the free tier regardless.
Needed before request and CPU costs can be stated:
- CPU-ms per media request
- requests per review session
- GB per hour of footage, by codec and resolution
- encoding throughput
All four are on Benchmarks.
The Docker deployment has no per-request cost. You pay for the machine and the disk. The same build serves both targets: the job protocol names storage by key and does not assume a filesystem.