Turkey TC Kimlik No Validator

Verify the two check digits of a Turkish national ID number instantly.

Ad placeholder (leaderboard)
Enjoying the tools? Go Pro for £4.99 (one-time) and remove all ads — forever, on this device. Remove ads — £4.99

The TC Kimlik No (Türkiye Cumhuriyeti Kimlik Numarası — Turkish Republic Identity Number) is the 11-digit national identification number assigned to every Turkish citizen. It appears on national identity cards (Nüfus Cüzdanı), passports, driving licences, tax documents, and social security records. Unlike the national IDs of many countries, the TC Kimlik No does not embed a birth date, gender code, or region — it is a sequentially assigned numeric string protected by two independent check digits at positions 10 and 11.

This validator implements both official checksum formulas exactly as published by the General Directorate of Civil Registration and Citizenship Affairs (Nüfus ve Vatandaşlık İşleri Genel Müdürlüğü — NVİ). It is useful for form-validation logic in web and mobile applications serving Turkish users, HR or KYC pipelines that must reject malformed inputs before submitting to a government API, and anyone who wants to verify that a transcribed or scanned number has no digit errors.

How it works

A TC Kimlik No is valid when all three of the following conditions hold simultaneously:

Condition 1 — no leading zero: Digit 1 must be in the range 1–9. A zero first digit is forbidden by specification.

Condition 2 (Rule 1) — tenth digit check:

oddSum  = d1 + d3 + d5 + d7 + d9
evenSum = d2 + d4 + d6 + d8

d10 = (oddSum × 7 − evenSum) mod 10

The intermediate value oddSum × 7 − evenSum can occasionally be negative (e.g., all odd digits are 0 and some even digits are non-zero). The implementation adds 10 before the modulo operation to keep the result positive, then takes mod 10 again — mathematically equivalent and always in range 0–9.

Condition 3 (Rule 2) — eleventh digit check:

d11 = (d1 + d2 + d3 + d4 + d5 + d6 + d7 + d8 + d9 + d10) mod 10

The second check digit simply sums all ten preceding digits and takes the last decimal digit of that sum. Because d10 is included, an error in d10 will automatically cascade to an error in d11, making double-bit transcription errors highly detectable.

Example walk-through

Consider the obviously-fake sample number 10000000146:

PositionDigit
d11
d20
d30
d40
d50
d60
d70
d80
d91
d104
d116

Rule 1: oddSum = 1+0+0+0+1 = 2, evenSum = 0+0+0+0 = 0. Expected d10 = (2×7 − 0) mod 10 = 14 mod 10 = 4. Actual d10 = 4. Pass.

Rule 2: sum of d1–d10 = 1+0+0+0+0+0+0+0+1+4 = 6. Expected d11 = 6 mod 10 = 6. Actual d11 = 6. Pass.

Leading digit is 1, not 0. All three conditions satisfied — the number is valid. The tool shows every one of these steps in its results table so you can trace any failure instantly.

Every calculation happens locally in your browser. No data is ever sent to a server.

Ad placeholder (rectangle)