Back to all articles

ID number guide

South African ID Number Structure: Digit-by-Digit Guide (2026)

Complete breakdown of the 13-digit South African ID number structure: birth date encoding, gender sequence, citizenship digit, population register index, and Luhn checksum — with worked examples and validation boundaries.

Published 11 June 2026Updated 11 June 2026Reference guide for teams validating South African ID numbers
Structure guide, not a government lookup. This page explains the published 13-digit format. CheckID validates numbers against that structure in memory. We do not query the Department of Home Affairs and we cannot confirm that a structurally valid number belongs to the person who submitted it.

Every South African identity number issued under the current scheme is a 13-digit code with fixed segments. Understanding the South African ID number structure helps HR, finance, and developer teams catch input errors early — and explain why a number can look plausible yet fail validation.

The layout follows regulation 3 of the Identification Regulations, 1998 (under the Identification Act, 1997). CheckID validates against this published structure; we do not access Home Affairs systems.

The 13-digit layout at a glance

PositionSegmentMeaning
1–6YYMMDDDate of birth (century inferred from current year)
7–10SSSSGender sequence (0000–4999 female, 5000–9999 male)
11CCitizenship (0 SA citizen, 1 non-SA citizen, 2 refugee)
12APopulation register index (usually 8; 9 when daily allocation exhausted)
13ZLuhn checksum over the first 12 digits

Worked example: 8001015009087

  • 800101 → date of birth 1 January 1980 (century rule: when the two-digit year is greater than the current year's last two digits, the century resolves to 19xx — here, 80 in 2026 → 1980).
  • 5009 → gender sequence in the male range (leading digit 5).
  • 0 → SA citizen.
  • 8 → standard population register index.
  • 7 → checksum digit that satisfies the Luhn formula for digits 1–12.

Change only the final digit to 6 and the number fails checksum validation even though the visible birth date still looks reasonable — a common data-entry mistake in CSV imports.

What structural validation catches — and what it misses

A validator applying this structure rejects wrong lengths, impossible calendar dates (for example 32 January or 30 February in a non-leap year), unrecognised citizenship codes, and checksum failures. It does not confirm that the number is active on Home Affairs records, that the physical ID document is genuine, or that the submitter is the lawful holder.

For a visual breakdown, open the interactive SA ID number explainer. For checksum maths, read SA ID checksum explained.

Automate the same rules in your stack

Developers can call the ID Validator API or follow the developer guide for request shapes and field names. Compare quotas on pricing when you move from manual checks to production volume.

Validate structure at scale

Use the homepage tool for ad-hoc checks or the REST API when you need the same rules inside your own systems — always with zero ID storage on CheckID servers.

Related articles