You might want to look at my disclaimer before using this information for anything important. You might want to see warning about fake ids before using this information to make a fake id.
This particular page focuses on the algorithm shared by Florida, Illinois, and Wisconsin. For information on other states driver's license numbers see this page.
I've written programs so you can can calculate your license number based on your personal information, or you can determine your personal information from your driver's license number:
State | Info to Number | Number to Info |
---|---|---|
Florida | Calculate Florida | Analyze Florida |
Illinois | Calculate Illinois | Analyze Illinois |
Wisconsin | Calculate Wisconsin | Analyze Wisconsin |
Here is a Java applet for encoding these states.
A number of states encode your name, gender, and date of birth in your license number. These include Florida, Wisconsin, and Illinois. These states use the same system of encoding, or very similar ones. Given someone's driver's license number from one of these states, you can take good guesses at someone's name and exactly determine their gender and date of birth. With someone's name, date of birth, and gender, you can guess some or all of their driver's license number. (I expect this same system applies to State IDs, but I don't know.)
I'm not really sure why these numbers are designed so. A likely guess is that it allows a skilled bouncer to quickly identify sloppy fake ids.
When you remove the hyphens, these license numbers look like the following:
SSSSFFFYYDDD F25592150094
The specific licenenses look like the following.
Florida: SSSS-FFF-YY-DDD-N F255-921-50-094-0
I'm told Florida uses a different system for state identifications. I don't know anything else about it.
Illinois Driver's License: SSSS-FFFY-YDDD F255-9215-0094 Illinois State ID: SSSF-FFYY-DDDS 2559-2150-094F
Illinois State ID's simply move the initial letter to the end, but are otherwise calculated the same.
Wisconsin: SSSS-FFFY-YDDD-NN F255-9215-0121-03
The segments are:
Segment | Example | Description |
---|---|---|
SSSS | F255 | Soundex code |
FFF | 921 | First name, middle initial |
YY | 50 | Year of birth |
DDD | 094 | Day and month of birth |
NN | 03 | Overflow (not all states use this) |
Soundex is a hashing system for english words. You might want to look at further information on how soundex works.
The example soundex is F255, so the example name starts with F, so the name starts with an F, followed by a gutteral or sibilant, followed by a nasal, followed by another nasal. This is correct, as the example person's last name is "Fakename"
For my license generator, I simply implement this. For my
license reverser, I simply take likely guesses. I also generated
the Soundex code for the top 10,000 (ish) last names in the US,
and I suggest the top 10 for any given code.
FFF - Encoded first name and middle initial
Look up your first name on this table:
Name | Code | Name | Code | Name | Code |
---|---|---|---|---|---|
Albert | 20 | Frank | 260 | Marvin | 580 |
Alice | 20 | George | 300 | Mary | 580 |
Ann | 40 | Grace | 300 | Melvin | 600 |
Anna | 40 | Harold | 340 | Mildred | 600 |
Anne | 40 | Harriet | 340 | Patricia | 680 |
Annie | 40 | Harry | 360 | Paul | 680 |
Arthur | 40 | Hazel | 360 | Richard | 740 |
Bernard | 80 | Helen | 380 | Robert | 760 |
Bette | 80 | Henry | 380 | Ruby | 740 |
Bettie | 80 | James | 440 | Ruth | 760 |
Betty | 80 | Jane | 440 | Thelma | 820 |
Carl | 120 | Jayne | 440 | Thomas | 820 |
Catherine | 120 | Jean | 460 | Walter | 900 |
Charles | 140 | Joan | 480 | Wanda | 900 |
Dorthy | 180 | John | 460 | William | 920 |
Edward | 220 | Joseph | 480 | Wilma | 920 |
Elizabeth | 220 | Margaret | 560 | ||
Florence | 260 | Martin | 560 | ||
Donald | 180 | ||||
Clara | 140 |
If you fail to find your name, look up your first initial on this table:
Initial | Code | Initial | Code | Initial | Code | Initial | Code |
---|---|---|---|---|---|---|---|
A | 0 | H | 320 | O | 640 | V | 860 |
B | 60 | I | 400 | P | 660 | W | 880 |
C | 100 | J | 420 | Q | 700 | X | 940 |
D | 160 | K | 500 | R | 720 | Y | 960 |
E | 200 | L | 520 | S | 780 | Z | 980 |
F | 240 | M | 540 | T | 800 | ||
G | 280 | N | 620 | U | 840 |
Now look up your middle initial on this table:
Initial | Code | Initial | Code | Initial | Code | Initial | Code |
---|---|---|---|---|---|---|---|
A | 1 | H | 8 | O | 14 | V | 18 |
B | 2 | I | 9 | P | 15 | W | 19 |
C | 3 | J | 10 | Q | 15 | X | 19 |
D | 4 | K | 11 | R | 16 | Y | 19 |
E | 5 | L | 12 | S | 17 | Z | 19 |
F | 6 | M | 13 | T | 18 | ||
G | 7 | N | 14 | U | 18 |
Now, if add together the code for either your first name (if possible) or your first initial to the code for your middle inital.
So, the example FFF code is 921. Looking it up, it's William or Wilma
A.
If it had been 001, we would simply know at the their initials
are A. A. Since the example was generated for "William Andrew
Fakename" this is correct.
Y-Y - Your birth year
The two numbers together represent the year of your birth. If you are born in 1968, it should read '68'. This is the easiest information to pick out of a WDL, and is often used to spot fakes.
The example Y-Y code is 50. Mr. or Ms Fakename was born in 1950.
DDD - Month and day of birth and gender
This portion encodes the month and day you were born on. The general equation is:
General: (birth_month - 1) * month_multiplier + birth_day + gender_mod
Florida: (birth_month - 1) * 40 + birth_day + (male:0, female: 500)
Illinois: (birth_month - 1) * 31 + birth_day + (male:0, female: 600)
Wisconsin: (birth_month - 1) * 40 + birth_day + (male:0, female: 500)
birth_month is the number of months into the year, January is 1, December is 12.
month_multiplier varies by state. Illinois uses 31. Wisconsin and Florida both use 40.
gender_mod varies by state. In Illinois men use 0, women use 600. In Wisconsin and Florida men use 0, women use 500.
If the result is less than 100, add zeroes to the left side to make it 3 digits. (So, January 1st is encoded as "001" for men in Illinois.)
Mr. or Ms Fakename's code is 094. Assuming we're looking at an Illinois
license number, because that's less than 600, we know Mr. Fakename is male.
His name is probably William and not Wilma. We can subtract 93 from that,
which is 31 three times. So three months into the year, April. That
leaves 1 left, which is the day. Mr. Fakename was born on April 1, 1950.
Overflow
Looking at this, may become clear that it is possible for two people with similar names to get the exact same driver's license number. For example, if "Joshua William Smith" and "Jack Wayne Snoddy" were born on the same day, they'll get the same Illinois drive's license number. This is solved with "overflow" numbers, a simple sequential number can be appended to each duplicate number to resolve the confusion.
Wisconsin prints a two digit overflow number on your license. As a result, the last two digits of your Wisconsin license number represent the number of people who had the same license number as you (ignoring the last two digits), when you got your license.
Illinois may have overflow digits, but if they do the information is not on your driver's license. This means that if Joshua William Smith is wanted by police and his driver's license number is flagged as such, Jack Wayne Snoddy may be briefly detained while the police check their records to sort out the shared number. I have been told that Illinois state databases actually include a two or three digit number to distinguish between different people with the same license. One correspondent told me that their friend was pulled over for a minor traffic violation and was arrested as someone else. He sat in the police car for a while while they sorted it out. He and the other person had the exact same number; the other guy was a wanted man, but my correspondent's friend did not.
Florida prints a single digit overflow number on your license.
As a result, the last digit of your Florida license number
represent the number of people who had the same license number as
you (ignoring the last two digits), when you got your license.
Urban Legends about Florida's Last Digit
There are number of urban legends about Florida driver's license overflow numbers. The legends claim that the number represents the number of times you've been arrested for drunk driving (DUI, DWI, etc), the number of times you've convicted for drunk driving, the number of times you've been convicted of a felony, that it encodes driving restrictions (0 means no restrictions, 1 means corrective eyewear is required), or that it encodes gender.
I don't believe it.
First, why bother? Who needs to know this information? Not a cop arresting you; they'll arrest a drunk driver no matter what. Prior convictions only matter when you're in front of a judge, and the judge has access to the database. Unless Florida does something particularly weird, driving restrictions are (in most states) clearly printed elsewhere, and the cop is going to run your license anyway and will learn any restrictions that way.
Second, as noted above: if you don't have overflow digits, you'll occasionally two people with the exact same driver's license number. Can you imagine what a mess that would be? Indeed, it's a mess in Illinois, see above.
Third, Wisconsin uses the exact same system, and as a native of Wisconsin I am absolutely certain it is correct. (Oddly, there are no urban legends about this in Wisconsin. It appears to be a strictly Florida thing.)
Finally, I've had people claim with absolute certainty all of the above. They can't all be true. My hypothesis matches Wisconsin's behavior and solves an important problem, so I'm sticking with it until I see better evidence for another hypothesis.
Now, it's entirely possible that I'm wrong. If you're sure that I am, and can point me to a reliable source to support an alternate theory, please let me know! Much of the information on this page comes from people who contacted me with corrections.