Google Cloud Storage Overview: What It Is, Buckets, Pricing, and Use Cases

Google Cloud Storage is GCP’s managed object storage service. You store files as objects inside buckets, access them over HTTPS, and pay only for what you store and transfer. It scales from a single file to exabytes with no infrastructure to manage.

This page gives you a complete working model of Cloud Storage: what it is, how buckets and objects work, which storage class to pick, how pricing breaks down, and when to use it over other GCP storage services. By the end you will know whether Cloud Storage is the right tool for your workload and what to configure when you create your first bucket. Read it alongside Storage Buckets Explained, Storage Classes in GCP, and Cloud Storage Security to build a full working model before creating your first bucket.

In plain English

Cloud Storage is a place to put files on the internet. You create a named container called a bucket, put files into it, and those files become available over a URL. Each file is called an object. The object has a name (its unique address within the bucket), the actual data, and a small set of metadata (file type, size, timestamps, and any custom labels you add).

Unlike a database, you cannot query the contents of a file. Unlike a hard drive, you cannot mount Cloud Storage and edit files in place. You upload whole files and download whole files. That constraint is also what makes Cloud Storage extremely durable and cost-effective at scale.

Analogy

A Cloud Storage bucket is like a post office depot. Each parcel (object) has a label (its name) and contents (your data). You hand over the whole parcel at once and collect the whole parcel at once. You cannot open a parcel and swap out one page while it sits in the depot. The depot does not care what is inside; it stores and retrieves by label.

What is Google Cloud Storage?

Cloud Storage is a fully managed object storage service. You do not provision servers, manage disk replication, or configure RAID arrays. Google handles all of that. You interact with the service through a bucket API, command-line tools, client libraries, or the Cloud Console.

It is designed to store unstructured data at massive scale: images, videos, audio files, PDFs, log archives, database backups, trained model weights, compiled binaries, and any other file type. A single object can be up to 5 TB. A single bucket can hold effectively unlimited objects.

Cloud Storage is also designed for extreme durability. Google publishes a 99.999999999% (eleven nines) annual durability target, meaning data loss due to hardware failure is effectively eliminated through redundant storage across multiple physical locations. Availability SLAs are separate and depend on storage class and location type, ranging from 99% for Archive in a single region up to 99.95% for Standard in a multi-region.

Almost every GCP architecture uses Cloud Storage as the durable staging layer for unstructured data. It integrates directly with BigQuery (as a data source and export target), Cloud Run, Cloud Functions, Dataflow, and Vertex AI. It is the default place files land between processing steps.

How Cloud Storage works

Working with Cloud Storage follows a clear sequence:

  1. Create a bucket. A bucket is the top-level container. You choose a globally unique name, a location (region, dual-region, or multi-region), and a default storage class. These choices are permanent or difficult to change after creation. See Storage Buckets Explained for naming rules and all configuration options.

  2. Choose a location and storage class. Location determines where Google physically stores your data and affects latency and egress costs. Storage class determines how much you pay per GB per month and what minimum storage durations apply. See Storage Classes in GCP to match the right class to each workload.

  3. Upload objects. Objects are uploaded whole, over HTTPS. For files over a few hundred megabytes, use a resumable upload so the transfer can restart from where it left off rather than the beginning. The Uploading Files guide covers both gcloud storage and the legacy gsutil tool.

  4. Control access. By default a bucket is private. You grant access through IAM roles at the bucket level. For temporary or unauthenticated access, generate a signed URL. For a full walkthrough of the access model, see Cloud Storage IAM vs ACLs.

  5. Add lifecycle, versioning, and retention controls. Versioning keeps previous copies of objects when they are overwritten or deleted. Lifecycle rules automate transitions to colder storage classes or deletions after a set number of days, the most practical way to control costs as buckets grow.

Key concepts

Buckets

A bucket is the top-level container for objects in Cloud Storage. Every object lives inside a bucket. Bucket names are globally unique across every GCP project in the world. If another customer has already created my-app, you cannot use that name. Location, access model, and default storage class are set at the bucket level. Some of these (such as location) cannot be changed after creation, so the decisions you make at bucket creation time matter.

Objects

An object is an individual item stored in a bucket. It has three components: the data bytes, a unique key (the object’s name within the bucket), and metadata (content type, custom labels, encryption details, timestamps). Object names are arbitrary strings up to 1,024 bytes. The maximum single-object size is 5 TB. Object names can contain forward slashes, which the console renders as folders, but those folders do not exist as separate resources. The namespace is genuinely flat.

Storage classes

Cloud Storage has four storage classes that trade monthly storage cost against access cost and minimum storage durations:

  • Standard. Highest per-GB cost, no minimum duration, cheapest per-operation cost. Use for data accessed frequently or unpredictably.
  • Nearline. Lower storage cost, 30-day minimum storage duration. Use for data accessed roughly once a month.
  • Coldline. Lower still, 90-day minimum. Use for data accessed roughly once a quarter.
  • Archive. Lowest storage cost, 365-day minimum, highest access cost. Use for long-term backups and compliance archives accessed rarely if ever.

Choosing the wrong class is one of the most direct causes of unexpected storage bills. The Storage Classes in GCP page covers each class with concrete examples and a guide to switching classes automatically with lifecycle rules.

Locations

Location is set at bucket creation and cannot be changed afterwards. There are three location types:

  • Region. Data is stored redundantly across multiple zones within a single region (e.g., europe-west2 for London). Lowest latency for workloads in that region, lowest storage cost.
  • Dual-region. Data is stored in two specific regions (e.g., EUR4 covers europe-north1 and europe-west4). Automatic geo-redundancy. Turbo Replication can guarantee replication to the second region within 15 minutes.
  • Multi-region. Data is stored across multiple data centres within a large geographic area (US, EU, or ASIA). Highest availability for globally distributed access, at slightly higher cost.

Create buckets in the same region as the compute that accesses them. Cross-region reads incur network egress charges and increase latency.

Access methods

Cloud Storage objects can be accessed through several interfaces:

  • Cloud Console. Browser-based upload, download, and bucket management.
  • gcloud storage CLI. The modern command-line tool; prefer this for new work.
  • gsutil. The legacy Python-based CLI, still widely used and fully functional.
  • Client libraries. SDKs for Python, Go, Java, Node.js, and others.
  • JSON and XML APIs. REST APIs for direct HTTP access.
  • Signed URLs. Time-limited, pre-authorised URLs for temporary access without requiring a Google account.

When to use Cloud Storage

Cloud Storage is the right choice when you need to store files durably, retrieve them by name or URL, and do not need to query fields inside them. Common use cases:

  • Storing user-uploaded content (images, documents, videos) for web or mobile applications
  • Serving static website assets and single-page applications
  • Archiving logs, database dumps, and compliance records at low cost
  • Staging data before loading it into BigQuery or another data warehouse
  • Storing ML training datasets and model artefacts for Vertex AI pipelines
  • Distributing large files (software releases, model weights) globally via Cloud CDN
  • Holding pipeline inputs and outputs between processing steps in Dataflow or Cloud Run jobs
  • Storing application backups that need to be retained for months or years

When not to use Cloud Storage

Cloud Storage is not the right tool for every storage problem. If your access pattern involves querying, filtering, or mounting, a different service is a better fit:

  • Structured relational data. Use Cloud SQL. Cloud Storage cannot run SQL queries or join tables.
  • Document and real-time app data. Use Firestore. If you need to query individual fields, filter records, or push updates to clients, Firestore is the right model.
  • Shared network file system. Use Filestore. If your VMs or containers need to mount a shared POSIX-compatible filesystem, Cloud Storage cannot fill that role.
  • Mounted block disk. Use Persistent Disk. If you need a low-latency disk attached to a Compute Engine VM with random read/write access, use block storage.
  • High-throughput analytical row data. Use Bigtable for sub-10ms access to millions of rows per second in a wide-column model.

For a complete decision flow across all GCP storage options, see Choosing the Right Storage Service.

Object storage vs block storage vs file storage

There are three fundamental types of storage. Understanding the difference explains why Cloud Storage excels for some workloads and is wrong for others.

Analogy

Object storage is like a courier service: you hand over a sealed package and get the whole thing back. Block storage is like your own hard drive: you can open any file to any page and edit it directly. File storage is like a shared office cabinet: multiple people can browse the same folders at the same time. Cloud Storage is the courier service. It is not your hard drive, and it is not the shared cabinet.

  • Object storage stores data as discrete, self-contained objects each identified by a unique key. You access objects via HTTP APIs with no mounting, no partial reads, and no genuine directory tree. Cloud Storage is object storage. Ideal for files written once and read many times at scale.

  • Block storage presents data as a raw disk split into fixed-size blocks. The operating system manages a filesystem on top. You can mount it, read arbitrary byte ranges, and update files in place. GCP’s block storage is Persistent Disk. Ideal for databases and OS volumes attached to VMs.

  • File storage presents a shared filesystem with a genuine directory tree over a network protocol like NFS. Multiple clients can mount the same filesystem concurrently. GCP’s managed file storage is Filestore. Ideal for shared application data that must be mounted across multiple VMs simultaneously.

Cloud Storage wins on durability, global scale, and cost per GB for whole files accessed by name. It loses on latency and mutability compared to block or file storage. Pick based on your access pattern, not on which sounds most capable.

Pricing overview

Cloud Storage pricing has three main components. Understanding each helps you make decisions that avoid surprise charges:

  • Storage cost. Charged per GB per month. The rate varies by storage class (Standard is highest, Archive is lowest) and by location (multi-region costs slightly more than regional). This is the largest cost component for most workloads.

  • Operation cost. Charged per request. Class A operations (writes, bucket creates, listing) cost more than Class B operations (reads, metadata lookups). For most workloads this is small, but high-frequency workloads with many small objects can produce meaningful operation charges.

  • Network egress cost. Charged when data leaves a region. Transfers within the same region are free. Transfers to a different GCP region or to the internet incur charges. Co-locating compute and storage in the same region eliminates most egress costs.

Early deletion fees

Nearline, Coldline, and Archive objects have minimum storage durations (30, 90, and 365 days respectively). If you delete an object before its minimum duration, you are still charged for the full minimum period. This catches teams by surprise when they clean up old data. Match the storage class to the realistic access frequency from the start, and use lifecycle rules to automate transitions rather than deleting prematurely.

GoalPrimary setupRelated guide
Reduce long-term retention costLifecycle transitions to colder classes as objects age.Object Lifecycle Management
Predict storage spendMatch access pattern to storage class before uploading.Storage Classes in GCP
Serve app assets securely without a public bucketPrivate bucket with signed URLs for each request.Signed URLs Explained
Enforce least-privilege accessUniform bucket-level access with IAM roles.Cloud Storage IAM vs ACLs

Security and access control

A newly created Cloud Storage bucket is private by default. All data is encrypted at rest using Google-managed AES-256 keys, and all data in transit uses TLS. These defaults are good starting points, but production buckets require deliberate configuration.

Public bucket risk

Adding allUsers or allAuthenticatedUsers to a bucket’s IAM policy makes every object in that bucket accessible to anyone on the internet, with no authentication required. This is intentional for static website hosting but catastrophic for any bucket holding customer data, database exports, internal assets, or credentials. Review IAM bindings carefully before enabling public access. Use signed URLs to share individual objects instead of making the whole bucket public.

  • IAM roles. Grant access at the bucket level using roles such as roles/storage.objectViewer (read-only), roles/storage.objectCreator (write-only), and roles/storage.objectAdmin (full object control). Follow least privilege: grant only what each service account or user actually needs.

  • Uniform bucket-level access. Disables legacy object-level ACLs and makes IAM the sole access control mechanism. Enable this on every new bucket. Without it, both IAM and ACLs are active simultaneously, which makes permissions difficult to audit and creates unexpected access paths. See Cloud Storage IAM vs ACLs for details on migrating existing buckets.

  • Public access prevention. An organisational policy constraint that blocks buckets from being made publicly accessible. Apply this to any project that should never serve public content.

  • Customer-Managed Encryption Keys (CMEK). Supply your own Cloud KMS key instead of relying on Google-managed keys. This gives you revocation control: if you revoke access to the KMS key, Cloud Storage can no longer decrypt those objects. Required by some compliance frameworks.

Use signed URLs for controlled sharing

Signed URLs are the right way to share objects with people or systems that do not have GCP accounts. They are time-limited (you set the expiry), scoped to a specific object and HTTP method (GET, PUT, or DELETE), and require no changes to bucket IAM policy. When the URL expires, access is automatically revoked. See Signed URLs Explained for how to generate them.

For a complete treatment of hardening Cloud Storage buckets in production, see Cloud Storage Security.

Creating your first bucket

The following commands create a regional bucket with uniform bucket-level access enabled and upload a file:

# Create a regional bucket with uniform bucket-level access
gcloud storage buckets create gs://my-app-assets \
  --location=europe-west2 \
  --uniform-bucket-level-access \
  --default-storage-class=STANDARD

# Upload a file
gcloud storage cp ./logo.png gs://my-app-assets/images/logo.png

# List objects in a bucket
gcloud storage ls gs://my-app-assets/

# Download a file
gcloud storage cp gs://my-app-assets/images/logo.png ./logo-copy.png

# Remove an object
gcloud storage rm gs://my-app-assets/images/logo.png
gcloud storage vs gsutil

gcloud storage is the modern replacement for gsutil. Both work today. New scripts should use gcloud storage as it is faster for large transfers and fully integrated with the gcloud CLI. The Uploading Files guide covers both tools side by side with examples.

Common beginner mistakes

  1. Treating Cloud Storage like a filesystem. Beginners often try to update a single row in a stored CSV, append to a log file, or edit a document in place. Object storage does not support partial updates. You must download the whole object, modify it, and re-upload the whole thing. If you need incremental writes, use a database or Filestore instead.

  2. Making a bucket public accidentally. Adding allUsers to a bucket’s IAM policy makes every object accessible to anyone on the internet. This is intentional for static website hosting but catastrophic for buckets containing customer data or internal assets. Always review IAM bindings before enabling public access. Use signed URLs to share individual objects without exposing the whole bucket.

  3. Choosing the wrong region. Reads from a different region than your compute incur network egress charges and increase latency. The bucket location cannot be changed after creation. Place buckets in the same region as the Cloud Run services, Cloud Functions, or VMs that access them most frequently.

  4. Mixing IAM and ACLs on the same bucket. Without uniform bucket-level access, both IAM and legacy ACLs are active simultaneously. An object can be readable via its ACL even when the IAM policy appears private. Enable uniform bucket-level access on all new buckets and manage everything through IAM alone.

  5. Picking the wrong storage class. Storing rarely-accessed data in Standard wastes money on storage cost. Storing frequently-accessed data in Archive wastes money on access fees. Match the class to the realistic access frequency. Use lifecycle rules to automatically move objects to colder classes as they age.

  6. Ignoring lifecycle rules. Buckets that accumulate data over time will grow in cost indefinitely without rules to expire old objects or transition them to colder classes. Set up lifecycle rules from day one on any bucket where objects become less valuable over time.

Cloud Storage vs other GCP storage services

Cloud Storage is the right tool for files. For other data shapes, GCP has purpose-built services:

ServiceWhat it is forUse instead of Cloud Storage when…
Cloud SQLRelational data (PostgreSQL, MySQL, SQL Server)You need SQL queries, joins, transactions, or row-level access
FirestoreDocument model for app data with real-time syncYou need to query individual fields, filter records, or push updates to clients
BigtableWide-column store for high-throughput time-series or operational dataYou need sub-10ms access at millions of rows per second
FilestoreManaged NFS file systemVMs or containers need to mount a shared POSIX filesystem
Persistent DiskBlock storage attached to Compute Engine VMsYou need a low-latency disk with random read/write access for databases or OS volumes

For a full decision flow that walks through all GCP storage options in order, see Choosing the Right Storage Service.

Frequently asked questions

What is Google Cloud Storage used for?

Cloud Storage is used for storing files that need to be retrieved by name or URL: user-uploaded images and videos, application backups, database dumps, log archives, static website assets, ML training datasets, and pipeline staging data. It works at any scale, from a handful of files to exabytes, and integrates directly with most GCP services.

What is the difference between a bucket and an object?

A bucket is the top-level container: every project can have many buckets, each with a globally unique name, a fixed location, and a default storage class. An object is the individual item stored inside a bucket, a file plus its metadata. You cannot store objects outside a bucket, and buckets do not contain other buckets.

Is Google Cloud Storage a database?

No. Cloud Storage stores unstructured data as whole files. You retrieve an object in full; you cannot query fields within it, filter by column values, or join objects together. If you need to search or filter individual records, use Cloud SQL for relational data or Firestore for document data instead.

Is Google Cloud Storage the same as a disk or file system?

No. Cloud Storage is object storage, not block storage or file storage. You cannot mount it as a local drive, partially update a file in place, or append data to an existing object. You always upload and download whole objects. If you need a shared file system, use Filestore. If you need a mounted block disk, use Persistent Disk.

How do I securely share a file in Cloud Storage?

The standard approach is a signed URL, a time-limited pre-authorised URL that grants access to a specific object without requiring the recipient to have a Google account or any IAM permissions. Signed URLs can be scoped to GET, PUT, or DELETE, and expire after a duration you control. Never make a bucket public just to share a single file.

Last verified: 23 March 2026 Cloud services change frequently. Verify details against official documentation before making infrastructure decisions.