To automatically block all players on this list in VRChat:
- Go to vrchat.com/home and log in
- Open Developer Tools (F12 or Ctrl+Shift+I)
- Click the Console tab
- Paste the script below and press Enter
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.
// SpillVR Community List Auto-Block Script
// List: Block On Sight
// Generated: 2026-03-14 19:52:41 UTC
// Total users to block: 1
(async function() {
const usersToBlock = [
{ id: "usr_7b15cf7d-cbd4-4bcd-8aa0-fde219de37ce", name: "Loli_Eugen", reason: "" }
];
const delay = (ms) => new Promise(resolve => setTimeout(resolve, ms));
console.log('=== SpillVR Community List Auto-Block ===');
console.log('Starting to block ' + usersToBlock.length + ' players...');
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}`);
}
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!