{
  "$schema": "https://degreesofsatoshi.com/encyclopedia/schemas/article-v1.json",
  "schemaVersion": "1.0.0",
  "id": "ethereum-address-checksums",
  "canonical": "https://degreesofsatoshi.com/encyclopedia/ethereum-address-checksums/",
  "collection": "ethereum",
  "title": "Ethereum address checksums: what mixed-case letters can detect",
  "description": "Learn what EIP-55 mixed-case checksums can detect, what capitalization means and why a correctly checksummed address can still be the wrong recipient.",
  "aliases": [],
  "dates": {
    "published": "2026-10-02",
    "modified": "2026-10-02",
    "verified": "2026-10-02T18:12:41.505Z",
    "dataAsOf": "2026-10-02"
  },
  "authorship": {
    "publisher": "Degrees of Satoshi editorial project",
    "process": "AI-assisted research and drafting with a separate automated source-verification pass; no external expert or named human review is implied."
  },
  "quickAnswer": {
    "text": "EIP-55 encodes a checksum in the capitalization of an Ethereum address’s hexadecimal letters. Correct checking can detect many typing mistakes without changing the underlying address bytes. It does not prove the recipient’s identity, select a network or guarantee that every possible error will be caught.",
    "claimId": "ethereum-address-checksums-quick-answer",
    "sourceIds": [
      "eip55"
    ]
  },
  "keyFacts": [
    {
      "label": "Bytes",
      "value": "Changing letter case does not change the underlying hexadecimal address value.",
      "sourceIds": [
        "eip55"
      ],
      "id": "bytes",
      "claimId": "ethereum-address-checksums-fact-bytes"
    },
    {
      "label": "Checksum",
      "value": "Capitalization is derived from a hash of the lowercase address text.",
      "sourceIds": [
        "eip55"
      ],
      "id": "checksum",
      "claimId": "ethereum-address-checksums-fact-checksum"
    },
    {
      "label": "Limits",
      "value": "The checksum detects errors probabilistically; it is not identity verification.",
      "sourceIds": [
        "eip55"
      ],
      "id": "limits",
      "claimId": "ethereum-address-checksums-fact-limits"
    }
  ],
  "prerequisites": [
    "ethereum-accounts"
  ],
  "sections": [
    {
      "id": "encoding",
      "heading": "A readable error check in the same address length",
      "sourceIds": [
        "eip55"
      ],
      "paragraphs": [
        "Hexadecimal letters can be printed in upper or lower case. EIP-55 uses that choice to encode checksum information, while digits carry no case distinction.",
        "A receiving interface can recalculate the expected capitalization and flag a mismatch. Not every interface requires mixed-case input, so acceptance alone does not demonstrate that a checksum was checked."
      ]
    },
    {
      "id": "wrong-recipient",
      "heading": "Valid encoding can still point to an attacker",
      "sourceIds": [
        "eip55",
        "eth-accounts"
      ],
      "paragraphs": [
        "Someone else’s address can have a perfectly valid checksum. A checksum is designed to detect accidental corruption of an identifier, not decide whether the destination belongs to the person you intended.",
        "Compare the complete trusted destination and network context. Matching only a few leading or trailing characters provides much less information than checking the full address."
      ]
    },
    {
      "id": "network",
      "heading": "Keep network identity separate",
      "sourceIds": [
        "eip55",
        "eip155"
      ],
      "paragraphs": [
        "The EIP-55 algorithm does not use a chain ID. The same checksummed address can therefore be displayed on different compatible networks.",
        "For tokens, verify both the asset’s contract and the recipient on the intended chain. Address formatting cannot repair a transfer sent to an unsupported network."
      ]
    }
  ],
  "faq": [
    {
      "question": "Is a lowercase Ethereum address always invalid?",
      "answer": "No. Lowercase text can represent valid address bytes, and some correct EIP-55 outputs are entirely lowercase. A wallet accepting lowercase input does not by itself show that it checked the expected checksum capitalization.",
      "sourceIds": [
        "eip55"
      ]
    }
  ],
  "claims": [
    {
      "id": "ethereum-address-checksums-quick-answer",
      "articleSlug": "ethereum-address-checksums",
      "statement": "EIP-55 encodes a checksum in the capitalization of an Ethereum address’s hexadecimal letters. Correct checking can detect many typing mistakes without changing the underlying address bytes. It does not prove the recipient’s identity, select a network or guarantee that every possible error will be caught.",
      "sourceIds": [
        "source-c93ab64d58d43e2d"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-c93ab64d58d43e2d",
          "locator": "Specification; Rationale; Test Cases"
        }
      ],
      "scope": {
        "collection": "ethereum",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T18:12:41.505Z",
        "reviewer": "Codex independent automated reviewer /root/verify_ethereum_100",
        "notes": [
          "Read EIP-55 algorithm, rationale and test vectors: ASCII lowercase hex is hashed, decimal digits have no case, and no chain ID enters the algorithm.",
          "Corrected lowercase FAQ because Test Cases explicitly include valid entirely lowercase checksum outputs. Acceptance by a wallet alone still does not establish checksum validation."
        ]
      }
    },
    {
      "id": "ethereum-address-checksums-fact-bytes",
      "articleSlug": "ethereum-address-checksums",
      "statement": "Bytes: Changing letter case does not change the underlying hexadecimal address value.",
      "sourceIds": [
        "source-c93ab64d58d43e2d"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-c93ab64d58d43e2d",
          "locator": "Specification; Rationale; Test Cases"
        }
      ],
      "scope": {
        "collection": "ethereum",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T18:12:41.505Z",
        "reviewer": "Codex independent automated reviewer /root/verify_ethereum_100",
        "notes": [
          "Read EIP-55 algorithm, rationale and test vectors: ASCII lowercase hex is hashed, decimal digits have no case, and no chain ID enters the algorithm.",
          "Corrected lowercase FAQ because Test Cases explicitly include valid entirely lowercase checksum outputs. Acceptance by a wallet alone still does not establish checksum validation."
        ]
      }
    },
    {
      "id": "ethereum-address-checksums-fact-checksum",
      "articleSlug": "ethereum-address-checksums",
      "statement": "Checksum: Capitalization is derived from a hash of the lowercase address text.",
      "sourceIds": [
        "source-c93ab64d58d43e2d"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-c93ab64d58d43e2d",
          "locator": "Specification; Rationale; Test Cases"
        }
      ],
      "scope": {
        "collection": "ethereum",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T18:12:41.505Z",
        "reviewer": "Codex independent automated reviewer /root/verify_ethereum_100",
        "notes": [
          "Read EIP-55 algorithm, rationale and test vectors: ASCII lowercase hex is hashed, decimal digits have no case, and no chain ID enters the algorithm.",
          "Corrected lowercase FAQ because Test Cases explicitly include valid entirely lowercase checksum outputs. Acceptance by a wallet alone still does not establish checksum validation."
        ]
      }
    },
    {
      "id": "ethereum-address-checksums-fact-limits",
      "articleSlug": "ethereum-address-checksums",
      "statement": "Limits: The checksum detects errors probabilistically; it is not identity verification.",
      "sourceIds": [
        "source-c93ab64d58d43e2d"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-c93ab64d58d43e2d",
          "locator": "Specification; Rationale; Test Cases"
        }
      ],
      "scope": {
        "collection": "ethereum",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T18:12:41.505Z",
        "reviewer": "Codex independent automated reviewer /root/verify_ethereum_100",
        "notes": [
          "Read EIP-55 algorithm, rationale and test vectors: ASCII lowercase hex is hashed, decimal digits have no case, and no chain ID enters the algorithm.",
          "Corrected lowercase FAQ because Test Cases explicitly include valid entirely lowercase checksum outputs. Acceptance by a wallet alone still does not establish checksum validation."
        ]
      }
    }
  ],
  "sources": [
    {
      "id": "eip55",
      "label": "Mixed-case checksum address encoding",
      "publisher": "Ethereum Improvement Proposals",
      "url": "https://eips.ethereum.org/EIPS/eip-55",
      "locator": "Specification; Rationale; Test Cases",
      "note": "Capitalization encodes a checksum without changing the address bytes.",
      "version": "EIP/ERC-55; retrieved document hash recorded",
      "checkedAt": "2026-10-02T17:03:42.205Z",
      "contentSha256": "c204b03e6e2b392c88a5271d5ff20d3a42d2105abd52459e95bd3a4736e49768",
      "recordId": "source-c93ab64d58d43e2d"
    },
    {
      "id": "eth-accounts",
      "label": "Ethereum accounts",
      "publisher": "ethereum.org contributors",
      "url": "https://ethereum.org/en/developers/docs/accounts/",
      "locator": "Account types; An account examined; Account creation",
      "note": "Key-controlled and code-controlled accounts, balances, nonces and storage.",
      "version": null,
      "checkedAt": "2026-10-02T17:03:41.958Z",
      "contentSha256": "262a5694899ae6f774aacae66b13d6929b658ecc9e23c276af9e23ee9455f034",
      "recordId": "source-2fb64d6fc5cedb00"
    },
    {
      "id": "eip155",
      "label": "Simple replay attack protection",
      "publisher": "Ethereum Improvement Proposals",
      "url": "https://eips.ethereum.org/EIPS/eip-155",
      "locator": "Specification",
      "note": "Transaction chain ID domain separation; not blanket protection for all signatures.",
      "version": "EIP/ERC-155; retrieved document hash recorded",
      "checkedAt": "2026-10-02T17:03:42.312Z",
      "contentSha256": "d2ee74d5b9d5230e5871645148c0978b10463b039a25d2ba753d3a8d6350c8c0",
      "recordId": "source-1975773eb9dbad9f"
    }
  ],
  "related": {
    "articles": [
      "ethereum-chain-id",
      "stablecoin-contract-addresses",
      "ethereum-wallet-requests"
    ],
    "dossiers": [],
    "wallets": []
  },
  "revisionHistory": [
    {
      "date": "2026-10-02",
      "kind": "published",
      "summary": "First publication after primary-source research and independent automated verification."
    }
  ],
  "citation": "Degrees of Satoshi editorial project. “Ethereum address checksums: what mixed-case letters can detect.” Published 2026-10-02; updated 2026-10-02. https://degreesofsatoshi.com/encyclopedia/ethereum-address-checksums/"
}
