diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index f094873f9..3c4c0d5dd 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -1256,6 +1256,9 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if(jobban_isbanned(user, rank))
HTML += "[rank]
BANNED | "
continue
+ if((rank in GLOB.silly_positions) && (!sillyroles))
+ HTML += "[rank] WHITELIST | "
+ continue
var/required_playtime_remaining = job.required_playtime_remaining(user.client)
if(required_playtime_remaining)
HTML += "[rank] \[ [get_exp_format(required_playtime_remaining)] as [job.get_exp_req_type()] \] | "
diff --git a/code/modules/jobs/jobs.dm b/code/modules/jobs/jobs.dm
index 08616e280..267680408 100644
--- a/code/modules/jobs/jobs.dm
+++ b/code/modules/jobs/jobs.dm
@@ -60,6 +60,10 @@ GLOBAL_LIST_INIT(nonhuman_positions, list(
"Cyborg",
ROLE_PAI))
+GLOBAL_LIST_INIT(silly_positions, list(
+ "Clown",
+ "Mime"))
+
GLOBAL_LIST_INIT(exp_jobsmap, list(
EXP_TYPE_CREW = list("titles" = command_positions | engineering_positions | medical_positions | science_positions | supply_positions | security_positions | civilian_positions | list("AI","Cyborg")), // crew positions
EXP_TYPE_COMMAND = list("titles" = command_positions),