S3 Versioning allows multiple versions of objects to be stored in a single S3 bucket. When versioning is enabled for a bucket, S3 automatically assigns a unique version ID to each object upload or change. This prevents accidental overwriting and enables restoration of previous versions. Versioning is configured at the bucket level and version IDs are opaque strings assigned by S3 to distinguish object versions.