1. Separa la factura en cinco partidas#
Comparar almacenamiento de objetos por el precio del GB-mes es como comparar planes de telefonía solo por el precio del minuto. Esa tarifa existe en todas las páginas de precios, pero la factura final depende de cuántas operaciones haces, cuántos datos salen hacia internet y si el proveedor aplica un cobro mínimo o una duración mínima de almacenamiento.
Antes de mirar proveedores, describe tu carga con cinco números mensuales: almacenamiento medio, escrituras, lecturas, datos que salen a internet y la vida media de cada objeto. Con esos datos puedes calcular cualquier tarifa pública; sin ellos, cualquier comparación es una intuición.
- Almacenamiento: volumen medio del mes, no el pico. Se factura como GB-mes o GiB-mes.
- Operaciones: PUT, GET, LIST, HEAD y similares, agrupadas en clases con precios distintos.
- Egress: datos que salen del proveedor hacia internet u otra nube.
- Mínimos: suscripciones base, cuotas incluidas y tamaños mínimos de objeto facturables.
- Retención mínima: días que pagas aunque borres el objeto antes, típica de clases infrecuentes o frías.
Esta guía usa las mismas cifras revisadas del comparador de almacenamiento de Codifly para AWS S3 Standard en N. Virginia, Cloudflare R2 Standard, Backblaze B2 Pay as you go y DigitalOcean Spaces Standard. Si lo que necesitas es subir archivos desde el navegador sin exponer el bucket, la guía de uploads directos con URLs firmadas cubre ese flujo; aquí nos concentramos en el costo.
Para profundizar: Uploads directos a S3: URLs firmadas sin abrir tus archivos
2. GiB vs GB: la diferencia de 7,4 % que nadie mira#
Un GB decimal son 10⁹ bytes; un GiB son 2³⁰ bytes, es decir 1.073.741.824 bytes. AWS documenta que S3 calcula el uso de almacenamiento en GB binarios, donde 1 GB equivale a 2³⁰ bytes. DigitalOcean publica los precios de Spaces directamente en GiB. Cloudflare R2 publica sus tarifas en GB sin aclarar la base en su página de precios, y Backblaze las publica por TB.
Si tu inventario dice 1.000 GB decimales y el proveedor factura en GiB, facturará unos 931,32 GiB. Para comparar tarifas en una misma unidad, divide la tarifa por GiB entre 1,073741824. El comparador hace exactamente eso: los $0,023 por GiB-mes de S3 se vuelven unos $0,02142 por GB decimal, y los $0,02 por GiB-mes adicionales de Spaces, unos $0,01863.
GIB = 2**30 / 10**9 # 1.073741824 GB decimales por GiB
def tarifa_por_gb_decimal(tarifa_por_gib: float) -> float:
return tarifa_por_gib / GIB
def gib_desde_gb(gb_decimales: float) -> float:
return gb_decimales / GIB
print(round(tarifa_por_gb_decimal(0.023), 5)) # S3 Standard: 0.02142
print(round(gib_desde_gb(1000), 2)) # 1.000 GB = 931.32 GiBLa diferencia parece pequeña, pero se acumula en volúmenes grandes y confunde las conciliaciones: tu monitoreo reporta GB decimales, la factura muestra otra cifra y alguien pierde una tarde buscando un error que no existe. Decide una unidad para tu hoja de cálculo y documenta la conversión.
Documentación: AWS: precios de S3 y GB binario ↗ · DigitalOcean: precios de Spaces en GiB ↗
3. Las operaciones tienen clases y precios distintos#
Cada llamada a la API de un bucket es una operación facturable, salvo que el proveedor la declare gratuita. Los proveedores agrupan las operaciones en clases: las que escriben o listan suelen costar bastante más que las lecturas simples. Una aplicación que lista el bucket en cada petición puede pagar más por LIST que por almacenar sus archivos.
| Proveedor | Escrituras y listados | Lecturas | Gratis o incluido |
|---|---|---|---|
| S3 Standard (us-east-1) | PUT, COPY, POST, LIST: $0,005 por 1.000 | GET, SELECT: $0,0004 por 1.000 | DELETE y CANCEL sin cargo |
| R2 Standard | Clase A (PutObject, ListObjects): $4,50 por millón | Clase B (GetObject, HeadObject): $0,36 por millón | 1 M clase A y 10 M clase B al mes; DeleteObject gratis |
| Backblaze B2 | PutObject (clase A) y ListObjects (clase C): sin cargo | GetObject, HeadObject (clase B): sin cargo | Clases A, B y C gratis; clase D (notificaciones de eventos): $0,004 por 10.000 tras 2.500 diarias gratis |
| Spaces Standard | Sin tarifa por solicitud publicada | Sin tarifa por solicitud publicada | La página de precios no lista cargos por operación |
Expresado por millón, S3 cobra $5 por PUT y $0,40 por GET; R2, $4,50 y $0,36. La diferencia real aparece al restar las cuotas incluidas de R2 y al revisar qué operación cae en qué clase: en R2, ListObjects es clase A, igual que una escritura.
Mide operaciones con los logs o métricas del bucket actual, no con una estimación de endpoints. Los reintentos del SDK, las cargas multipart y los thumbnails generados al vuelo multiplican las llamadas respecto de lo que ve el usuario.
Documentación: AWS: solicitudes de S3 ↗ · Cloudflare: clases de operaciones de R2 ↗ · Backblaze: clases de transacciones de B2 ↗ · DigitalOcean: precios de Spaces ↗
4. El egress suele ser la partida más grande#
Egress es el tráfico que sale del proveedor. Para un bucket que sirve imágenes, descargas o video directamente al público, suele superar al almacenamiento. Por eso las diferencias de política pesan más que las diferencias de tarifa por GB-mes.
- S3: la salida a internet desde us-east-1 cuesta $0,09 por GB en el primer tramo; los primeros 100 GB al mes son gratis, pero esa cuota se comparte entre todos los servicios y regiones de AWS.
- R2: el egress hacia internet no tiene cargo, tanto en Standard como en Infrequent Access.
- B2: incluye egress gratis de hasta tres veces tu almacenamiento medio mensual; el excedente se cobra a $0,01 por GB.
- Spaces: la suscripción incluye 1.024 GiB de salida; el tráfico adicional cuesta $0,01 por GiB y el tráfico de entrada no descuenta de esa cuota.
Un CDN delante del bucket cambia esta partida, pero no la elimina: las peticiones que no están en caché siguen saliendo del origen, y el CDN tiene sus propias tarifas. Modela la tasa de aciertos de caché que realmente observas, no la que esperas.
Documentación: AWS: transferencia de datos de S3 ↗ · Cloudflare: egress de R2 ↗ · Backblaze: política de egress de B2 ↗ · DigitalOcean: transferencia de Spaces ↗
5. Mínimos mensuales y retención mínima#
Spaces Standard tiene una suscripción base de $5 al mes que incluye 250 GiB de almacenamiento compartidos entre todos tus buckets; el almacenamiento adicional cuesta $0,02 por GiB-mes. La facturación empieza con el primer bucket y termina cuando destruyes todos. Para un proyecto pequeño, ese mínimo es la cifra que vas a pagar aunque guardes unos pocos GB.
En el otro extremo, R2 incluye 10 GB-mes, 1 millón de operaciones clase A y 10 millones clase B al mes en su clase Standard, y B2 incluye los primeros 10 GB de almacenamiento. S3 Standard no aplica duración mínima ni tamaño mínimo de objeto.
La retención mínima aparece en clases pensadas para datos poco consultados. S3 Standard-IA cobra un mínimo de 30 días y un tamaño mínimo facturable de 128 KB por objeto. R2 Infrequent Access tiene 30 días mínimos y una tarifa de recuperación de $0,01 por GB. Spaces Cold Storage también exige 30 días de retención mínima. B2 declara que no aplica duración mínima ni tamaño mínimo de archivo.
Si tus objetos son temporales, como exportaciones que se borran a los pocos días o archivos de cuarentena, una clase infrecuente puede salir más cara que la Standard aunque su tarifa por GB sea menor: pagas los 30 días completos.
Documentación: DigitalOcean: suscripción y Cold Storage de Spaces ↗ · Cloudflare: cuotas incluidas y R2 Infrequent Access ↗ · Backblaze: condiciones de almacenamiento de B2 ↗ · AWS: mínimos de S3 Standard-IA ↗
6. Ejemplo calculado: 1 TB con tráfico público#
Supuestos: 1.000 GB decimales de almacenamiento medio (931,32 GiB), 5 millones de PUT, 50 millones de GET y 1.000 GB de salida a internet al mes. Tarifas publicadas, primer tramo, sin impuestos, sin créditos de cuenta nueva y sin otros servicios de AWS que consuman la cuota gratuita de transferencia. El egress se toma en la unidad que publica cada proveedor, sin conversión.
S3 Standard (us-east-1)
almacenamiento 931,32 GiB × $0,023 = $21,42
PUT 5.000 × $0,005 por mil = $25,00
GET 50.000 × $0,0004 por mil = $20,00
egress (1.000 − 100) GB × $0,09 = $81,00
total = $147,42
R2 Standard
almacenamiento (1.000 − 10) GB × $0,015 = $14,85
clase A (5 M − 1 M) × $4,50 por M = $18,00
clase B (50 M − 10 M) × $0,36 por M = $14,40
egress sin cargo = $0,00
total = $47,25
Backblaze B2
almacenamiento (1.000 − 10) GB × $0,00695 = $6,88
PUT y GET clases A y B gratis = $0,00
egress 1.000 GB < 3 × 1.000 GB = $0,00
total = $6,88
Spaces Standard
suscripción incluye 250 GiB y 1.024 GiB = $5,00
almacenamiento (931,32 − 250) GiB × $0,02 = $13,63
egress 931,32 GiB < 1.024 GiB = $0,00
total = $18,63| Proveedor | Escenario 1 TB | Bucket de 20 GB | Qué domina el costo |
|---|---|---|---|
| S3 Standard | $147,42 | $1,33 | Egress y operaciones |
| R2 Standard | $47,25 | $0,15 | Operaciones clase A y B |
| Backblaze B2 | $6,88 | $0,07 | Almacenamiento |
| Spaces Standard | $18,63 | $5,00 | Suscripción mínima |
La columna de 20 GB supone 100.000 PUT, 1 millón de GET y 20 GB de salida. En S3: 20 GB son 18,63 GiB × $0,023 = $0,43, más $0,50 de PUT y $0,40 de GET; el egress queda dentro de los 100 GB gratuitos. En R2 y B2 todo cabe en las cuotas incluidas salvo 10 GB de almacenamiento. En Spaces pagas el mínimo de $5.
El orden cambia con tu patrón. Si el bucket es un backup que casi no sale a internet, el egress de S3 desaparece y la diferencia se reduce. Si listas mucho, R2 sube. Y si guardas poco, el mínimo de Spaces pesa más que cualquier tarifa. Tampoco incluimos rendimiento, regiones, cumplimiento ni integración con el resto de tu nube, que pueden justificar pagar más.
Documentación: AWS: precios de S3 ↗ · Cloudflare: precios de R2 ↗ · Backblaze: precios de B2 ↗ · DigitalOcean: precios de Spaces ↗
7. Checklist antes de elegir proveedor#
- Mide almacenamiento medio, PUT, GET, LIST y egress de los últimos tres meses con datos reales.
- Anota la unidad de cada tarifa (GB, GiB o TB) y normaliza antes de comparar.
- Identifica qué operación cae en cada clase, sobre todo los listados.
- Comprueba si cada cuota incluida es por cuenta o por bucket antes de restarla.
- Calcula el egress con tu tasa real de aciertos de CDN.
- Revisa mínimos mensuales y retención mínima si usas clases infrecuentes o frías.
- Incluye lo que el precio del bucket no cubre: CDN, cómputo, cifrado administrado, replicación y migración de datos existentes.
- Repite el cálculo con el doble de tráfico para ver qué proveedor escala peor.
- Vuelve a verificar las tarifas en la página oficial antes de firmar: cambian sin aviso.
El comparador de almacenamiento de Codifly muestra las tarifas marginales normalizadas a GB decimal y sus advertencias por proveedor. Úsalo como punto de partida y reemplaza los supuestos con tus métricas.
Fuentes y alcance
Documentación consultada el 26 de septiembre de 2026. Los ejemplos y criterios de decisión son propuestas editoriales; adáptalos al contrato de tu aplicación y valídalos en tu entorno de pruebas autorizado.
Compara almacenamiento de objetos
Revisa tarifas, límites, condiciones y fuentes de cada opción.
Abrir comparador