Exact Base64 UULE Encoding
Generates Google's official length-keyed Base64 UULE parameter for over 50 million cities, municipalities, and postal codes worldwide.
Generate exact Base64 UULE location parameters and decode existing tokens to simulate localized Google search rankings, Local 3-Packs, and organic SERPs without a VPN.
Type a city or canonical location to generate its Google UULE parameter, or paste an existing UULE token / Google URL to decode its location in real time:
I am an SEO Geek from Denmark. I’ve worked with search for over 20 years, helping people understand how Google works and how to use that knowledge to grow. Along the way, I’ve built free tools for keyword research, technical SEO, and SERP analysis. My focus is always on clarity, usefulness, and real data.
The most precise and lightweight Google location parameter generator for local rank tracking, audits, and automated scrapers.
Generates Google's official length-keyed Base64 UULE parameter for over 50 million cities, municipalities, and postal codes worldwide.
Paste any existing Google URL or UULE token to instantly decode and inspect its canonical location, region, and target country.
Includes copy-and-paste Google Apps Script code to generate bulk UULE parameters directly in spreadsheets for automated reporting.
Includes open-source Python, JavaScript, and shell algorithms ready to copy directly into your custom scrapers and rank trackers.
Everything you need to know about Google's Universal Unique Location Identifier, Base64 length-key hashing, protocol buffer structures, and automated developer integration.
&uule=) utilized by Google's search infrastructure to determine the exact geographical location of a search request. Originally engineered for Google Ads testing and localized search quality validation, UULE overrides client-side IP geolocation, Wi-Fi triangulation, and device GPS sensors.w+CAIQICI.Given canonical string S of character length L = len(S):
LengthKey = TABLE[L % 64]
UULE = "w+CAIQICI" + LengthKey + base64_encode(S)
The secret 64-character lookup table maps character count (modulo 64) as follows:
| Index Range | Length Key Characters | Sample Length Mapping |
|---|---|---|
0 – 25 | A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z | Length 10 = K, Length 24 = Y |
26 – 51 | a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z | Length 26 = a, Length 38 = m |
52 – 61 | 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 | Length 52 = 0, Length 60 = 8 |
62 – 63 | - , _ | Length 62 = -, Length 63 = _ |
Concrete Example: Consider the location Chicago,Illinois,United States. The string contains exactly 30 characters. In our lookup table, index 30 corresponds to lowercase e. The Base64 encoding of Chicago,Illinois,United States is Q2hpY2FnbyxJbGxpbm9pcyxVbml0ZWQgU3RhdGVz. The resulting token is w+CAIQICIeQ2hpY2FnbyxJbGxpbm9pcyxVbml0ZWQgU3RhdGVz.
w+CAIQICI): The standard format used throughout SEO and PPC. It maps directly to Google's official AdWords/Google Ads geographical criteria database (e.g. City,State,Country). This is 100% deterministic, human-readable upon decoding, and accepted across all Google search endpoints worldwide.a+): An encoded binary Protocol Buffer (Protobuf) containing hardware GPS attributes: timestamp (in microseconds), latitude (multiplied by 10^7 as a 32-bit integer), longitude (multiplied by 10^7), accuracy radius in meters, and location producer source code. Because Google frequently deprecates or alters internal Protobuf schemas, w+ canonical strings are universally preferred for automated rank tracking and audit reproducibility.=UULE(A2) where cell A2 contains the target city (e.g. Austin,Texas,United States)./**
* Generates a Google UULE parameter from a canonical location string.
* @param {string} location Target location (e.g. "Seattle,Washington,United States")
* @return {string} Canonical Google UULE parameter string
* @customfunction
*/
function UULE(location) {
if (!location || typeof location !== 'string') return "";
var table = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
var clean = location.trim();
var key = table.charAt(clean.length % 64);
var encoded = Utilities.base64Encode(clean, Utilities.Charset.UTF_8);
return "w+CAIQICI" + key + encoded;
}
/**
* Builds a complete depersonalized Google search URL with UULE and pws=0.
* @param {string} keyword Search query (e.g. "personal injury lawyer")
* @param {string} location Target city/region
* @return {string} Clickable Google Search URL
* @customfunction
*/
function GOOGLE_LOCAL_SEARCH(keyword, location) {
if (!keyword) return "";
var base = "https://www.google.com/search?q=" + encodeURIComponent(keyword) + "&pws=0";
if (location) {
base += "&uule=" + UULE(location);
}
return base;
}import base64
import urllib.parse
def generate_uule(location: str) -> str:
"""Generate exact length-keyed Base64 Google UULE parameter."""
lookup = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"
clean_loc = location.strip()
key = lookup[len(clean_loc) % 64]
b64_payload = base64.b64encode(clean_loc.encode('utf-8')).decode('utf-8')
return f"w+CAIQICI{key}{b64_payload}"
def build_google_url(query: str, location: str, gl: str = "us", hl: str = "en") -> str:
"""Builds a complete depersonalized localized Google URL."""
uule = generate_uule(location)
params = {
"q": query,
"uule": uule,
"gl": gl,
"hl": hl,
"pws": "0",
"nord": "1"
}
return f"https://www.google.com/search?{urllib.parse.urlencode(params)}"
# Example Usage:
target_city = "Munich,Bavaria,Germany"
search_url = build_google_url("steuerberater", target_city, gl="de", hl="de")
print("Target URL:", search_url)
function generateUule(location) {
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_';
const target = location.trim();
const key = chars[target.length % 64];
const b64 = Buffer.from(target, 'utf-8').toString('base64');
return 'w+CAIQICI' + key + b64;
}
function decodeUule(uuleToken) {
if (!uuleToken || !uuleToken.startsWith('w+CAIQICI')) {
throw new Error('Invalid UULE format: missing w+CAIQICI prefix');
}
const base64Payload = uuleToken.slice(10);
return Buffer.from(base64Payload, 'base64').toString('utf-8');
}
// Example Verification:
const token = generateUule('Austin,Texas,United States');
console.log('Encoded:', token);
console.log('Decoded:', decodeUule(token));| Evaluation Metric | Google UULE Parameter | Commercial VPN | Residential Proxy |
|---|---|---|---|
| Suburban Precision | ✅ Exact Neighborhood & Postal Code | ❌ Major Metros Only | ⚠️ Coarse ASN routing |
| CAPTCHA Resistance | ✅ Zero CAPTCHAs (Native Parameter) | ❌ Frequent Cloudflare/Google Blocks | ⚠️ Occasional Captchas |
| Execution Latency | ⚡ 0ms Overhead (Direct Request) | ⚠️ 200–800ms routing lag | ⚠️ 400–1200ms tunnel lag |
| Cost & Infrastructure | 🆓 100% Free Forever | 💳 $5–$15 / month per seat | 💳 $10–$25 per GB bandwidth |
| Audit Reproducibility | ✅ 100% Deterministic URL | ❌ Varies by assigned exit IP | ❌ Rotates IPs constantly |
City,Region/State,Country (e.g. Aarhus,Central Denmark Region,Denmark).90210,Los Angeles,California,United States.w+CAIQICI.atob() in browsers, Buffer.from(payload, 'base64') in Node.js, or base64.b64decode() in Python).Alternatively, use our interactive Reverse Google UULE Decoder located directly above this guide to paste and inspect tokens instantly.
UULE stands for Universal Unique Location Identifier (or Universal URL-encoded Location Entity). It is an internal parameter utilized by Google to determine geographic search ranking relevance without relying on IP geolocation.
A UULE generator creates an exact geographic location token that instructs Google to display search results, Local 3-Packs, and Map listings exactly as a user standing in that physical city or postal code would see them, without needing a VPN.
The prefix 'w+CAIQICI' is Google's internal protocol buffer identifier indicating that the parameter contains a canonical geographical string rather than raw GPS latitude/longitude coordinates (which use the 'a+' prefix).
Yes. By pasting our custom Google Apps Script into your spreadsheet, you can call =UULE(A2) to generate tokens in bulk and construct live audit links for hundreds of client locations simultaneously.
Yes. As long as the city, town, or region follows Google's canonical geographic hierarchy (e.g. City, Region, Country), Google's search algorithms recognize and apply the location.
The UULE parameter is specifically built for Google Web Search (google.com/search) to trigger localized organic rankings and embedded Google Maps 3-Packs. For direct Google Maps navigation, Google uses coordinates and CID place IDs.
You can decode a standard UULE token by removing the 9-character 'w+CAIQICI' prefix and the 1-character length key, then decoding the remaining Base64 string back into plain UTF-8 text using our interactive decoder.
Yes, Impersonal.me's UULE Generator is 100% free with no registration, no API keys, no query limits, and no subscription paywalls, created by veteran SEO specialist Søren Riisager.