User Rating 0.0 โ˜…โ˜…โ˜…โ˜…โ˜…
Total Usage 0 times
Select a country and click Generate
Is this tool helpful?

Your feedback helps us improve.

โ˜… โ˜… โ˜… โ˜… โ˜…

About

National identification numbers in Northern Europe follow strict algorithmic structures. Each country uses a unique combination of birth date encoding, sequence numbering, and checksum validation. A malformed test ID will be rejected by any system that implements proper validation, causing false negatives in QA pipelines and wasted debugging hours. This generator produces structurally valid IDs for 8 countries: Estonia, Latvia, Lithuania, Finland, Sweden, Norway, Denmark, and Iceland. All checksums are computed using the actual government-specified algorithms (weighted modular arithmetic, Luhn, or lookup tables). These IDs are intended exclusively for software testing and development purposes.

Note: generated IDs are algorithmically valid but do not correspond to real persons. The tool approximates real-world ID pools but does not guarantee uniqueness across generations. Edge cases such as leap year dates (Feb 29) are handled correctly. Some countries have transitioned formats over time (Latvia post-2017, Finland post-2023), and both legacy and current formats are supported where applicable.

id generator national id test data nordic baltic personnummer isikukood henkilotunnus personal code

Formulas

Each country uses a weighted checksum to validate the ID. The general pattern is a dot product of digits with a weight vector, followed by a modular reduction.

checksum = mod(nโˆ‘i=1 di โ‹… wi, m)

Where di is the i-th digit of the ID, wi is the corresponding weight, and m is the modulus (11 for most countries, 31 for Finland, 10 for Sweden Luhn).

Estonia and Lithuania stage 1 weights: [1,2,3,4,5,6,7,8,9,1]. If remainder = 10, apply stage 2 weights: [3,4,5,6,7,8,9,1,2,3]. If still 10, checksum = 0.

Sweden uses the Luhn algorithm: double every other digit from the right, sum the resulting digits, and the check digit satisfies (S + d) mod 10 = 0.

Finland maps the 9-digit numeric portion modulo 31 to the character set: 0123456789ABCDEFHJKLMNPRSTUVWXY.

Norway uses two check digits with weights [3,7,6,1,8,9,4,5,2] and [5,4,3,2,7,6,5,4,3,2] respectively, both mod 11. If either remainder is 1, the combination is invalid and a new sequence is tried.

Iceland uses weights [3,2,7,6,5,4,3,2] on the first 8 digits. The check digit = 11 โˆ’ (sum mod 11). If result is 11, check digit = 0. If 10, the combination is invalid.

Reference Data

CountryID NameFormatLengthChecksumGender EncodedExample Structure
๐Ÿ‡ช๐Ÿ‡ช EstoniaIsikukoodGYYMMDDSSSC11Mod 11 (2-stage weights)Yes (digit 1)39901011234
๐Ÿ‡ฑ๐Ÿ‡ป Latvia (old)Personas kodsDDMMYY-CNNND11 + dashMod 11 weighted (deprecated)No010190-12345
๐Ÿ‡ฑ๐Ÿ‡ป Latvia (new)Personas kods32XXXXXXXXD11Mod 11No32XXXXXXXX
๐Ÿ‡ฑ๐Ÿ‡น LithuaniaAsmens kodasGYYMMDDSSSC11Mod 11 (2-stage weights)Yes (digit 1)38501011234
๐Ÿ‡ซ๐Ÿ‡ฎ FinlandHenkilรถtunnusDDMMYYCSSSD11Mod 31 โ†’ char lookupYes (odd=M, even=F)010190-123A
๐Ÿ‡ธ๐Ÿ‡ช SwedenPersonnummerYYMMDD-SSSD10 + dashLuhn algorithmYes (digit 9 odd=M)900101-1234
๐Ÿ‡ณ๐Ÿ‡ด NorwayFรธdselsnummerDDMMYYIIIKK112 check digits (mod 11)Yes (digit 9 odd=M)01019012345
๐Ÿ‡ฉ๐Ÿ‡ฐ DenmarkCPR-nummerDDMMYY-SSSS10 + dashNone (post-2007)Yes (last digit odd=M)010190-1234
๐Ÿ‡ฎ๐Ÿ‡ธ IcelandKennitalaDDMMYYRRCX10Mod 11 (weights 3,2,7,6,5,4,3,2)No0101901239
G = gender/century digit, S = sequence, C = checksum, D = check digit, I = individual, K = kontroll, R = random, X = century

Frequently Asked Questions

No. The IDs are algorithmically constructed using valid checksum rules but are randomly generated. They do not correspond to any real individual. They are designed exclusively for software testing, form validation, and QA automation.
Norway's Fรธdselsnummer uses two check digits computed via mod 11. If either computation yields a remainder of 1, no valid single check digit exists (since digits must be 0-9). The generator discards that individual number and tries the next valid sequence automatically.
Latvia introduced a new format starting with "32" followed by 8 random digits and a mod 11 check digit. The old format encoded the birth date directly (DDMMYY-CNNND). The new format contains no personally identifiable information. This tool supports both formats.
Finland traditionally used "-" for 1900-1999 and "A" for 2000-2099. From January 2023, additional century marks were introduced: "Y" (1900-1999), "X" (1800-1899), 'B'/'C'/'D'/'E'/'F' for 2000-2099. This generator uses the standard marks "-" and "A" by default as they remain the most widely supported in test systems.
Yes. In Estonia, Lithuania, and implicitly in Sweden, Norway, Denmark, and Finland, the gender-encoding digit is part of the checksum input. For example, in Estonia, males born in 1900-1999 use century digit 3, females use 4. This digit is the first input to the weighted sum, directly affecting the final check digit.
No. The generator validates the birth date against a proper leap year check before generating. If you specify a date range, only valid calendar dates are used. The leap year algorithm checks divisibility by 4, excludes centuries not divisible by 400, matching the Gregorian calendar rules.
Denmark abolished the modulus 11 check for CPR numbers assigned after October 1, 2007, because the pool of valid numbers was being exhausted. The last 4 digits are now essentially sequential with the final digit indicating gender (odd for male, even for female). Older numbers may still pass a mod 11 check, but it is no longer a requirement.