ForHosting KIT · Developer Utilities

Remove tracking parameters from a URL

A shared link often carries advertising and analytics identifiers long after they have served their original purpose.

● BetaFree · in your browser
Use it from WebAPIEmailTelegramApp soon

Paste one absolute HTTP or HTTPS URL to remove known tracking parameters without visiting the destination. The result keeps the surviving query parameters in their original order and reports every removed name, value and classification so that the change can be audited rather than trusted blindly.

Clean a link without silently rewriting it

Many URL tools parse a link and then serialize it again. That can alter letter case, escaping, a trailing slash or the order of repeated query fields even when those details were unrelated to tracking. This cleaner validates the address but edits the submitted text narrowly: it removes only query segments whose decoded names appear in the reviewed tracking catalogue. The scheme, host, port, path and fragment remain as supplied, and surviving parameters keep both their raw spelling and relative order. When every query parameter is removed, the question mark disappears as well. This conservative reconstruction makes the output suitable for links where repeated fields or unusual encoding carry meaning.

Choose an explainable policy and keep exceptions

The conservative policy is the default. It covers high-confidence campaign tags and click identifiers created for analytics, advertising, email or social attribution. The aggressive policy adds a second reviewed set whose names are also widely used for attribution but can overlap with a functional integration. Use it only when you understand the destination. A keep list overrides either policy, which is useful when a particular service relies on a parameter that normally looks like tracking. Name matching is case-insensitive, so UTM_SOURCE is treated like utm_source, while the removal record preserves the spelling that actually appeared in the URL.

Read the inventory before sharing the result

The output is intentionally more than a cleaned string. Each removed item includes its parameter name, decoded value and catalogue group, in the same order in which it appeared. This gives reviewers evidence for a privacy or content workflow and makes an unexpected classification easy to challenge. Nothing is fetched from the link, no redirect is followed and no safety claim is made about the site. URLs containing embedded user credentials are rejected so a password is not echoed in a result. If a parameter name cannot be decoded safely, it is kept. When uncertain, the tool removes less rather than risk changing how the destination behaves.

Privacy-aware link sharing

Remove advertising and analytics identifiers before placing a link in a message, document or public post, while retaining a reviewable record.

Editorial cleanup

Prepare source links for articles, knowledge bases and newsletters without disturbing functional query fields or anchor fragments.

Automated URL hygiene

Call the API in an ingestion or publishing workflow and store the structured removal inventory next to the cleaned link.

Which tracking parameters are removed?

The conservative policy removes reviewed UTM, advertising click, email campaign and social attribution identifiers. Aggressive mode adds a separate set of lower-confidence attribution names. The versioned catalogue and its review date are part of the capability source.

Are parameter names case-sensitive?

Classification and keep-list matching are case-insensitive, so UTM_SOURCE and utm_source receive the same decision. The inventory retains the spelling found in the submitted URL.

Can I prevent one parameter from being removed?

Yes. Add its name to keep_params. That exception takes priority over conservative and aggressive policy and applies to every occurrence of the name.

Does the cleaner visit or verify the destination?

No. It performs local parsing only. It does not follow redirects, test availability, inspect content or decide whether a site is safe. Only absolute HTTP and HTTPS URLs are accepted.

Why are URLs with a username or password rejected?

Echoing a URL with embedded credentials could expose a secret in output, logs or copied text. Remove the userinfo before cleaning the link.

Is the URL cleaner free on desktop and mobile?

The page runs locally and free in desktop and mobile browsers. The native app invokes the API and shows the task price; the same API request costs $0.002 from prepaid KIT balance.

Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.

POSThttps://api.kit.forhosting.com/dev/url-clean

Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.

curl -X POST https://api.kit.forhosting.com/dev/url-clean \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/article?utm_source=newsletter&id=3"}'
{
  "url": "https://example.com/article?utm_source=newsletter&id=3"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "dev.url_clean",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.

Per request$0.002

Published price — no tokens, no invented credits. A failed task is never charged.

max_url_chars8192
max_params200
max_keep_params100
HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.

Read the full KIT documentation →