FR

Cloudflare R2 : combien coûte l’hébergement des vidéos clients

Le tarif Cloudflare R2 pour la vidéo, calculé pour notre app : stockage, opérations, Workers et D1, pourquoi des liens qui expirent gardent la facture minime.

Nicolas Ricardi9 min de lecture

En bref

  • R2 facture 0,015 $ par Go-mois pour le stockage standard, inclut 10 Go-mois gratuits, et ne facture rien pour la bande passante sortante.
  • Une vidéo Full HD de 10 minutes de notre app pèse environ 250 Mo ; conservée 30 jours, elle coûte moins d’un demi-centime de stockage.
  • Comme les liens expirent, le stockage par utilisateur reste stable au lieu d’augmenter chaque mois.
  • Les opérations, les requêtes Workers et les requêtes D1 tiennent dans les quotas gratuits aux volumes que nous attendons au lancement.
  • Nous n’avons pas encore lancé : ce sont des calculs à partir des prix publiés, pas des factures.

Sur Cloudflare R2, le stockage d’une vidéo client coûte des fractions de centime. Le stockage standard est à 0,015 $ par Go-mois, les 10 premiers Go-mois sont gratuits, et il n’y a pas de frais de sortie de données : peu importe combien de fois votre client appuie sur lecture. Une vidéo Full HD de 10 minutes faite avec JustRec pèse environ 250 Mo, et la garder en ligne 30 jours nous coûte moins d’un demi-centime.

Nous n’avons pas encore lancé : il n’y a donc pas de facture à vous montrer. Tout ce qui suit est un calcul à partir des prix publiés par Cloudflare et des limites de notre propre code serveur. Quand les vraies factures arriveront, nous les publierons à côté de ces chiffres.

Ce que nous stockons

JustRec enregistre sur le Mac et met en ligne un seul MP4 quand vous partagez. Le serveur est un Cloudflare Worker écrit avec Hono. Les vidéos, les sous-titres et les miniatures vont dans un bucket R2 limité à la juridiction UE ; les métadonnées (titre, nom de l’expéditeur, taille, durée, date d’expiration) vont dans une base D1, elle aussi limitée à l’UE. Les liens expirent après 3 jours avec Lifetime et 30 jours avec Personal et Team, puis la copie en ligne est supprimée.

Quel poids pour une vidéo ? Notre document de planification estimait 100 à 150 Mo pour 10 minutes de 1080p en HEVC. Puis nous avons basculé l’export en H.264, parce qu’il se lit dans tous les navigateurs, sur l’ordinateur de n’importe quel client. À qualité égale, le H.264 est plus lourd. Au débit que notre exporteur demande actuellement, les chiffres sont :

Taille des fichiers selon la résolution d’export
Résolution Débit vidéo + audio 1 minute 10 minutes
Full HD (1920×1080) environ 3,3 Mbit/s environ 25 Mo environ 245 Mo
Retina (2880×1800) environ 7,9 Mbit/s environ 60 Mo environ 595 Mo

Débits cibles réglés dans notre exporteur, pas des moyennes mesurées.

La plupart des vidéos client sont bien plus courtes que 10 minutes. Pour la suite de cet article, nous retenons 250 Mo par vidéo : un long enregistrement Full HD, arrondi au-dessus. Si vous voulez des fichiers plus légers, quel que soit l’enregistreur, notre guide pour réduire la taille d’un enregistrement d’écran sur Mac détaille les compromis.

Deux limites côté serveur plafonnent le pire des cas : une vidéo ne peut pas dépasser 1 Go, et un Mac peut avoir au maximum 5 Go de liens actifs en même temps.

Le tarif Cloudflare R2 pour la vidéo, ce qui compte

D’après la page des tarifs R2 de Cloudflare, classe de stockage standard :

Tarifs de Cloudflare R2, stockage standard
Poste Prix Gratuit chaque mois
Stockage 0,015 $ par Go-mois 10 Go-mois
Opérations de classe A (écritures) 4,50 $ le million 1 million
Opérations de classe B (lectures) 0,36 $ le million 10 millions
Sortie de données (API Workers, API S3, r2.dev) ✓ gratuite
Suppressions et envois multipart abandonnés ✓ gratuits

La classe A couvre les écritures comme PutObject, CreateMultipartUpload, UploadPart et CompleteMultipartUpload ; la classe B couvre les lectures comme GetObject et HeadObject. D’après la page des tarifs R2 de Cloudflare, consultée en novembre 2026.

Le détail qui compte le plus pour les liens qui expirent, c’est la façon dont le stockage est mesuré : R2 fait la moyenne du pic de stockage quotidien sur une période de facturation de 30 jours. Un fichier qui existe 3 jours est facturé 3 jours, pas le mois entier.

Il existe aussi une classe Infrequent Access à 0,01 $ par Go-mois, mais elle impose une durée de stockage minimale de 30 jours et facture 0,01 $ par Go récupéré. Pour des fichiers qui vivent 3 jours et sont regardés tout de suite, ce n’est pas le bon outil.

Une vidéo, chiffrée selon sa durée en ligne

Coût de stockage d’une vidéo de 250 Mo
Durée du lien Stockage utilisé Coût de stockage
3 jours (Lifetime) 0,025 Go-mois 0,000375 $
30 jours (Personal, Team) 0,25 Go-mois 0,00375 $
Un an, jamais supprimée 3 Go-mois sur l’année 0,045 $ par an, chaque année

Estimations à partir des prix publiés, avant le quota gratuit, consultés en novembre 2026.

Les deux premières lignes représentent le coût total de cette mise en ligne sur toute sa durée de vie. La troisième, c’est ce que coûte une bibliothèque permanente, et ça ne s’arrête jamais.

Par utilisateur et par mois

Stockage mensuel de l’utilisateur de l’exemple
Comportement des liens Stockage en ligne Coût mensuel du stockage
Liens de 3 jours environ 0,5 Go-mois environ 0,0075 $
Liens de 30 jours environ 5 Go-mois environ 0,075 $
Sans expiration, après 12 mois 60 Go, en hausse de 5 Go par mois environ 0,90 $, et ça monte

Estimations à partir des prix publiés, avant le quota gratuit, consultés en novembre 2026.

Avec des liens de 30 jours, un utilisateur qui partage chaque mois atteint un régime stable : les anciennes vidéos partent à mesure que les nouvelles arrivent, et la facture reste plate. Avec une bibliothèque permanente, le même utilisateur coûte plus cher chaque mois, indéfiniment. C’est le cœur de la raison pour laquelle nos liens vidéo expirent, et le stockage n’est qu’une des raisons.

Rapporté à 1 000 utilisateurs comme celui de l’exemple :

Stockage pour 1 000 utilisateurs de l’exemple
Scénario Stockage en ligne Coût mensuel du stockage
Tous avec des liens de 3 jours environ 500 Go-mois environ 7,35 $
Tous avec des liens de 30 jours environ 5 000 Go-mois environ 75 $

Estimations à partir des prix publiés, après les 10 Go-mois gratuits, consultés en novembre 2026.

Personal coûte 6,90 € par mois en facturation annuelle : le stockage est donc une petite ligne à côté des frais de paiement et de la TVA. Le quota de 5 Go actifs par Mac signifie aussi qu’aucun utilisateur ne peut à lui seul dépasser 5 Go-mois de stockage.

Opérations, Workers et D1 à notre échelle

Le stockage n’est qu’une partie de l’histoire. Voici par où passe un partage, et comment chaque étape est facturée.

  1. Appui sur stop

    Envoi en parties de 32 Mo

    Environ 12 opérations de classe A pour une vidéo de 250 Mo, sous-titres et miniature compris.

  2. Le client regarde

    Requêtes Range

    Chaque plage correspond à une opération de classe B et une requête Worker. Aucun frais de sortie.

  3. Jour 3 ou jour 30

    Le lien expire

    La page vidéo l’indique et invite le spectateur à demander un nouveau lien.

  4. Dans l’heure

    Le nettoyage supprime les fichiers

    Un Cron Trigger horaire supprime la copie en ligne. Les suppressions sont gratuites.

L’envoi. Notre Worker reçoit la vidéo en parties de 32 Mo et les écrit dans R2 sous forme d’envoi multipart. La taille des parties n’est pas choisie au hasard : sur les offres Free et Pro de Cloudflare, le corps d’une requête ne peut pas dépasser 100 Mo, et R2 exige des parties d’au moins 5 Mio, toutes de la même taille sauf la dernière. Faire passer les parties par le Worker signifie aussi que l’app ne détient jamais d’identifiants de stockage, et que le serveur vérifie la taille de chaque partie et lit la vraie durée dans le MP4 avant que le lien soit actif.

Un partage de 250 Mo coûte environ 12 opérations de classe A : une pour créer l’envoi multipart, 8 parties, une pour le finaliser, plus le fichier de sous-titres et la miniature. 20 partages par mois pour 1 000 utilisateurs, cela fait environ 240 000 opérations de classe A, dans le million gratuit.

Le visionnage. Chaque fois que le navigateur demande un morceau de la vidéo avec une requête Range, le Worker lit cette plage dans R2 : une opération de classe B et une requête Worker. Le nombre de plages par vue dépend du navigateur et de la façon dont le spectateur se déplace dans la vidéo. Même à 50 par vue, les 10 millions d’opérations de classe B gratuites couvrent 200 000 vues par mois. Le transfert de données ne coûte rien, ni d’un côté ni de l’autre : R2 ne facture pas la sortie via l’API Workers, et les Workers n’ont pas de frais de bande passante.

Les Workers. L’offre Free inclut 100 000 requêtes par jour ; l’offre Paid commence à 5 $ par mois avec 10 millions de requêtes incluses, puis 0,30 $ le million. Diffuser un fichier, c’est surtout attendre le réseau, ce qui ne compte pas comme du temps CPU. La tâche de nettoyage horaire tourne comme un Cron Trigger, facturé comme n’importe quelle autre requête.

D1. Chaque vue de page et chaque plage de vidéo lisent une ligne par son identifiant. Chaque partage écrit quelques lignes. L’offre Free permet 5 millions de lignes lues et 100 000 lignes écrites par jour, avec 5 Go de stockage ; les métadonnées d’une vidéo pèsent quelques centaines d’octets.

Supprimer est gratuit : DeleteObject et AbortMultipartUpload ne sont pas facturés. Nettoyer les liens expirés ne coûte rien.

Ce que changerait une sortie de données payante

Si nous avons choisi R2, c’est pour la ligne qui dit que la sortie de données est gratuite. Avec un stockage qui facture les données sortantes, chaque visionnage complet d’une vidéo de 250 Mo coûte 0,25 Go fois le tarif au Go du fournisseur. Une vidéo de livraison regardée dix fois par l’équipe du client, c’est 2,5 Go de transfert ; un lien qui circule dans tout un bureau, c’est davantage. La facture dépendrait alors de la popularité de vos vidéos, que vous ne contrôlez pas, et le coût d’un partage serait impossible à chiffrer à l’avance.

Avec R2, le coût d’un partage est connu dès que vous appuyez sur stop : sa taille multipliée par sa durée en ligne. Les vues n’ajoutent que des opérations de lecture, à 0,36 $ le million.

Ce que nous ne savons pas encore

  • La taille réelle des fichiers. Les débits ci-dessus sont ce que nous demandons à l’encodeur. Les vrais fichiers, issus d’écrans plutôt statiques, pourraient différer ; nous mesurerons quand des gens utiliseront l’app.
  • Les vues par vidéo et les plages par vue. Nous ne suivons pas les spectateurs, c’est voulu : nous ne verrons que des nombres de requêtes agrégés dans le tableau de bord de Cloudflare.
  • Le moment où l’offre Workers Free ne suffira plus. Cela dépend du nombre réel de requêtes Range par vue. L’offre Paid commence à 5 $ par mois : la décision est mineure de toute façon.
  • Les coûts hors Cloudflare. L’Apple Developer Program coûte 99 $ par an, et les frais de paiement et la TVA prennent une plus grosse part de chaque vente que le stockage n’en prendra jamais.

Nos premières factures remplaceront ces estimations. D’ici là, le résumé honnête est le suivant : héberger sur R2 des vidéos client à durée de vie courte coûte quelques centimes par utilisateur et par mois, et ce sont les liens qui expirent qui maintiennent ce niveau.

Si l’aspect confidentialité vous intéresse plus que le coût, lisez pourquoi des liens vidéo qui expirent sont plus sûrs qu’une bibliothèque permanente, ou découvrez comment nos pages vidéo gardent les données dans l’UE. Les offres que ces chiffres permettent sont dans la section tarifs.

Sources

Questions fréquentes

Combien coûte Cloudflare R2 pour la vidéo ?

Le stockage standard coûte 0,015 $ par Go-mois, avec 10 Go-mois gratuits chaque mois. La bande passante sortante est gratuite : le nombre de vues ne change pas la facture de stockage. Vous payez aussi les opérations : les écritures à 4,50 $ le million et les lectures à 0,36 $ le million, au-delà d’un quota gratuit.

Cloudflare R2 facture-t-il la bande passante quand on regarde les vidéos ?

Non. R2 ne facture pas la sortie de données lues via l’API Workers, l’API S3 ou les domaines r2.dev. Chaque lecture compte quand même comme une opération de classe B, et les autres services Cloudflare placés devant le bucket peuvent avoir leurs propres frais.

Comment est facturé le stockage R2 pour des fichiers conservés quelques jours ?

R2 fait la moyenne du pic de stockage quotidien sur une période de facturation de 30 jours. Un fichier de 250 Mo conservé 3 jours compte pour environ 0,025 Go-mois, un dixième de ce qu’il coûterait conservé tout le mois.

Cloudflare R2 convient-il au streaming vidéo ?

Il fonctionne bien pour la lecture progressive d’un MP4 avec des requêtes Range, ce dont une vidéo partagée a besoin. Le streaming adaptatif, avec de nombreux petits segments, multiplie le nombre d’opérations de lecture : modélisez-les avant de le choisir.

Écrit par

Nicolas Ricardi

Maker of JustRec, at Nube

Nicolas makes JustRec at Nube, a web studio in Italy. He built it for the videos Nube sends to its own clients: design reviews, handovers and quotes explained in a few minutes instead of a meeting.

www.wearenube.dev
En coulisses