From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

PESEL (Polish Powszechny Elektroniczny System Ewidencji Ludności, Universal Electronic System for Registration of the Population) is the national identification number used in Poland since 1979. It always has 11 digits, identifies just one person and cannot be changed to another one (except some specific situations such as gender reassignment).

The PESEL number is mandatory for all permanent residents of Poland and for temporary residents living in Poland for over 2 months. After 1 March 2015, applicants for Polish passport without a PESEL number will need to apply for PESEL prior to passport application. Otherwise, without a PESEL number, passport application and fingerprints cannot be taken.[1][2]

The PESEL was the system designed by the communist government (during PRL) to trace personal information about every citizen. It is a direct offshoot from the previous system, MAGISTER (an acronym spelling out the word 'Master', like a master's degree), which was designed to trace and record data about everyone with a university degree.[3]


PESEL number has the form of YYMMDDZZZXQ, where YYMMDD is the date of birth (with century encoded in month field), ZZZX is the personal identification number, where X codes sex (even number for females, odd number for males) and Q is a check digit, which is used to verify whether a given PESEL is correct or not.

Checksum calculation[edit]

Having a PESEL in the form of ABCDEFGHIJK, one can check the validity of the number by computing the following expression:

A×1 + B×3 + C×7 + D×9 + E×1 + F×3 + G×7 + H×9 + I×1 + J×3

The checksum is the last digit of result of the above expression subtracted from 10. If this last digit is 0 then the checksum is 0.

If the result of the last operation is not equal to the last digit (K) of a given PESEL, the PESEL is incorrect. This system works reliably well for catching one-digit mistakes and digit swaps.

Example: Checking validity of PESEL 12345678901[edit]

1×1 + 2×3 + 3×7 + 4×9 + 5×1 + 6×3 + 7×7 + 8×9 + 9×1 + 0×3 = 101

The last digit of the result (101 modulo 10): 1

The last digit is not 0 so, the checksum is 10 − 1 = 9

9 is not equal to the last digit of PESEL, which is 8, so the PESEL number contains errors.

How to code this in TypeScript[edit]

export function validatePesel(pesel: string): boolean {
    if (pesel === null || pesel.length !== 11)
        return false;

    const arr = pesel.split("");
    let sum: number = 0;

    for (let i: number = 0; i < arr.length - 1; i++) {
        sum += +arr[i] * getMultiplier(i + 1);

    const modulo = sum % 10;
    const lastD = Number(pesel.substr(pesel.length - 1));

    return (modulo === 0) && lastD === 0 ||
        lastD === 10 - modulo;

function getMultiplier(index: number): number {
    switch (index % 4) {
        case 1: return 1;
        case 2: return 3;
        case 3: return 7;
        case 0: return 9;

    throw "Something went wrong with the index calculation";


The PESEL system has been designed to cover five centuries. To distinguish people born in different centuries, numbers are added to the MM field:

  • for birthdates between 1900 and 1999 – no change to MM field is made (see below)
  • for other birthdates:
    • 2000–2099 – month field number is increased by 20
    • 2100–2199 – month + 40
    • 2200–2299 – month + 60
    • 1800–1899 – month + 80

For example, a person born on December 24, 2002 would have a PESEL number starting with 023224 and person born on December 24, 1902 would have a PESEL number starting with 021224.

Changing the PESEL number[edit]

PESEL contains the date of birth and a sex, so the number is changed if the person changes their sex or corrects their date of birth (for example, the previous date of birth was wrong). The other situation when the number is changed is "if the previous number was produced in the violation of Law" or when a birth certificate of a person changes for any reason (eg. adoption). When the PESEL number is changed, the person is not allowed to use the previous number anymore. The previous number of a person cannot be given to anyone else.

Other identifiers[edit]

A similar system of identification numbers exists for businesses, called REGON (from Rejestr Gospodarki Narodowej – Register of the National Economy). Also all business taxpayers (prior to September 2011 – all taxpayers) have a tax identification number called NIP (Numer Identyfikacji Podatkowej).

Individuals in Poland are often asked to provide the number of their Polish identity card (dowód osobisty) as identification (foreign citizens give their passport number instead). Similarly, businesses and corporations are often required to state the number at which they appear in the register of businesses, KRS - National Judicial Register (Krajowy Rejestr Sądowy), or the Taxpayer Identification Number - NIP.


  1. ^ "Passport information". Retrieved 20 March 2017.
  2. ^ "Ważna informacja dla osób ubiegających się o wydanie paszportu". 16 March 2015. Archived from the original on 14 April 2015. Retrieved 14 April 2015.
  3. ^ "Permanentna inwigilacja: telefon – twój osobisty szpieg" [Permanent surveillance: phone – your personal spy]. (in Polish). 24 July 2012. Archived from the original on 27 July 2012. Retrieved 25 July 2012.

External links[edit]