To automatically block all verified nuisance players on VRChat:
- Go to vrchat.com/home and make sure you're logged in
- Open your browser's Developer Tools (Press F12 or Ctrl+Shift+I)
- Click on the Console tab
- Copy the script below and paste it into the console
- Press Enter to run
Note: This script blocks users one at a time with delays to avoid rate limiting.
It will also ban these users from any VRChat groups you own.
Keep the tab open until it completes. You can unblock users later from your VRChat settings if needed.
// SpillVR Auto-Block Script
// Generated: 2026-03-14 21:58:44 UTC
// Total users to block: 6
(async function() {
const usersToBlock = [
{ id: "usr_43d5108b-a732-4f86-9d26-9fd9833464ab", name: "JustusLynetta", reason: "Records Without Consent" },
{ id: "usr_55dfd9ac-ce79-43b2-a62d-f558e5d47817", name: "Magix_Iconic", reason: "Records Without Consent" },
{ id: "usr_502a6bd1-ff76-47a0-a587-2f0e1176bc5b", name: "Nyxxio", reason: "Records Without Consent" },
{ id: "usr_826498ef-970f-4d47-a596-e99d3b21e6fb", name: "JohnPoopePants", reason: "Records Without Consent" },
{ id: "usr_5e96bd35-56aa-4deb-9ce4-36bcb839dee0", name: "tut Fuzzy_Ball", reason: "Records Without Consent" },
{ id: "usr_043c9569-0d7e-4d41-abd1-6fbd146347c5", name: "༒DRΔΨҜΣ༒", reason: "Scamming" }
];
const delay = (ms) => new Promise(resolve => setTimeout(resolve, ms));
console.log('=== SpillVR Auto-Block Script ===');
console.log('Starting to block ' + usersToBlock.length + ' nuisance players...');
console.log('This may take a few minutes. Please keep this tab open.');
console.log('');
let blocked = 0;
let failed = 0;
for (const user of usersToBlock) {
try {
const response = await fetch(`https://vrchat.com/api/1/auth/user/playermoderations`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
credentials: 'include',
body: JSON.stringify({
moderated: user.id,
type: 'block'
})
});
if (response.ok) {
blocked++;
console.log(`[BLOCKED] ${user.name} (${user.reason})`);
} else {
failed++;
console.warn(`[FAILED] ${user.name}: HTTP ${response.status}`);
}
} catch (error) {
failed++;
console.error(`[ERROR] ${user.name}: ${error.message}`);
}
// Wait 2 seconds between requests to respect VRChat rate limit
await delay(2000);
}
console.log('');
console.log('=== Player Blocking Complete ===');
console.log(`Blocked: ${blocked}`);
console.log(`Failed: ${failed}`);
console.log('');
// Phase 2: Group Banning
console.log('=== Phase 2: Banning from Your Groups ===');
console.log('Fetching your groups...');
let groupBanned = 0;
let groupAlready = 0;
let groupFailed = 0;
let groupsProcessed = 0;
try {
const authResp = await fetch('https://vrchat.com/api/1/auth/user', { credentials: 'include' });
if (!authResp.ok) {
console.warn('Could not get current user info. Skipping group bans.');
} else {
const currentUser = await authResp.json();
await delay(2000);
const groupsResp = await fetch(`https://vrchat.com/api/1/users/${currentUser.id}/groups`, { credentials: 'include' });
if (!groupsResp.ok) {
console.warn('Could not fetch groups. Skipping group bans.');
} else {
const allGroups = await groupsResp.json();
await delay(2000);
const ownedGroups = allGroups.filter(g => g.ownerId === currentUser.id);
console.log(`Found ${allGroups.length} group(s), ${ownedGroups.length} owned by you.`);
if (ownedGroups.length === 0) {
console.log('No owned groups found. Skipping group bans.');
} else {
for (const membership of ownedGroups) {
const groupId = membership.groupId || membership.id;
const groupName = membership.name || groupId;
console.log(` Banning from ${groupName}...`);
for (const user of usersToBlock) {
try {
const banResp = await fetch(`https://vrchat.com/api/1/groups/${groupId}/bans`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
credentials: 'include',
body: JSON.stringify({ userId: user.id })
});
if (banResp.ok) {
groupBanned++;
console.log(` [GROUP BAN] ${user.name} from ${groupName}`);
} else if (banResp.status === 409 || banResp.status === 400) {
groupAlready++;
} else {
groupFailed++;
}
} catch (err) {
groupFailed++;
}
await delay(2000);
}
groupsProcessed++;
console.log(` Finished group: ${groupName}`);
}
}
}
}
} catch (groupError) {
console.warn('Group banning encountered an error:', groupError.message);
}
console.log('');
console.log('=== All Complete ===');
console.log(`Player blocks: ${blocked} blocked, ${failed} failed`);
console.log(`Group bans: ${groupBanned} new, ${groupAlready} already banned, ${groupFailed} failed`);
console.log(`Groups processed: ${groupsProcessed}`);
console.log('');
console.log('You can close this tab now.');
})();
Script copied to clipboard!