Bulgaria EGN Validator

Validate a Bulgarian EGN with weighted-checksum verification and birth-date + region extraction.

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 Bulgarian EGN (Единен граждански номер — Unified Civil Number) is the 10-digit national identity number assigned to every Bulgarian citizen and permanent resident. Unlike a simple sequential reference code, the EGN encodes a person’s full date of birth (including the century), a gender indicator and — for the generation born in the 1900s — the Bulgarian administrative region where the birth was registered. A tenth digit computed by the official National Statistics Institute (NSI) weighted-checksum algorithm guards against most transcription errors.

This validator runs all four structural checks in your browser, explains each step in plain language and extracts every piece of embedded information when the number is fully valid. No data ever leaves your device.

Structure of the EGN

The ten digits divide into four fields:

YY  MM  DD  NNN  C
↑   ↑   ↑   ↑    ↑
Yr  Mo  Day Seq  Checksum

YY — two-digit year (digits 1-2): the last two digits of the birth year. The century is not stored directly; it is recovered from the month field (see below).

MM — encoded month (digits 3-4): this field carries both the birth month and the century:

Stored valueReal monthBirth century
01 – 121 – 121900–1999
21 – 321 – 121800–1899
41 – 521 – 122000–2099

DD — birth day (digits 5-6): 01 through the last day of the encoded month.

NNN — sequence number (digits 7-9): allocated sequentially within each birth-date group. For 1900s births, digits 7-8 index the NSI oblast table (Blagoevgrad = 00-01, Burgas = 02-03, … Yambol = 52-53). The last digit of NNN (digit 9) encodes gender: odd means male, even means female.

C — checksum digit (digit 10): computed by the weighted-sum algorithm described below.

The weighted-checksum algorithm

The Bulgarian NSI specifies a single checksum digit using these weights:

Position:  1   2   3   4   5   6   7   8   9
Weight:    2   4   8   5  10   9   7   3   6

Calculation steps:

  1. Multiply each of the first nine digits by its corresponding weight.
  2. Sum all nine products.
  3. Compute remainder = sum mod 11.
  4. If remainder is 0–9, the checksum digit equals remainder. If remainder is 10, the checksum digit is 0 (an edge case specific to the Bulgarian specification).
  5. The 10th digit of the EGN must exactly equal the computed checksum digit.

Because the weight vector is non-uniform and none of the weights are 1, a single incorrect digit in positions 1-9 will almost always produce a different checksum. The validator shows both the expected and the actual 10th digit, making it straightforward to spot the digit that was mistyped.

Example walkthrough

Consider an obviously fictional EGN with birth date 1 January 1990:

  • YY = 90, MM = 01 (January, 1900s), DD = 01
  • NNN = 002 — digit 9 is 2 (even) → female; digits 7-8 = 00 → Blagoevgrad region
  • Weighted sum: (9×2) + (0×4) + (0×8) + (1×5) + (0×10) + (1×9) + (0×7) + (0×3) + (2×6) = 18 + 0 + 0 + 5 + 0 + 9 + 0 + 0 + 12 = 44
  • 44 mod 11 = 0 → checksum digit = 0
  • Full EGN: 9001010020

Changing any single digit — including the checksum itself — will produce a different weighted sum and cause the checksum check to fail with a clear explanation of the discrepancy.

FieldValue
Date of birth1 January 1990
Century1900s
GenderFemale
Region (oblast)Blagoevgrad
Sequence002
Checksum0 (passes)

Privacy

Every calculation runs entirely in your browser using plain JavaScript arithmetic. No network request is ever made. The number you enter never leaves your device. The demo sample shown above is generated client-side from a fully fictional date and has never been assigned to any real person.

Ad placeholder (rectangle)