It piles up in your storage
The original and the watchable version both stay on your side.
Cloudflare R2-based video hosting
Keep sources and streaming files in Cloudflare R2 while NULX runs upload, HLS transcoding, captions and protected playback around them. NULX adds no delivery markup to playback traffic.
Customer-owned R2 · HLS/DASH · Signed playback · No NULX playback markup
Just uploaded
launch-film.mp4
Three steps, that is it
Built so your team can follow it without a developer on hand.
Connect the space that holds your video once, following the on-screen steps.
Once uploaded, it is prepared to look right on a phone or a desktop.
Put the link on your site or send it to your members.
Putting it on your site
Hand over one link.Every video gets a link like this. It opens on the sites you approve and stays shut everywhere else.
nulx.dev/video/company-intro
What your company keeps
Move to another service later and the video is still sitting in your own storage.
The original and the watchable version both stay on your side.
NULX adds nothing to the bill for the number of plays.
No downloading everything back before you can move.
Check the evidence Where video lives and who can open it → Compare storage and playback setups → Support scope and response times →
What one video costs
An example. Put your own numbers into the calculator below for a real figure.
See the price first
Choose viewing time and library size to see the estimated monthly cost.
Estimated monthly total for the included items
$91.75
For this setup, 85% lower than CF Stream $538.25/mo saved Based on the selected viewing, library, and caption settings
NULX and your selected cloud provider bill these amounts separately. Request operations and tax are additional.
Based on 8,000 hours of monthly viewing
| Cloudflare Stream | Bunny Stream | NULX NULX + Cloudflare R2 | |
|---|---|---|---|
| Platform & processing | — | — | $19.00 |
| Storage | $150.00 | $16.50 | — |
| Delivery | $480.00 | $60.00 | — |
| Captions | — | $240.00 | $48.00 |
| Your cloud (storage + delivery) | — | — | $24.75 |
| Total cost of ownership | $630.00 | $316.50 | $91.75 |
Break-even: about ~2,000 monthly viewing hours vs. CF Stream
About ~8,000 vs. Bunny Stream (captions off; turning captions on brings this forward. Varies with your primary viewer region)
These use each provider's publicly listed pricing, checked 2026-08, not a quote. Verify against your own Cloudflare and vendor bill.
NULX + your cloud
Cloudflare Stream
CF Stream bills stored minutes of source video, not source+rendition GB like the other columns; shown as published, not adjusted.
Bunny Stream
All rates above are publicly listed pricing, checked 2026-08.
Why BYOC
Sources and renditions are written to your own Cloudflare R2 bucket. Cancel NULX and the files do not move - they were never in our custody.
We bill the platform and encoding. Delivery is Cloudflare billing you directly, so a viral month raises your R2 line, not ours.
HLS output sits in standard object storage behind your own domain. Switching tools later means repointing a URL, not re-encoding an archive.
How it works
No infrastructure to stand up. Connect the bucket once, then upload.
Paste a scoped API token. NULX verifies read, write and playback access before saving.
Drop files in the browser, use the desktop uploader for long jobs, or POST to the API.
Copy the embed snippet, or issue expiring signed URLs for members-only video.
Who uses it
Lesson libraries that are watched for years after they are recorded.
Subscriber-only catalogues that need expiring links, not public URLs.
Onboarding and feature video embedded inside your own application.
Long-retention footage where storage cost matters more than bursty delivery.
Short, clear pricing
Pick by how much video you keep and how much you upload each month. The calculator above has the exact figures.
For small businesses and courses
Sign in and startFor organizations adding video every month
Sign in and startFor large migrations and custom operations
Get a plan for my environmentSigning up gets you a look without a card: 2 hours of video preparation a month and up to 1 connected storage. Run out and new uploads pause instead of adding charges, and that is when you move up to a plan above.
Honest fit
Two lists, not one. Reading the right-hand column and leaving is a better outcome than a refund.
Technical proof
FAQ
Yes, once HLS output exists in the bucket and your own domain sits in front of it. R2 serves manifests and segments like any other object; it will not create them, so encoding has to happen first.
Stream stores and bills the video for you, priced per stored and delivered minute. NULX leaves the files in your bucket and bills a flat platform fee plus encoding, so delivery stays on your own Cloudflare bill.
Nothing moves. Sources and renditions are already in your bucket under your Cloudflare account. Revoke the API token and the files stay exactly where they are.
Only the prefixes the token you issue allows. During managed encoding a worker temporarily reads the source through a limited signed URL and writes the output back. Credentials are encrypted server-side and never displayed again after saving.
The NULX side does. Delivery is billed by Cloudflare directly to you, and R2 internet egress is $0. More viewing raises encoding only if you upload more video.
No. It issues short-lived signed URLs that expire, and can restrict domains. It is not Widevine or FairPlay and it cannot stop screen recording. We do not call it DRM.
Yes, by re-uploading the masters. There is no one-click importer today; for large archives ask us and we will scope it.
Cloudflare does, directly. NULX never resells storage or delivery and adds no markup to either.
Available now
An email address is all it takes. No card, nothing to install.