What does the Privacy URL & Link Tracking Cleaner do?
The Privacy URL & Link Tracking Cleaner sanitizes web links by stripping invasive click trackers, advertising telemetry, and session tracking parameters. It removes identifiers like fbclid (Meta/Facebook), gclid, gbraid, wbraid (Google Ads), ttclid (TikTok), twclid (Twitter/X), mc_eid (Mailchimp), _hsenc (HubSpot), and all Google Analytics utm_* tags while preserving essential webpage query arguments (such as item_id, page, tab, and search filters).
Privacy-focused developers, community moderators, and security researchers use this utility to sanitize bulk lists of links before sharing in chat channels, newsletters, or internal documentation.
Supported Tracking Identifiers
The URL cleaner recognizes over 25 major ad network, CRM, and analytics parameter patterns:
| Network / Platform | Tracking Parameters Stripped |
|---|---|
| Google Ads & Analytics | utm_source, utm_medium, utm_campaign, utm_term, utm_content, gclid, gclsrc, dclid, gbraid, wbraid, s_kwcid |
| Meta (Facebook & Instagram) | fbclid, igshid |
| TikTok | ttclid |
| Twitter / X | twclid |
| Microsoft / Bing | msclkid |
| Mailchimp & HubSpot | mc_eid, mc_cid, _hsenc, _hsmi, hsCtaTracking |
| Yandex | yclid, ym_debug |
| Affiliate Networks | zanpid, wickedid, aff_sub*, ref_src, ref_url |
How to use the tool?
- Paste URLs: Paste one URL or a batch of URLs (one per line) into the input box.
- Add Custom Blacklist Tags (Optional): Specify additional query parameters to strip (e.g.
ref,session_id,tracker). - Click Sanitize: Click 🧹 Sanitize & Strip Trackers to view removed parameter tags and metrics.
- Copy Clean URLs: Copy the cleaned, canonical URLs with 1 click.
REST API Integration
Blueutils provides a free REST API endpoint (POST https://blueutils.com/api/url/url-cleaner) for programmatic integration.
API Request Parameters
| Name | Type | Description | Example |
|---|---|---|---|
rawText |
String | Raw URL string or newline-separated list of URLs. | "https://example.com?utm_source=fb&id=1" |
customParams |
Array | String | Optional array or comma-separated string of custom keys to strip. | ["ref", "session_id"] |
API Request Payload Examples
cURL
curl -X POST https://blueutils.com/api/url/url-cleaner \
-H "Content-Type: application/json" \
-d '{
"rawText": "https://example.com/product?item_id=42&utm_source=fb&fbclid=IwAR123\nhttps://site.org/blog?utm_campaign=sale&page=2",
"customParams": ["session_id"]
}'Python
import requests
url = "https://blueutils.com/api/url/url-cleaner"
payload = {
"rawText": "https://example.com/product?item_id=42&utm_source=fb&fbclid=IwAR123",
"customParams": ["aff_id"]
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.json())Java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main(String[] args) throws Exception {
String jsonPayload = "{\"rawText\":\"https://example.com?utm_source=fb&id=99\"}";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://blueutils.com/api/url/url-cleaner"))
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(jsonPayload))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}API Response Parameters
| Name | Type | Description | Example |
|---|---|---|---|
isValid |
Boolean | Indicates whether URL sanitization succeeded. | true |
totalProcessed |
Number | Total URLs processed. | 2 |
totalStrippedParams |
Number | Total tracking query parameters stripped. | 3 |
cleanUrls |
String | Newline-separated clean canonical URLs. | "https://example.com/product?item_id=42\n..." |
results |
Array | Detailed per-URL breakdown object. | [{ "originalUrl": "...", "cleanUrl": "...", "strippedParams": ["utm_source", "fbclid"] }] |
API Response Payload Examples
Success Response (HTTP 200 OK)
{
"isValid": true,
"totalProcessed": 1,
"totalStrippedParams": 2,
"hasErrors": false,
"cleanUrls": "https://example.com/product?item_id=42",
"results": [
{
"originalUrl": "https://example.com/product?item_id=42&utm_source=fb&fbclid=IwAR123",
"cleanUrl": "https://example.com/product?item_id=42",
"strippedCount": 2,
"strippedParams": ["utm_source", "fbclid"]
}
]
}Validation Failure Response (HTTP 400 Bad Request)
{
"isValid": false,
"error": "Please enter one or more URLs containing tracking parameters to sanitize."
}Rate Limit Exceeded Response (HTTP 429 Too Many Requests)
{
"error": "API rate limit exceeded. Please wait or contact support@blueutils.com."
}Why use an API for link cleaning and tracker sanitization?
Integrating the URL Cleaner API into privacy proxies, communication bots, or data pipelines offers several key benefits:
- Chatbot Privacy Scrubbers: Discord, Slack, Matrix, and Telegram bots can sanitize incoming user links automatically before reposting.
- Data Ingestion & Scraping ETL: Strips redundant query variations to ensure canonical caching and eliminate duplicate web records.
- Email Digest Filtering: Removes user-specific tracking hashes before archiving public newsletters.
Native Usage
How to clean and sanitize URLs locally using native command-line utilities and scripts:
Windows (PowerShell URL Cleaner)
# Strip tracking parameters in PowerShell
$url = "https://example.com/page?item=42&utm_source=fb&fbclid=123"
$uri = [System.Uri]$url
$cleanQuery = ($uri.Query.TrimStart('?') -split '&' | Where-Object { $_ -notmatch '^(utm_|fbclid|gclid)' }) -join '&'
$cleanUrl = "$($uri.Scheme)://$($uri.Authority)$($uri.AbsolutePath)" + $(if ($cleanQuery) { "?$cleanQuery" } else { "" })
Write-Output $cleanUrlLinux / Unix (Sed Regex URL Stripper)
# Strip tracking tags using sed
echo "https://example.com/item?id=99&utm_source=google&fbclid=xyz" | sed -E 's/([?&])(utm_[^&]+|fbclid=[^&]+|gclid=[^&]+)&?/\1/g' | sed -E 's/\?$//'Python (Standard Library urllib Link Cleaner)
import urllib.parse
import re
TRACKER_RE = re.compile(r'^(utm_|fbclid|gclid|mc_eid|_hsenc)', re.I)
def clean_url(url_str):
parsed = urllib.parse.urlparse(url_str)
params = urllib.parse.parse_qsl(parsed.query, keep_blank_values=True)
clean_params = [(k, v) for k, v in params if not TRACKER_RE.match(k)]
new_query = urllib.parse.urlencode(clean_params)
return urllib.parse.urlunparse(parsed._replace(query=new_query))
print(clean_url("https://example.com/item?id=42&utm_source=fb&fbclid=abc"))Java (Native Standard Library URI Cleaner)
import java.net.URI;
import java.util.Arrays;
import java.util.stream.Collectors;
public class LinkCleaner {
public static void main(String[] args) throws Exception {
URI uri = new URI("https://example.com/page?utm_source=fb&fbclid=123&id=42");
String cleanQuery = Arrays.stream(uri.getQuery().split("&"))
.filter(p -> !p.startsWith("utm_") && !p.startsWith("fbclid") && !p.startsWith("gclid"))
.collect(Collectors.joining("&"));
URI cleanUri = new URI(uri.getScheme(), uri.getAuthority(), uri.getPath(), cleanQuery.isEmpty() ? null : cleanQuery, null);
System.out.println(cleanUri.toString());
}
}