In common usage, criminal, culprit, perpetrator, and offender are often used almost interchangeably, with slight differences in who uses them and when.
* "Criminal" most often refers to someone who has been convicted of a crime in a court of law or is believed to have broken one or more laws.
* "Culprit" more implies being guilty of something, but not always breaking a law, so it can also be used outside of a legal context (e.g. "She was the culprit who took the last of the coffee in the pot.").
* "Perpetrator" is used when there is a specific crime and you're identifying who did it (e.g. "Police captured the suspected perpetrator of last week's robbery.")
* "Offender" means basically the same thing as "criminal," but it is the preferred term between the two when being used officially (by police, lawyers, judges, reporters, etc.)
"Perpetrator" and "offender" are less commonly used by people who don't work in the legal system somehow.