URL Normalizer & Deduplicator
Pricing
from $0.20 / 1,000 normalized urls
URL Normalizer & Deduplicator
Cleans a list of URLs and marks the ones that point at the same page. Strips tracking parameters and unifies scheme, host case, default ports, query order and trailing slashes.
Pricing
from $0.20 / 1,000 normalized urls
Rating
0.0
(0)
Developer
Ryusuke Asai
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
22 days ago
Last modified
Categories
Share
Clean a list of URLs and find the ones that point at the same page.
Two URLs can look different and still be the same page. https://Example.com/a/?utm_source=x
and http://example.com:80/a are one page, not three. Scrapers, sitemap dumps, CRM exports
and link audits are full of these, and they quietly inflate every count downstream.
This Actor rewrites each URL into one canonical form and marks the repeats.
What it does to each URL
| Before | After | |
|---|---|---|
| Host case | https://Example.COM/a | https://example.com/a |
| Default port | https://example.com:443/a | https://example.com/a |
| Tracking parameters | …/a?utm_source=x&id=1 | …/a?id=1 |
| Query order | …/a?b=2&a=1 | …/a?a=1&b=2 |
| Trailing slash | https://example.com/a/ | https://example.com/a |
| Fragment | …/a#section | …/a |
| Scheme | http://example.com/a | https://example.com/a |
Non-default ports, percent-encoding and query parameters you actually use are left alone.
Input
| Field | Type | Default | |
|---|---|---|---|
urls | array | — | required |
stripParams | array | utm_*, fbclid, gclid, ref | the parameters to remove |
forceHttps | boolean | true | rewrite http:// as https:// |
keepTrailingSlash | boolean | false | keep the slash at the end of the path |
Output
One row per input URL, in the order you sent them.
{ "original": "https://Example.com/a?utm_source=x", "normalized": "https://example.com/a", "isDuplicate": false }{ "original": "https://example.com/a/", "normalized": "https://example.com/a", "isDuplicate": true }{ "original": "not a url", "normalized": "", "isDuplicate": false, "error": "not a valid URL" }
Nothing is dropped. A URL that cannot be parsed comes back with an error and the run continues,
so the output always lines up with the input.
What it does not do
- It does not fetch anything. No requests are made to the URLs, so it is fast and cannot be blocked.
- It does not follow redirects. Two URLs that redirect to the same page are not detected as duplicates.
- It does not know your site. If a query parameter matters to you, keep it out of
stripParams.


