Last updated
US Social Security Number Format
A US Social Security Number (SSN) is a 9-digit number issued by the Social Security
Administration (SSA) in the format AAA-BB-CCCC, where AAA is the area number,
BB is the group number, and CCCC is the serial number. Since June 2011, the SSA uses
randomized assignment, so the area number no longer indicates the state of issuance.
Invalid SSN Patterns
| Pattern | Reason Invalid |
|---|---|
| 000-XX-XXXX | Area number 000 is never assigned |
| 666-XX-XXXX | Area number 666 is never assigned |
| 900–999-XX-XXXX | Area numbers 900–999 are never assigned |
| XXX-00-XXXX | Group number 00 is never assigned |
| XXX-XX-0000 | Serial number 0000 is never assigned |
| 078-05-1120 | Woolworth's wallet insert — widely publicized fake SSN |
| 219-09-9999 | Used in advertisements — never a real SSN |
SSN Validation in JavaScript
function validateSSN(ssn) {
// Remove dashes and spaces
const clean = ssn.replace(/[\s-]/g, '');
// Must be exactly 9 digits
if (!/^\d{9}$/.test(clean)) return { valid: false, reason: 'Must be 9 digits' };
const area = parseInt(clean.slice(0, 3));
const group = parseInt(clean.slice(3, 5));
const serial = parseInt(clean.slice(5));
if (area === 0) return { valid: false, reason: 'Area 000 invalid' };
if (area === 666) return { valid: false, reason: 'Area 666 invalid' };
if (area >= 900) return { valid: false, reason: 'Area 900-999 invalid' };
if (group === 0) return { valid: false, reason: 'Group 00 invalid' };
if (serial === 0) return { valid: false, reason: 'Serial 0000 invalid' };
if (clean === '078051120') return { valid: false, reason: 'Known fake SSN' };
if (clean === '219099999') return { valid: false, reason: 'Known fake SSN' };
return { valid: true, formatted: `${clean.slice(0,3)}-${clean.slice(3,5)}-${clean.slice(5)}` };
}
SSN validation only checks format and known invalid patterns. It cannot verify whether a number was actually issued to a real person — that requires SSA database access.