Skip to content

Pricing

David Torcivia edited this page Aug 3, 2026 · 7 revisions

Pricing

Cloudflare rates read 2026-08-03, sources at the bottom. Onelight-specific usage numbers are marked measured or unmeasured.

Rates

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

R2 egress is free

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.

Media is served through the Worker

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.

Storage

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.

Worked example

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).

Uploads are cheap

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.

Running on the free tier

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.

Unmeasured

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.

Self-hosted

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.

Sources

Clone this wiki locally