Usage
Navigate to Tidy Tags in the control panel sidebar. The plugin has two main views and a passive helper that runs in the background.
Dashboard
The dashboard lists every source in your install with:
- Source name, handle, and a Tags or Entries badge
- Total count (unique elements across all sites)
- Per-site counts
Click Manage on any row to open that source's list. A “source” is either a native Craft tag group or a channel section you've designated as tag-like — see Tag-like Entry Sections.
Group view
The group view shows every tag (or entry) in a source with per-site columns, so you can see where a title is translated and where it isn't. From here you can:
- Filter by site, or search by title
- Rename a single tag in all sites or just one
- Merge two or more tags into one (see Merging Tags)
- Delete one or more tags in bulk
All actions are multi-site aware. Choosing All sites in the filter shows every tag once (keyed to the primary site) with its translations in sibling columns. Choosing a specific site scopes everything to that site.
Entry-backed sources are read-only. Rename, merge, and delete are hidden on those screens — Tidy Tags still gives you counts, per-site title columns, and search, but consolidation has to happen in the entries index. See Tag-like Entry Sections for the reasoning.
Duplicate scanner
The Duplicates tab has two scopes, switched with a tab control at the top of the page:
- Within source — clusters near-duplicates inside a single tag group or section. Tag-group clusters get a one-click Merge. Entry-backed clusters offer Swap relations, which re-points relations from the duplicate entries onto the chosen target without deleting anything.
- Across sources — pools every source together and surfaces clusters that span more than one source. Useful when an editor has created a Tag for something already maintained as a Team or Competition. Cross-source clusters always use Swap relations — never auto-delete.
How clusters are computed depends on the match strategy. Under the default fuzzy strategy that is a Levenshtein distance threshold (default 2), and typical clusters look like this:
marketing/Marketing/markettingjavascript/JavaScript/java scriptNew York/new york/new-york
To widen or tighten the net, append a ?threshold=N query parameter to the Duplicates URL, where N is 1–6.
Under the strict strategy the clusters look quite different — FC Bayern Munich pairs with Bayern Munich, Wrexham with Wrexham AFC, and Arsenal is deliberately never paired with Arsenal Women. There is no distance involved, so the threshold control does nothing. If your tags are a controlled list of proper nouns rather than free text, read Matching Strategies before trusting the scanner's output.
Per-cluster item details
Each cluster item:
- Links directly to its tag or entry edit screen
- Shows the source it came from with a Tag or Entry badge
- Shows configured display field values (e.g.
sport: Football) so you can tell same-named items apart at a glance — see Configuration - Has a Show usages button that lists every entry holding a relation to it, with edit links — useful for previewing what would move during a swap or merge
“Did you mean?” warnings for editors
Tidy Tags ships a small JS asset bundle that loads on every control panel page. When an editor starts typing a new tag into a tag field, the plugin debounces the input, asks the tidytags/tags/check-duplicate endpoint for similar items, and shows a non-blocking amber notice below the field listing matches across:
- The tag group the field is bound to
- Every configured tag-like entry section
Each match shows the differentiator value (if configured) and links directly to the existing item, so an editor about to create England in a tag field is told that England (Football) already exists as a Team and given a one-click way to open it.
The warning is informational — it never blocks the editor from creating a new tag — but it nudges people toward reusing the taxonomy you already have instead of duplicating it across sources.