Skip to main content

Fe- John Doe Script -no Hats Needed- R15 R6

Add a server-side check in a RunService.Heartbeat loop:

-- Server Script
game.Players.PlayerAdded:Connect(function(plr)
    plr.CharacterAdded:Connect(function(char)
        local hum = char:WaitForChild("Humanoid")
        if hum.HumanoidDescription.Head == 1 and hum.HumanoidDescription.Torso == 1 then
            plr:Kick("John Doe exploit detected - No hats bypass")
        end
    end)
end)

In the ever-evolving universe of Roblox, the ability to customize an avatar stands as one of the core pillars of the player experience. While the platform provides thousands of official accessories and clothing items, a significant portion of the community seeks to push the boundaries of character design through scripting.

Among the myriad of tools available to developers and exploiters alike, one specific subject has gained traction for its simplicity and effectiveness: the "FE John Doe Script - No Hats Needed - R15 R6."

This article dives into what this script is, how it functions, and why it has become a popular topic within the Roblox scripting community.

-- FE John Doe Script - No Hats Needed (R15/R6)
-- Place this in ServerScriptService

local Players = game:GetService("Players")

local function removeHats(character) local hatNames = "Hat", "Accessory", "Hats" -- Common accessory containers for _, v in pairs(character:GetChildren()) do if v:IsA("Accessory") or (v.ClassName == "Model" and v:FindFirstChild("Handle")) then v:Destroy() end end -- Also check Accessory folder if using older roblox character structure local accessories = character:FindFirstChild("Accessories") if accessories then for _, acc in pairs(accessories:GetChildren()) do if acc:IsA("Accessory") then acc:Destroy() end end end end FE- John Doe Script -No Hats Needed- R15 R6

local function onCharacterAdded(character) -- Wait for character to fully load (optional) task.wait(0.1) removeHats(character)

-- Optional: Monitor for added hats (if game adds them later)
local connection
connection = character.ChildAdded:Connect(function(child)
	if child:IsA("Accessory") or (child.ClassName == "Model" and child:FindFirstChild("Handle")) then
		child:Destroy()
	end
end)
-- Clean up connection when character dies
character.AncestryChanged:Connect(function()
	if not character.Parent then
		connection:Disconnect()
	end
end)

end

local function onPlayerAdded(player) player.CharacterAdded:Connect(onCharacterAdded) -- If player already has character (e.g. respawn) if player.Character then onCharacterAdded(player.Character) end end

for _, player in pairs(Players:GetPlayers()) do onPlayerAdded(player) end Players.PlayerAdded:Connect(onPlayerAdded)


When you run the FE- John Doe Script on an R6 server, the script maps the classic yellow skin, blue shirt, and green pants directly onto the blocky limbs. Because R6 has fewer moving parts, the "No Hats" feature is extremely fast. It usually applies within half a second. The script might also inject a Weld or Motor6D to keep the default R6 idle animation intact.

John Doe (and his counterpart Jane Doe) are official Roblox test accounts. Because they are system-level accounts, injecting their appearance is a form of Network Ownership Exploitation. The script forces your character ID to revert to 1 (John Doe's asset ID) without swapping your actual inventory.

This script is designed for FE (FilteringEnabled) compatibility in Roblox, allowing a John Doe (default gray outfit with “?” face) character to automatically have no hats equipped — regardless of the player’s inventory — and work seamlessly across R15 and R6 character rigs.


If you’ve spent any time in the Roblox underground development scene or the admin command marketplace, you’ve probably heard of the infamous John Doe script. Often shrouded in myth (and a little bit of clickbait), the real utility of these scripts lies in character morphing, avatar manipulation, and asset stripping.

One specific filter keeps popping up in these scripts: "No Hats Needed." But what does that actually mean? And why do these scripts specifically toggle between R15 and R6? Add a server-side check in a RunService

Let’s ditch the rumors and look at the actual FE (FilteringEnabled) mechanics behind the "John Doe" script.

Traditionally, creating custom avatars or "dummy" characters in Roblox often required a specific number of hats or accessories to manipulate meshes and textures. This was a tedious process known as "hiding" parts of the avatar using invisible hats.

The standout feature of this specific script is the tag: "-No Hats Needed."

This indicates a streamlined efficiency. Users do not need to clutter their inventory with specific invisible accessories to achieve the John Doe look. The script handles the character modification internally, stripping away complex assets and reverting the character to a clean slate instantly. This is particularly useful for players who want a minimalist aesthetic or are using the character as a base for further morph scripts.