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

Compared to Frame.io

Frame.io prices per seat and bundles storage with each one. Onelight prices storage and nothing else: there is no per-seat cost, because there is no licence to enforce.

Frame.io plans, read 2026-08-03:

Plan Price Seats Storage
Free $0 2 2 GB
Pro $15/member/mo up to 5 2 TB + 2 TB per extra member
Team $25/member/mo up to 15 3 TB + 2 TB per extra member

Onelight on Cloudflare is $5 + $0.015/GB-mo + encoding. So the comparison turns on one thing: Onelight's advantage grows with seats, and its disadvantage grows with storage.

Scenario Onelight Frame.io Cheaper
Solo, 500 GB $12.50 $15 (Pro) Onelight
Solo, 2 TB $35 $15 (Pro) Frame.io
5 seats, 2 TB $35 $75 (Pro) Onelight, 2x
15 seats, 5 TB $80 $375 (Team) Onelight, 4.7x
15 seats, 30 TB $455 $375 (Team) Frame.io

Encoding compute is extra for Onelight and included for Frame.io. Add it to the Onelight column before deciding.

Where the crossover sits

Onelight is cheaper while stored bytes stay under (seats x plan price - 5) / 0.015 GB:

  • 1 seat against Pro: about 670 GB
  • 5 seats against Pro: about 4.7 TB
  • 15 seats against Team: about 24.7 TB

The uncomfortable number

Frame.io's marginal storage is $7.50/TB (a $15 seat brings 2 TB). R2 standard is $15/TB, and R2 Infrequent Access is $10/TB.

Storage is not where Onelight wins. Per raw terabyte, Frame.io's bundle is cheaper. What Onelight has instead is that seats are free, egress is free, the data is in your own bucket, and there is no markup between you and the infrastructure.

Not an equal comparison

Frame.io includes encoding, a CDN, support, camera-to-cloud ingest and an ecosystem of integrations. Onelight expects you to run a worker somewhere and support yourself. A post house with fifteen seats and moderate storage saves several hundred dollars a month; a solo operator with a lot of footage and no appetite for running anything probably should not switch.

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