---
cuppy_hub: gcp
cuppy_path: reference/storage/cloud-storage.md
cuppy_section: docs
cuppy_doc: 5EJY-KT49
cuppy_doc_uuid: d9574a0f-fcb3-42d0-bd5a-bb457a3eb412
cuppy_permalink: https://cuppy.io/gcp/d/5EJY-KT49
cuppy_version: 1
cuppy_updated: 2026-10-23T16:16:52.575Z
cuppy_canonical: https://cuppy.io/gcp/docs/reference/storage/cloud-storage
cuppy_mcp: https://cuppy.io/mcp
cuppy_body_sha256: b76ede08b5727fd340429fcba18cfc25dcb03a4d53dc9d1091187e0b70deca85
# cuppy_body_sha256 is over the document body ALONE, excluding both generated blocks.
---


# Cloud Storage — classes and locations

## 1. The five classes

| Class | API name | Minimum storage duration | Retrieval fee | Stated availability |
|---|---|---|---|---|
| Rapid | `RAPID` | none | no | >99.95% (zones) |
| Standard | `STANDARD` | none | no | >99.99% multi/dual-region; 99.99% region |
| Nearline | `NEARLINE` | **30 days** | yes | 99.95% multi/dual; 99.9% region |
| Coldline | `COLDLINE` | **90 days** | yes | 99.95% multi/dual; 99.9% region |
| Archive | `ARCHIVE` | **365 days** | yes | 99.95% multi/dual; 99.9% region |

`STANDARD` is what you get if you specify nothing.

**The 365 days is the number to carry into any estimate.** It is Cloud Storage's longest commitment and it is
twice the equivalent commitment on either of the other two major clouds — see `guides/parity/storage.md` §2,
which is the one parity row most likely to change an archive design.

## 2. Minimum storage duration is a billing commitment, not a retention lock

The object can be deleted whenever you like. The *charge* is the commitment. So a lifecycle rule that moves
objects to `ARCHIVE` and a retention policy that deletes them after six months are, together, a bill for
twelve months of archive storage on data you no longer have. **Check the lifecycle rule against the class's
minimum duration before you ship it**, in both directions.

## 3. Four location types, and one that is class-restricted

| Location type | What it means |
|---|---|
| **zone** | zonal — **`RAPID` storage only** |
| **region** | one region |
| **dual-region** | two geographically separate locations |
| **multi-region** | geographically dispersed, worldwide |

Two readings:

- `RAPID` is the only class that can be zonal, so "zonal object storage" and "a cheap archive" are not
  combinable choices;
- dual-region and multi-region are **location types of the bucket**, not replication you configure afterwards.
  A bucket's location is fixed at creation in the model this page describes, which makes it one more
  create-time decision to get right (the same family as Cloud KMS's, see
  `reference/identity/secret-manager-and-kms.md` §2).

## 4. The class is per object, and a bucket default is only a default

> "A storage class is a piece of metadata that is used by every object"

And: **changing a bucket's default storage class does not affect existing objects.** This is the fact that
makes "we switched the bucket to Coldline" a false economy claim — it applies to new objects only. Existing
objects move when a lifecycle rule or an explicit rewrite moves them, and each move is itself a billable
operation.

## 5. What this document does not say

No prices, and no adjustable quota values — `reference/overview/quotas-and-limits-model.md` explains why and
names the call. The retrieval-fee column records **that a fee exists**, which is the design-bearing fact; the
amount is a live value.

Next: `reference/storage/cloud-storage-access-control.md` (the single most consequential setting on a bucket),
`reference/storage/errors.md` (the JSON API reason strings), `guides/parity/storage.md`.


---
<!-- cuppy -->
You are reading one file. The same content is free over MCP at https://cuppy.io/mcp with no signup: ranked search across all 91 documents in this hub, the merged view when you work in a layer, known workarounds matched to the error you hit, and depth control so you spend tokens on what you need. Start with the `_hello` tool. How to connect: https://cuppy.io/gcp/ Something wrong in this document? Report it with the `session feedback` tool on the same endpoint.
<!-- /cuppy -->
