{
  "slug": "delete-marker",
  "term": "Delete marker",
  "aliases": [
    "S3 delete marker"
  ],
  "definition": "A delete marker is a payload-free S3 version that makes a key appear deleted when the marker is current.",
  "note": "Scope: S3 general-purpose buckets. A marker has a key and version ID, but no object data or ACL. A current marker produces a documented 404 on GET without versionId; explicitly requesting the marker version produces 405. Both carry x-amz-delete-marker: true. [s3-markers]",
  "status": "shipping",
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-10-15",
  "advantages": [
    {
      "text": "Version-aware listing distinguishes delete markers from retained data versions that an ordinary current-object listing does not expose.",
      "citationIds": [
        "s3-list-versions"
      ]
    }
  ],
  "limitations": [
    {
      "text": "In a suspended bucket, a simple DELETE replaces any null data version with a null marker; that payload is not retained by the marker.",
      "citationIds": [
        "s3-suspended-delete"
      ]
    },
    {
      "text": "Removing a current marker can expose an older version, but cannot recover permanently removed bytes; another remaining marker can still hide data.",
      "citationIds": [
        "s3-marker-removal"
      ]
    },
    {
      "text": "Access restrictions can return authorization errors, so a bare HTTP status does not establish the complete version history.",
      "citationIds": [
        "get"
      ]
    }
  ],
  "related": [
    "object-versioning",
    "object-version-id",
    "conditional-write"
  ],
  "citations": [
    {
      "id": "s3-markers",
      "title": "Amazon S3: Working with delete markers",
      "url": "https://docs.aws.amazon.com/AmazonS3/latest/userguide/DeleteMarker.html",
      "accessed": "2026-10-15"
    },
    {
      "id": "s3-list-versions",
      "title": "Amazon S3 API: ListObjectVersions",
      "url": "https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectVersions.html",
      "accessed": "2026-10-15"
    },
    {
      "id": "s3-suspended-delete",
      "title": "Amazon S3: Deleting objects from versioning-suspended buckets",
      "url": "https://docs.aws.amazon.com/AmazonS3/latest/userguide/DeletingObjectsfromVersioningSuspendedBuckets.html",
      "accessed": "2026-10-15"
    },
    {
      "id": "s3-marker-removal",
      "title": "Amazon S3: Managing delete markers",
      "url": "https://docs.aws.amazon.com/AmazonS3/latest/userguide/ManagingDelMarkers.html",
      "accessed": "2026-10-15"
    },
    {
      "id": "get",
      "title": "Amazon S3 API: GetObject",
      "url": "https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html",
      "accessed": "2026-10-15"
    },
    {
      "id": "hesela-object",
      "title": "Hesela: Object ETags, checksums and conditional writes",
      "url": "https://hesela.com/analyses/object-etags-checksums-conditional-writes/",
      "accessed": "2026-10-15"
    }
  ]
}
