Generator PESEL
Dane testowe PESEL z poprawną sumą kontrolną. Wskaż datę urodzenia i płeć lub generuj losowo. 1, 5, 10 lub 100 numerów naraz. Każdy przechodzi walidację 1-3-7-9.
:
Specyfikacja formatu PESEL
Format: RRMMDDSSSGK, 11 cyfr.
| Pozycja | Pole | Opis |
|---|---|---|
| 1–2 | RR |
Ostatnie dwie cyfry roku urodzenia |
| 3–4 | MM |
Miesiąc urodzenia (z przesunięciem stulecia, patrz niżej) |
| 5–6 | DD |
Dzień urodzenia |
| 7–9 | SSS |
Numer porządkowy (sekwencyjny w ramach tej samej daty) |
| 10 | G |
Cyfra płci: nieparzysta (1,3,5,7,9) = mężczyzna, parzysta (0,2,4,6,8) = kobieta |
| 11 | K |
Cyfra kontrolna (suma kontrolna mod-10 z wagami) |
Numer porządkowy + cyfra płci dają do 5 000 przypisań na płeć dziennie. Numery nie są nigdy ponownie przydzielane 1.
Pełny przewodnik po PESEL (jak go uzyskać, gdzie znaleźć, czym się różni od NIP/REGON) znajdziesz w naszym Walidatorze PESEL.
Kodowanie stulecia
Miesiąc w PESEL pełni podwójną funkcję, wskazując miesiąc kalendarzowy i stulecie urodzenia:
| Stulecie | Przesunięcie | Zakres kodów | Przykład: marzec |
|---|---|---|---|
| 1800–1899 | +80 | 81–92 | 83 |
| 1900–1999 | +0 | 01–12 | 03 |
| 2000–2099 | +20 | 21–32 | 23 |
| 2100–2199 | +40 | 41–52 | 43 |
| 2200–2299 | +60 | 61–72 | 63 |
Generowanie: weź miesiąc kalendarzowy, dodaj przesunięcie dla danego stulecia, wpisz wynik na pozycje 3–4. Generator robi to automatycznie dla wszystkich pięciu zakresów.
Dekodowanie: sprawdź, w którym zakresie mieści się kod miesiąca, odejmij przesunięcie — masz miesiąc i stulecie.
W praktyce spotykasz tylko zakresy 1900 (01–12) i 2000 (21–32).
Algorytm sumy kontrolnej
Wagi: 1, 3, 7, 9, 1, 3, 7, 9, 1, 3. Algorytm:
- Pomnóż każdą z pierwszych 10 cyfr przez odpowiadającą wagę.
- Zsumuj iloczyny.
- Weź resztę z dzielenia przez 10.
- Odejmij od 10.
- Weź resztę z dzielenia przez 10. To jest cyfra kontrolna.
Przykład: 02070803628
Cyfry: 0 2 0 7 0 8 0 3 6 2
Wagi: 1 3 7 9 1 3 7 9 1 3
0 6 0 63 0 24 0 27 6 6
Suma: 132
132 mod 10 = 2
10 - 2 = 8
8 mod 10 = 8 ✓
Cyfra kontrolna = 8, zgadza się z jedenastą cyfrą. PESEL poprawny. Każdy numer wygenerowany przez to narzędzie ma obliczoną cyfrę kontrolną.
JavaScript
function peselCheckDigit(digits) {
const weights = [1, 3, 7, 9, 1, 3, 7, 9, 1, 3];
const sum = digits
.slice(0, 10)
.reduce((acc, d, i) => acc + d * weights[i], 0);
return (10 - (sum % 10)) % 10;
}
function isValidPesel(pesel) {
if (!/^\d{11}$/.test(pesel)) return false;
const digits = [...pesel].map(Number);
return digits[10] === peselCheckDigit(digits);
}
Python
def pesel_check_digit(digits: list[int]) -> int:
weights = [1, 3, 7, 9, 1, 3, 7, 9, 1, 3]
total = sum(d * w for d, w in zip(digits[:10], weights))
return (10 - total % 10) % 10
def is_valid_pesel(pesel: str) -> bool:
if not pesel.isdigit() or len(pesel) != 11:
return False
digits = [int(d) for d in pesel]
return digits[10] == pesel_check_digit(digits)
PHP
function isValidPesel(string $pesel): bool {
if (!preg_match('/^\d{11}$/', $pesel)) return false;
$weights = [1, 3, 7, 9, 1, 3, 7, 9, 1, 3];
$digits = array_map('intval', str_split($pesel));
$sum = 0;
for ($i = 0; $i < 10; $i++) {
$sum += $digits[$i] * $weights[$i];
}
$check = (10 - ($sum % 10)) % 10;
return $digits[10] === $check;
}
Wyrażenia regularne (regex)
Walidacja formatu (11 cyfr):
^\d{11}$
Dopasowuje dowolny ciąg 11 cyfr. Nie sprawdza sumy kontrolnej ani poprawności daty.
Walidacja struktury (poprawne zakresy miesięcy i dni):
^[0-9]{2}(0[1-9]|1[0-2]|2[1-9]|3[0-2]|4[1-9]|5[0-2]|6[1-9]|7[0-2]|8[1-9]|9[0-2])(0[1-9]|[12]\d|3[01])\d{5}$
Weryfikuje, czy cyfry 3–4 to poprawny kod miesiąca (z dowolnego zakresu stulecia), a cyfry 5–6 to dzień w zakresie 01–31. Nie sprawdza sumy kontrolnej ani kalendarzowej poprawności dat (np. 31 lutego przejdzie).
Dlaczego sam regex nie wystarczy: PESEL 99023112345 przechodzi oba wzorce: miesiąc 02 jest poprawny, dzień 31 mieści się w zakresie. Ale 31 lutego nie istnieje. A żaden regex nie weryfikuje cyfry kontrolnej. Zawsze waliduj programowo (algorytm powyżej).
Edge case’y do testowania
Jeśli budujesz walidację lub przetwarzanie PESEL, te przypadki łamią naiwne implementacje. Użyj generatora powyżej, żeby wyprodukować numery pasujące do każdego scenariusza.
Urodzenia po 2000 roku. Kody miesięcy 21–32 psują parsery zakładające, że miesiąc to zawsze 01–12. PESEL zaczynający się od 052706 to 6 lipca 2005, a nie czerwiec z błędnym miesiącem. Parser musi odjąć przesunięcie stulecia przed interpretacją miesiąca.
29 lutego. Poprawny w latach przestępnych, niepoprawny w pozostałych. 000229xxxxx jest poprawny (2000 był rokiem przestępnym), ale 010229xxxxx nie (2001 nie był). Walidator powinien sprawdzać faktyczny kalendarz, nie tylko zakres.
Granice stuleci. 000121xxxxx = 21 stycznia 1900 (kod miesiąca 01, zakres 1900). 002121xxxxx = 21 stycznia 2000 (kod miesiąca 21, zakres 2000). Te same cyfry roku — różne stulecia. Testuj oba.
Cyfra płci = 0. Cyfra 10 = 0 oznacza kobietę (0 jest parzyste). Niektóre implementacje błędnie traktują 0 jako „brak wartości”. Zero jest poprawną cyfrą parzystą.
Cyfra kontrolna = 0. Gdy reszta z dzielenia wynosi 0, cyfra kontrolna to 0 (nie 10). (10 - 0) % 10 = 0. Testuj tę granicę.
Granice dni. Dzień 01 i 31 (tam gdzie dozwolony) to edge case’y. Miesiące z 28, 29 lub 30 dniami nie powinny akceptować dnia 31. Kwiecień, czerwiec, wrzesień i listopad mają maksymalnie 30 dni.
Generatory danych testowych Poland.gg
Potrzebujesz więcej niż samych PESELi? Poland.gg ma generatory wszystkich polskich numerów identyfikacyjnych, każdy z poprawną sumą kontrolną:
| Numer | Generator | Walidator |
|---|---|---|
| PESEL (11 cyfr) | Ta strona | Sprawdź PESEL |
| NIP (10 cyfr) | Generator NIP | Weryfikator NIP |
| REGON (9 lub 14 cyfr) | Generator REGON | Walidator REGON |
| Nr dowodu osobistego (9 znaków) | Generator nr dowodu | — |
| IBAN (26 cyfr) | Generator IBAN | Sprawdź IBAN |
| Mikrorachunek (26 cyfr) | Generator mikrorachunku | Sprawdź mikrorachunek |
Wszystkie narzędzia działają w przeglądarce, bez rejestracji, bez przesyłania danych na serwer.
Często zadawane pytania
Czy to są prawdziwe numery PESEL?
Nie. Numery są strukturalnie poprawne — mają prawidłową sumę kontrolną, poprawne kodowanie daty i właściwą cyfrę płci — ale nie są przypisane do rzeczywistych osób. Są generowane losowo i bezpieczne do użycia w środowiskach testowych.
Czy mogę użyć wygenerowanych PESELi w systemie produkcyjnym?
Nie. Używaj wygenerowanych numerów tylko w środowiskach deweloperskich, testowych, stagingowych i demo. Wygenerowany PESEL może przypadkowo pokryć się z numerem prawdziwej osoby. Prawo polskie traktuje PESEL jako dane osobowe w rozumieniu RODO. Jeśli potrzebujesz danych testowych w środowisku zbliżonym do produkcyjnego, generuj numery ze stuleci 1800 lub 2200, gdzie ryzyko kolizji z żyjącą osobą jest znikome.
Jak generator zapewnia poprawność sumy kontrolnej?
Generator konstruuje pierwsze 10 cyfr na podstawie daty i płci (lub wartości losowych), a następnie oblicza jedenastą cyfrę standardowym algorytmem wag 1-3-7-9. Cyfra kontrolna jest zawsze obliczona, nigdy losowa.
Ile poprawnych PESELi istnieje dla jednej daty?
Każda data urodzenia obsługuje 5 000 męskich i 5 000 żeńskich PESELi (cyfry porządkowe 000–999 połączone z 10 możliwymi cyframi płci na numer porządkowy, podzielone na płeć). Dla jednej daty i płci istnieje dokładnie 5 000 poprawnych numerów.
Czy mogę wygenerować PESEL na konkretną datę urodzenia?
Tak. Przełącz tryb na „Konkretna data" w panelu powyżej, wybierz datę i płeć. Generator automatycznie zastosuje poprawne kodowanie stulecia i obliczy sumę kontrolną. Przydaje się, gdy masz testową osobę z konkretną datą urodzenia i potrzebujesz pasującego numeru PESEL.
Szukam walidatora, nie generatora.
Użyj naszego Walidatora PESEL. Odczyta datę urodzenia, płeć i zweryfikuje sumę kontrolną. Strona zawiera pełny przewodnik po formacie PESEL, kodowaniu stulecia i blokadzie numeru.
Bibliografia
Najlepsze narzędzia
Natychmiastowe i oparte na oficjalnych algorytmach.
Polskie statystyki
Oficjalne dane o demografii, gospodarce i społeczeństwie.
Rynek Mieszkaniowy Polski
Zasoby mieszkaniowe, mieszkania oddane do użytku, pozwolenia na budowę, średnia wielkość mieszkania, wyposażenie w instalacje, trendy budowlane.
- Mieszkania ogółem
- 15 965 713
- Mieszkania na 1000 mieszkańców
- 425,9
Turystyka Polski
Przyjazdy turystów zagranicznych, noclegi oraz odwiedzający według kraju pochodzenia.
- Turyści zagraniczni
- 8 857 567
- Noclegi
- 20 217 607
Dzietność Polski
Wskaźniki urodzeń, zgonów i przyrost naturalny.
- Współczynnik dzietności
- 1,099 na kobietę
- Urodzenia żywe
- 251 782
Przestępczość Polski
Wskaźniki przestępczości, kategorie przestępstw i wykrywalność sprawców.
- Wskaźnik przestępczości
- 20,6 na 1000
- Wykrywalność sprawców
- 69,8%
Prezentowani na dane.gov.pl, oficjalnym portalu otwartych danych RP (wpis nr 1322).
© 2026 Poland.gg