Skip to content
Simple Tools

Practical guide

How to check a Polish PESEL, encoded date and checksum

A PESEL can have the expected length yet contain an impossible date or a wrong check digit. Check those conditions separately. Here is how to read the local validator’s result without treating it as identity or PESEL-reservation verification.

Simple Tools editorial teamReviewed: 1 October 2026

Prepare one eleven-digit string

Enter the PESEL without a name, address or document scan. Preserve leading zeros: the form uses text, not a numeric value. Spaces and ordinary hyphens are ignored, while letters and other characters remain errors. Empty or excessively long entries trigger a form message.

After selecting “Check”, read the length, date and checksum rows. Encoded date and sex marker appear only when every check passes. A dash instead of a date after failure is intentional: the tool avoids displaying an unchecked interpretation.

Month code and century

PESEL month encoding depends on the century; digit ten encodes sex: even for female, odd for male. The table shows how our validator decodes the month. Do not replace that code with the ordinary month before checksum validation.

The tool checks a real calendar date, including month length and leap years. It does not determine age-based benefit eligibility. A future date is not rejected merely for being future; a passing date check means calendar validity only.

Decoding the month — not verifying a person
YearsMonth offsetFebruary
1800–1899+8082
1900–1999+002
2000–2099+2022
2100–2199+4042
2200–2299+6062

Source: Gov.pl — PESEL structure.

Worked example: 29 February 2000

Technical example 00222900009 encodes 2000-02-29. Multiplying its first ten digits by 1, 3, 7, 9, 1, 3, 7, 9, 1, 3 gives sum 61. Its check digit is (10 − (61 modulo 10)) modulo 10, which is 9.

The final modulo matters: a sum ending in zero produces check digit 0, not 10. Example 00222900030 has sum 70 and passes that check. Both strings illustrate the algorithm only and may coincide with an issued PESEL.

Source: PESEL regulation, section 7 — checksum, Dz.U. 2015/1984.

A matching checksum can still hide an invalid date

Example 00223000005 has matching check digit 5 but encodes nonexistent 30 February 2000. The validator rejects its date rather than displaying it as a birth date. Changing the last digit does not repair the calendar.

For a real document, compare digit order with the original and clarify discrepancies with its issuer. Do not reconstruct a person’s PESEL yourself from a birth date. In software testing, separate invalid-date cases from invalid-checksum cases so that each test targets a known condition.

Independent checks using technical examples
StringDateChecksum
00222900009PassPass
00222900000PassFail
00223000005FailPass
00222900030PassPass — digit 0

What the result cannot tell you

“Structure passes” comes from local checks, not a PESEL-register response. The tool does not establish issuance, ownership, reservation status or document authenticity. It does not send the entry to a government service.

The decoded date and sex marker describe only the string’s contents. They do not identify a person or establish a right to an account, loan or benefit. If your process requires an official check, use its designated channel rather than this validator’s result.

Protect the identifier after a local check too

The form does not store the number or result in the URL, analytics or persistent storage. “Clear” removes entries and results, and reloading does not restore them. Copy or print is a separate choice: check the destination of files, paper and clipboard content.

For an error report, use a technical example from this guide and describe the steps and expected outcome. Do not send your PESEL, an identity-document scan or another person’s details. For a set of cases, open the test generator and work without customer data.

Frequently asked questions

Why is the date hidden after a failing result?

Date and sex marker appear only after length, calendar and checksum checks pass. A dash after failure prevents a partial interpretation from appearing verified.

Does the result show PESEL reservation status?

No. The validator does not connect to registers. A passing technical result does not establish reservation, issuance or ownership and does not replace the verification required by your process.

Can a PESEL starting with zero pass?

Yes, if every check passes. Preserve all eleven characters as text. Losing a leading zero during spreadsheet import or numeric-field conversion changes the string being checked.

Is the identifier sent to analytics or browser storage?

Form entries and results stay local, without being added to the URL, localStorage, sessionStorage or analytics. Copy and print are user actions. Visiting the page still makes a normal hosting request; protect your device and clipboard too.

Official sources and scope

This guide explains technical checks, not issuance, identity, eligibility or tax-status verification. Examples illustrate arithmetic only and may coincide with issued identifiers. Do not use them in real documents, payments or accounts. These tools do not query registers.

Tools covered by this guide

Calculator

Polish NIP validator

Check NIP structure and checksum locally, without verifying issuance or ownership.

Calculator

Polish PESEL validator

Check PESEL structure and checksum locally, without verifying issuance or ownership.

Generator

Test PESEL generator

Create 1–20 test PESEL strings with passing or deliberately failing checksums.