Personnummer-Prüfziffer Schweden
Die neun Ziffern 811228987, Geburtsdatum plus Seriennummer, erhalten die Prüfziffer 4, die Personnummer lautet also 8112289874. Geben Sie neun Ziffern ein, um eine schwedische Personennummer zu ergänzen, oder zehn oder zwölf, um die letzte Ziffer zu prüfen. Kostenlos in Ihrem Browser.
- Kostenlos
- Läuft in Ihrem Browser
- Ohne Anmeldung
- Ihre Daten bleiben auf Ihrem Gerät
Im Browser ausführen – kostenlos
Rechenbeispiel
- Zahl
- 811228987
- Berechnungsmodus
- Compute
- Eingabe
- 811228987
- Datum
- 811228
- Seriennummer
- 987
Die schwedische Personnummer (persönliche Identitätsnummer) ist der nationale zivile Identifikator für Steuern, Gesundheit, Banken, Beschäftigung und die meisten öffentlichen Formulare in Schweden. In der Kurzform umfasst sie zehn Ziffern: sechs für das Geburtsdatum als Jahr-Monat-Tag (YYMMDD), drei Serienziffern für diesen Tag und eine abschließende Prüfziffer. Die zwölfstellige Form stellt das Jahrhundert voran (YYYYMMDD plus Serie und Prüfziffer). Die Prüfziffer ist keine zufällige Verzierung: Sie entsteht durch den Luhn-Algorithmus über die ersten neun Ziffern der Kurzform, sodass eine einzelne Tippfehlerziffer oder ein vertauschtes Paar meist abgelehnt wird, bevor die Nummer gespeichert oder abgeglichen wird. Diese Fähigkeit implementiert ausschließlich diese Prüfsumme. Der Modus compute akzeptiert genau neun Ziffern — Datum plus Serie ohne Prüfziffer — und liefert die Luhn-Ziffer sowie die vollständige zehnstellige Zeichenkette. Der Modus validate akzeptiert zehn oder zwölf Ziffern (optionale Bindestriche oder Pluszeichen) und meldet, ob die letzte Ziffer dem neu berechneten Erwartungswert entspricht.
So wird die Prüfziffer der schwedischen Personnummer berechnet
Nach den Regeln der schwedischen Steuerbehörde (Skatteverket) ist die Personnummer-Prüfziffer ein Luhn-mod-10-Wert über neun Ziffern: das sechsstellige Geburtsdatum YYMMDD gefolgt von der dreistelligen Serie. Von links, Positionen eins bis neun, wird jede ungerade Position verdoppelt; ist das Doppelte einer Ziffer größer als neun, wird neun abgezogen (gleichwertig die Quersumme des Produkts). Gerade Positionen tragen die Ziffer unverändert bei.
Die neun gewichteten Werte werden addiert; die Prüfziffer ist zehn minus diese Summe modulo zehn, erneut modulo zehn, sodass das Anhängen der Prüfziffer die zehnstellige Kurzform Luhn-konsistent macht. Die Validierung berechnet die erwartete Ziffer aus der neunstelligen Nutzlast neu und vergleicht sie mit der letzten Ziffer der eingereichten Nummer. Bei der zwölfstelligen Jahrhundertform YYYYMMDDNNNC bleibt die Luhn-Nutzlast die neun Ziffern YYMMDDNNN — die Jahrhundertziffern sind Anzeige-Metadaten für Alter und Sortierung, nicht Teil der Prüfsummengewichte.
Ein bekanntes Beispiel ist die Basis 811228987, die Prüfziffer 4 und die vollständige Kurzform 8112289874 liefert (oft 811228-9874 geschrieben). Koordinationsnummern (samordningsnummer) nutzen den Monatstag plus sechzig und dieselbe Luhn-Regel über die neun Körperziffern; dieses Werkzeug erfindet dafür keinen anderen Algorithmus. Der Algorithmus ist deterministisch und lokal: kein Aufruf des Bevölkerungsregisters, keine Uhr und keine Zufallsquelle.
Gegenüber generischen Karten-Luhn- oder IMEI-Luhn-Werkzeugen ist die Suchabsicht hier eng: Personen, die einen Rechner für die schwedische Personnummer-Prüfziffer aus Datum und Serie oder einen Prüfer für zehn- oder zwölfstellige schwedische Personennummern brauchen, kein Zahlungs- oder Gerätewerkzeug.
Wo Personnummer-Prüfziffern in reale schwedische Abläufe passen
Banken und Fintechs validieren zehn- oder zwölfstellige Personnummer-Werte bei der Kontoeröffnung, damit eine einzelne Vertauschung keinen Phantomkunden und keinen abgelehnten KYC-Datensatz erzeugt. ETL-Jobs, die schwedische Kunden- oder Mitarbeiter-Stammdaten laden, gehen jede Personnummer-Spalte in einem CSV- oder XML-Feed durch, rufen validate auf und stellen Zeilen mit valid false unter Quarantäne — fangen sowohl menschliche Edits als auch Off-by-one-Fehler in Generatoren ab. Kommunale und Schulsysteme akzeptieren oft Bindestrich- und Kompaktformen; das Entfernen von Leerzeichen, Bindestrichen und Plus vor der Ziffernprüfung hält den Vertrag einfach, ohne einen zweiten Algorithmus zu erfinden.
Behandeln Sie eine bestandene Personnummer-Prüfung nicht als Nachweis, dass der Inhaber im Bevölkerungsregister lebt, eine schwedische Personalausweis-Karte besitzt oder zu einer Leistung berechtigt ist; sie belegt nur, dass die Luhn-Ziffer mit Datum und Serie unter den offiziellen schwedischen Personnummer-Gewichten übereinstimmt.
Anwendungsfälle
Personnummer-Spalten in Stammdaten auditieren
Validieren Sie jede Personnummer in einer CRM-, EHR- oder Payroll-CSV stapelweise und stellen Sie Zeilen unter Quarantäne, deren Prüfziffer nicht mehr dem neu berechneten Erwartungswert entspricht.
Häufige Fragen
Was ist die Prüfziffer einer schwedischen Personnummer?
Es ist die zehnte Ziffer der kurzen schwedischen persönlichen Identitätsnummer, berechnet mit dem Luhn-Algorithmus über das sechsstellige Geburtsdatum und die dreistellige Serie, sodass Tipp- und Scanfehler meist vor dem Speichern erkannt werden.
Wie wird die Prüfziffer der Personnummer berechnet?
Von den neun Ziffern aus Datum und Seriennummer wird jede Ziffer an ungerader Stelle von links verdoppelt, bei Ergebnissen über neun zieht man neun ab. Dann wird alles addiert, und die Prüfziffer ergänzt die Summe zu einem Vielfachen von zehn. Für 811228987 ist sie 4.
Ändert die zwölfstellige Form die Prüfziffer?
Nein. In der zwölfstelligen Form zeigen die ersten beiden Ziffern nur das Jahrhundert für Anzeige und Sortierung. Die Prüfziffer wird weiterhin aus denselben neun Ziffern der Kurzform berechnet.
Funktioniert das auch mit Koordinierungsnummern?
Ja. Eine Koordinierungsnummer, schwedisch samordningsnummer, addiert sechzig zum Geburtstag, nutzt aber dieselbe Luhn-Regel über ihre neun Ziffern. Das Werkzeug berechnet und prüft sie also genauso.
Beweist eine gültige Personnummer, dass die Person registriert ist?
Nein. Sie zeigt nur, dass die letzte Ziffer zu Datum und Seriennummer passt. Das Werkzeug fragt kein Melderegister ab und sagt nichts darüber, ob die Person lebt, gemeldet ist oder Anspruch auf eine Leistung hat.
Verwandte Tools
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/enc/personnummer-sweden \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"number":"811228987"}'const res = await fetch("https://api.kit.forhosting.com/enc/personnummer-sweden", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"number": "811228987"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/personnummer-sweden",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"number": "811228987"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/personnummer-sweden", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"number":"811228987"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"number":"811228987"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/personnummer-sweden", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"number": "811228987"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.personnummer_sweden",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |
Technische Hinweise
Nichtnumerische Körper und falsche Längen scheitern mit invalid_input statt stillschweigendem Entfernen. Dieselbe reine Arithmetik läuft kostenlos im Browser und zum veröffentlichten API-Preis, ohne Registerabfrage und ohne Behauptung, dass eine gültige Prüfsumme bedeute, die Person lebe, sei registriert oder zu einer Leistung berechtigt.
Eingabevertrag, Modi und Fehlerverhalten
Senden Sie ein number-Feld mit dem Personnummer-Körper. Falsche Länge ist ein expliziter Fehler, der Modus und gesendete Länge nennt — neun für compute, zehn oder zwölf für validate —, damit Client-Formulare eine präzise Meldung zeigen können, ohne zu raten. Leere Zeichenketten, fehlendes number und ungültige mode-Werte scheitern vor jeder Luhn-Summe und werden nicht berechnet. Eine wohlgeformte Zeichenkette mit lediglich falscher Prüfziffer liefert valid false, ohne zu werfen. Leerzeichen, Bindestriche und Pluszeichen werden entfernt, damit gängige schwedische Anzeigeformen wie 811228-9874 oder 19811228-9874 nach Normalisierung akzeptiert werden; andere Satzzeichen und Buchstaben werden als nichtnumerische Eingabe mit invalid_input abgelehnt, sodass ein still bereinigter Wert nie in den Speicher gelangt. Der Modus compute ist Standard: die Engine verlangt genau neun Ziffern, liefert check_digit als einstellige Zeichenkette, with_check als die zehnstellige kurze Personnummer zum Drucken oder Speichern sowie date (YYMMDD) und serial (drei Ziffern) für Audit-Trails. Der Modus validate akzeptiert genau zehn Ziffern (YYMMDDNNNC) oder zwölf (YYYYMMDDNNNC); die Antwort meldet valid true, wenn die letzte Ziffer dem neu berechneten expected_check_digit entspricht, und enthält stets payload (die neun Luhn-Ziffern), check_digit, expected_check_digit, date, serial, form ("10" oder "12") und length. Bei zwölfstelliger Eingabe enthält die Antwort auch century und full_date (YYYYMMDD), ohne das Jahrhundert in die Luhn-Summe einzubeziehen. Alias-Schlüssel wie personnummer, pnr, digits und code werden für dasselbe Nutzlastfeld akzeptiert, sodass Integrationen mit schwedischen Feldnamen nicht umbenennen müssen. Weil der Pfad reines Parse ohne Uhr, Zufallsquelle oder Netz ist, liefert derselbe JSON-Körper immer dasselbe JSON-Ergebnis im kostenlosen Browser-Tool und in der API zu $0.002 pro erfolgreicher Anfrage.
Wo Personnummer-Prüfziffern in reale schwedische Abläufe passen
Gesundheitsportale und Apothekensysteme berechnen expected_check_digit neu, wenn eine Klinik eine Nummer am Telefon hört oder aus einer gescannten Karte einfügt, und fangen Tippfehler ab, bevor ein Journal-Eintrag oder ein Rezept abgelegt wird. Arbeitgeber und Payroll-Anbieter vervollständigen neunstellige Basen in Sandboxes mit compute und speichern with_check bei Testmitarbeitern, die wie Produktionsidentifikatoren aussehen müssen.
Integrationsbeispiele
9-stellige Personnummer-Basis für Testfixtures vervollständigen
Rufen Sie den Modus compute mit YYMMDD plus drei Serienziffern auf, speichern Sie with_check und nutzen Sie die zehnstellige Personnummer in Sandbox-KYC-, Payroll- oder Gesundheits-Testdatensätzen.
Getippte oder importierte schwedische Personennummern prüfen
Wenn ein Formular, eine Bankdatei oder ein HR-Feed zehn oder zwölf Ziffern sendet, rufen Sie validate auf und blockieren Sie die Aufnahme bei valid false; zeigen Sie expected_check_digit, um einen einzelnen Tippfehler zu korrigieren.
Technische Fragen
Wie berechne ich eine Personnummer-Prüfziffer mit dieser API?
Senden Sie POST mit number auf genau neun Ziffern (YYMMDD plus Serie) und mode compute (oder lassen Sie mode weg). Die Antwort enthält check_digit und with_check (die vollständige zehnstellige Kurzform).
Wie prüfe ich eine vollständige zehn- oder zwölfstellige Personnummer?
Senden Sie POST mit der Ziffernzeichenkette (optionale Bindestriche oder Plus) und mode validate. Die Antwort enthält valid, check_digit, expected_check_digit und payload (die neun Luhn-Ziffern).
Was passiert bei falscher Länge, Buchstaben oder seltsamer Zeichensetzung?
Nach dem Entfernen von Leerzeichen, Bindestrichen und Pluszeichen werden nichtnumerische Eingaben und Längen ungleich neun (compute) oder zehn/zwölf (validate) mit invalid_input abgelehnt. Fehlgeschlagene Validierungsaufgaben werden nicht berechnet.
Ist das Personnummer-Prüfziffer-Werkzeug kostenlos?
Das Browser-Werkzeug ist kostenlos und läuft lokal. API-Aufrufe nutzen das prepaid KIT-Guthaben zum veröffentlichten Basispreis $0.002; ungültige Eingabe wird nie berechnet.