🏠 Home 

CheatGuessr | WorldGuessr Cheat

Extremely customizable WorldGuessr cheating client. Click 3 to open the settings menu.


Install this script?
Author's suggested script

You may also like CheatGuessr | GeoGuessr Cheat.

Install this script
// ==UserScript==
// @name         CheatGuessr | WorldGuessr Cheat
// @namespace    http://tampermonkey.net/
// @version      1.4
// @description  Extremely customizable WorldGuessr cheating client. Click 3 to open the settings menu.
// @author       CheatGuessr
// @match        https://www.worldguessr.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=worldguessr.com
// @grant        none
// @license      GNU AGPLv3
// ==/UserScript==
(function() {
'use strict';
let googleMapsIframe = null;
let lastLocation = null;
let loadingIndicator = null;
let dotInterval = null;
let settings = null;
let settingsModal = null;
const DEFAULT_SETTINGS = {
keybinds: {
toggleMap: '1',
newTab: '2',
settings: '3',
detailedLocation: '4'
},
mapPosition: 'top-left',
mapSize: {
width: 400,
height: 300
},
loadingPosition: 'bottom',
refreshInterval: 1000,
blockAds: true
};
const style = document.createElement('style');
style.textContent = `
.google-maps-iframe {
position: fixed;
z-index: 9999;
border: 2px solid #333;
border-radius: 4px;
}
.close-button {
position: absolute;
top: -15px;
right: -15px;
width: 30px;
height: 30px;
background: red;
border: 2px solid white;
border-radius: 50%;
color: white;
font-weight: bold;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
z-index: 10000;
}
.loading-indicator {
position: fixed;
left: 10px;
padding: 5px 10px;
background: rgba(0,0,0,0.7);
color: white;
border-radius: 4px;
z-index: 9999;
}
.settings-modal {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background: #1f2937;
padding: 20px;
border-radius: 8px;
z-index: 10001;
width: 600px;
max-height: 80vh;
overflow-y: auto;
color: white;
}
.settings-backdrop {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0,0,0,0.5);
z-index: 10000;
}
.settings-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 20px;
}
.settings-section {
background: #374151;
padding: 15px;
border-radius: 6px;
}
.settings-row {
margin: 10px 0;
}
.settings-row label {
display: block;
margin-bottom: 5px;
color: #e5e7eb;
}
.settings-input {
width: 100%;
padding: 8px;
border: 1px solid #4b5563;
border-radius: 4px;
background: #1f2937;
color: white;
}
.settings-button {
padding: 8px 16px;
border: none;
border-radius: 4px;
cursor: pointer;
margin: 5px;
background: #3b82f6;
color: white;
}
.settings-button:hover {
background: #2563eb;
}
`;
document.head.appendChild(style);
function loadSettings() {
try {
const saved = localStorage.getItem('worldGuessrHelper');
settings = saved ? JSON.parse(saved) : DEFAULT_SETTINGS;
} catch (e) {
settings = DEFAULT_SETTINGS;
}
}
function saveSettings() {
localStorage.setItem('worldGuessrHelper', JSON.stringify(settings));
}
function blockAds() {
if (!settings.blockAds) return;
const adSelectors = [
'[id^="google_ads_iframe"]',
'[id^="worldguessr-com_"]',
'.video-ad'
];
const removeAds = () => {
adSelectors.forEach(selector => {
document.querySelectorAll(selector).forEach(ad => {
ad.remove();
});
});
};
removeAds();
const observer = new MutationObserver(removeAds);
observer.observe(document.body, {
childList: true,
subtree: true
});
}
function createLoadingIndicator() {
loadingIndicator = document.createElement('div');
loadingIndicator.className = 'loading-indicator';
loadingIndicator.style.display = 'none';
document.body.appendChild(loadingIndicator);
let dots = 0;
if (dotInterval) clearInterval(dotInterval);
dotInterval = setInterval(() => {
dots = (dots + 1) % 4;
if (loadingIndicator) {
loadingIndicator.textContent = 'Loading location' + '.'.repeat(dots);
}
}, 500);
}
function toggleSettingsModal() {
if (settingsModal) {
settingsModal.backdrop.remove();
settingsModal.modal.remove();
settingsModal = null;
return;
}
const backdrop = document.createElement('div');
backdrop.className = 'settings-backdrop';
const modal = document.createElement('div');
modal.className = 'settings-modal';
modal.innerHTML = `
<h2 style="margin-bottom: 20px">WorldGuessr Helper Settings</h2>
<div class="settings-grid">
<div class="settings-section">
<h3>Keybinds</h3>
<div class="settings-row">
<label>Toggle Map Key</label>
<input type="text" class="settings-input" id="toggleMapKey" value="${settings.keybinds.toggleMap}">
</div>
<div class="settings-row">
<label>New Tab Key</label>
<input type="text" class="settings-input" id="newTabKey" value="${settings.keybinds.newTab}">
</div>
<div class="settings-row">
<label>Settings Key</label>
<input type="text" class="settings-input" id="settingsKey" value="${settings.keybinds.settings}">
</div>
<div class="settings-row">
<label>Detailed Location Alert</label>
<input type="text" class="settings-input" id="detailedLocation" value="${settings.keybinds.detailedLocation}">
</div>
</div>
<div class="settings-section">
<h3>Map Settings</h3>
<div class="settings-row">
<label>Map Position</label>
<select class="settings-input" id="mapPosition">
<option value="top-left" ${settings.mapPosition === 'top-left' ? 'selected' : ''}>Top Left</option>
<option value="top-right" ${settings.mapPosition === 'top-right' ? 'selected' : ''}>Top Right</option>
<option value="bottom-left" ${settings.mapPosition === 'bottom-left' ? 'selected' : ''}>Bottom Left</option>
<option value="bottom-right" ${settings.mapPosition === 'bottom-right' ? 'selected' : ''}>Bottom Right</option>
</select>
</div>
<div class="settings-row">
<label>Map Width (px)</label>
<input type="number" class="settings-input" id="mapWidth" value="${settings.mapSize.width}">
</div>
<div class="settings-row">
<label>Map Height (px)</label>
<input type="number" class="settings-input" id="mapHeight" value="${settings.mapSize.height}">
</div>
</div>
</div>
<div class="settings-section" style="margin-top: 20px">
<h3>Additional Settings</h3>
<div class="settings-row">
<label>
<input type="checkbox" id="blockAds" ${settings.blockAds ? 'checked' : ''}>
Block Advertisements
</label>
</div>
</div>
<div style="text-align: right; margin-top: 20px">
<button class="settings-button" id="closeSettings">Cancel</button>
<button class="settings-button" id="saveSettings">Save</button>
</div>
`;
document.body.appendChild(backdrop);
document.body.appendChild(modal);
settingsModal = { backdrop, modal };
document.getElementById('saveSettings').onclick = () => {
settings.keybinds.toggleMap = document.getElementById('toggleMapKey').value;
settings.keybinds.newTab = document.getElementById('newTabKey').value;
settings.keybinds.settings = document.getElementById('settingsKey').value;
settings.keybinds.detailedLocation = document.getElementById('detailedLocation').value;
settings.mapPosition = document.getElementById('mapPosition').value;
settings.mapSize.width = parseInt(document.getElementById('mapWidth').value);
settings.mapSize.height = parseInt(document.getElementById('mapHeight').value);
settings.blockAds = document.getElementById('blockAds').checked;
saveSettings();
blockAds();
toggleSettingsModal();
};
document.getElementById('closeSettings').onclick = toggleSettingsModal;
}
function showLoadingIndicator() {
if (loadingIndicator) {
loadingIndicator.style.display = 'block';
loadingIndicator.style.bottom = settings.loadingPosition === 'bottom' ? '10px' : 'auto';
loadingIndicator.style.top = settings.loadingPosition === 'top' ? '10px' : 'auto';
}
}
function hideLoadingIndicator() {
if (loadingIndicator) {
loadingIndicator.style.display = 'none';
}
}
function extractLocationFromIframe() {
showLoadingIndicator();
const iframe = document.querySelector('iframe[src^="/svEmbed"]');
if (!iframe) {
hideLoadingIndicator();
return null;
}
const urlParams = new URLSearchParams(iframe.src.split('?')[1]);
const lat = parseFloat(urlParams.get('lat'));
const long = parseFloat(urlParams.get('long'));
if (!isNaN(lat) && !isNaN(long)) {
hideLoadingIndicator();
return { lat, long, timestamp: new Date() };
}
hideLoadingIndicator();
return null;
}
function updateMapPosition() {
if (!googleMapsIframe) return;
const pos = settings.mapPosition.split('-');
googleMapsIframe.style.top = pos[0] === 'top' ? '10px' : 'auto';
googleMapsIframe.style.bottom = pos[0] === 'bottom' ? '10px' : 'auto';
googleMapsIframe.style.left = pos[1] === 'left' ? '10px' : 'auto';
googleMapsIframe.style.right = pos[1] === 'right' ? '10px' : 'auto';
googleMapsIframe.style.width = settings.mapSize.width + 'px';
googleMapsIframe.style.height = settings.mapSize.height + 'px';
}
function toggleGoogleMapsIframe(location) {
if (!location) return;
if (googleMapsIframe) {
googleMapsIframe.remove();
googleMapsIframe = null;
return;
}
try {
const container = document.createElement('div');
container.className = 'google-maps-iframe';
const closeBtn = document.createElement('button');
closeBtn.className = 'close-button';
closeBtn.textContent = '×';
closeBtn.onclick = () => {
container.remove();
googleMapsIframe = null;
};
const iframe = document.createElement('iframe');
iframe.width = '100%';
iframe.height = '100%';
iframe.style.border = 'none';
iframe.src = "https://www.google.com/maps?q=" + location.lat + "," + location.long + "&z=18&output=embed";
container.appendChild(closeBtn);
container.appendChild(iframe);
document.body.appendChild(container);
googleMapsIframe = container;
updateMapPosition();
} catch (error) {
console.error('Error creating iframe:', error);
}
}
async function fetchLocationDetails(lat, long) {
try {
const response = await fetch(`https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=${lat}&lon=${long}`);
if (!response.ok) {
throw new Error('Failed to fetch location details');
}
const data = await response.json();
const { address } = data;
const locationDetails = `
Area: ${address.neighbourhood || address.suburb || address.hamlet || 'N/A'}
City: ${address.city || address.town || address.village || 'N/A'}
State: ${address.state || 'N/A'}
Country: ${address.country || 'N/A'}
`;
alert(locationDetails);
} catch (error) {
alert('Could not fetch location details: ' + error.message);
}
}
window.addEventListener('keydown', function(event) {
event.stopPropagation();
const location = extractLocationFromIframe();
if (!location) return;
if (lastLocation && (lastLocation.lat !== location.lat || lastLocation.long !== location.long)) {
if (googleMapsIframe) {
toggleGoogleMapsIframe(location);
toggleGoogleMapsIframe(location);
}
}
lastLocation = location;
if (event.key === settings.keybinds.toggleMap) {
toggleGoogleMapsIframe(location);
} else if (event.key === settings.keybinds.newTab) {
window.open("https://www.google.com/maps?q=" + location.lat + "," + location.long, "_blank");
} else if (event.key === settings.keybinds.settings) {
if (googleMapsIframe) {
toggleGoogleMapsIframe(location);
}
toggleSettingsModal();
} else if (event.key === settings.keybinds.detailedLocation) {
const { lat, long } = location;
if (!lat || !long) {
alert('Coordinates not yet available!');
} else {
fetchLocationDetails(lat, long);
}
}
}, true);
loadSettings();
createLoadingIndicator();
blockAds();
setInterval(() => {
const location = extractLocationFromIframe();
if (!location || !lastLocation) return;
if (lastLocation.lat !== location.lat || lastLocation.long !== location.long) {
if (googleMapsIframe) {
toggleGoogleMapsIframe(location);
toggleGoogleMapsIframe(location);
}
lastLocation = location;
}
}, settings.refreshInterval);
const observer = new MutationObserver(() => {
if (!document.querySelector('iframe[src^="/svEmbed"]') && googleMapsIframe) {
googleMapsIframe.remove();
googleMapsIframe = null;
}
});
observer.observe(document.body, { childList: true, subtree: true });
})();