Tool

AdGuard filters to CLN 1.0

Input
AdGuard and uBlock Origin lists
Output
CLN 1.0 rule file
Runs
In your browser

Turn AdGuard and uBlock Origin parameter-removal lists into one CLN 1.0 rule file you can load into Linkumori as a remote or custom rule file.

It reads lists such as Dandelion Sprout’s Actually Legitimate URL Shortener Tool and the AdGuard URL Tracking filter, converts every $removeparam rule, and lists what it couldn’t convert and why. Everything runs in your browser. Fetch asks the list’s address for the file directly from your browser; nothing is sent to this site. We don’t check or control the sites you fetch from, so only use lists you trust; see the Terms of Use and Privacy Policy.

Source lists

Add one or more lists. Several lists merge into one rule file: identical rules are kept once, and every list’s @@ exceptions apply to all of them, as when an ad blocker loads the lists together.

List addresses you enter are remembered in this browser only.

Options

Per site: ||amazon.*^, ||youtube.com^… so Linkumori only checks a site’s rules on that site. Rules that apply everywhere stay in clean-global.
Keys become clean-amazon.*, clean-global. A prefix keeps them apart from the built-in providers, which would otherwise share rule toggles.
Load a list first.

CLN 1.0 rule file

Convert a list to see the rule file here.

Conversion report

Every line that was skipped, converted with a note, merged as a duplicate or excluded by !#if, with the reason.

The report appears after a conversion.

Try a URL

Runs the converted rules on a URL the way Linkumori runs providers: the first matching provider that changes the URL wins, then the next pass starts on the new URL. It models a top-level page load (GET, first-party), so it’s an approximation; the custom rules editor in Linkumori simulates with the engine itself.

Convert a list first.

How AdGuard syntax maps to CLN

AdGuard / uBOCLN 1.0
$removeparam=x · $queryprune=x$removeparam=x. Names starting with ~, | or /, and commas and backslashes, are escaped as in CLN’s value escapes.
doc · xhr · css · frame · beacondocument · xmlhttprequest · stylesheet · subdocument · ping
1p · 3p · ~third-party · strict1pfirst-party · third-party · first-party · strict-first-party
domain= · from=domain=, with entity values such as amazon.* kept.
denyallow=a|bto=~a|~b
method= · match-case · to=Unchanged.
@@…$removeparam…An @@ entry in the same provider.
/regex/ URL pattern/regex/i. AdGuard patterns are case-insensitive; a $ anchor is written (?![\s\S]).
/path pattern*/path, so Linkumori doesn’t read the leading / as a regex.
$badfilterRemoves the rule it names.
$important · $allModifier dropped: CLN has no rule priority.
!#if · !#else · !#endif · !#includeEvaluated for the target picked in Options.
##, #@#, ##+js(…), $app=, $redirect, plain blocking rulesSkipped and listed in the report: they aren’t URL cleaning.

How rules are split into providers

RuleWhere it goes
||www.amazon.co.uk/dp^$removeparam=xProvider ||amazon.*^ when the list also names amazon.*, else ||amazon.co.uk^. The rule keeps its own pattern, so it still only fires there.
||amazon.$removeparam=thProvider ||amazon.*^, rule $removeparam=th.
$removeparam=si,domain=youtu.be|soundcloud.comOne copy in ||youtu.be^ and one in ||soundcloud.com^, with domain= dropped where the provider already says it. Unrelated ~ exclusions are dropped.
$removeparam=gclid · */?r=dir$removeparam · domain=~a.comThe global provider ("domainPatterns": ["*"]): they apply on every site.
@@…$removeparam=…Copied into every provider holding a filter it could guard, because on a page load Linkumori only checks a provider’s own @@ entries.
@@/unsub/?$removeparamOne regex in defaults.exceptions, which every rule of the file skips.

Merging. Rules from all lists go through the same split. A rule both lists contain is kept once (the report lists it under Duplicates), and a list’s @@ exceptions also guard the other lists’ rules on the same pages.

In Linkumori a filter’s domain= is checked against the URL being cleaned (for @@ entries, also against the page), so splitting domain= lists into site providers keeps the same behaviour, and for doc rules it matches AdGuard exactly. See the filter syntax reference for every modifier.

Licenses. The output follows CLN Format 1.0 (final). Each source list keeps its own license; credit its authors when you redistribute the converted file.

Source: partials/converter.html on the website branch.