About Full-Inclusive Join
Full-Inclusive Join returns the union of two lists — every item that appears in either list, with duplicates collapsed. Paste both lists, one item per line; the tool concatenates them and dedupes, preserving the order in which each unique value first appears (List A first, then any items new to List B).
This is what you want when combining lists is the goal and duplicates are noise: merge two mailing lists for a single send, combine multiple requirements.txt files into one, build a single roster from several class lists, or roll up tags from two repositories. It differs from a simple paste-and-concatenate in that duplicates are removed across both lists, not just within each one. It is the conceptual opposite of Inner Join: the inclusive operation keeps everything it can, while the inner operation keeps only the items in both lists.
Examples
List A:
apple
banana
cherry
date
List B:
cherry
date
elderberry
figapple
banana
cherry
date
elderberry
figAll items, deduped. Order is List A first, then items new to List B.
Frequently asked questions
Why not just concatenate the two lists in a text editor?
Concatenation keeps duplicates. The union deduplicates across both lists, so an item that appears in both A and B shows up once in the output, not twice.
How does this differ from Remove Duplicate Lines?
Remove Duplicate Lines works on a single list. Full-Inclusive Join expects two lists and dedupes across both — equivalent to concatenating the two lists and then de-duplicating, but in one step.
Is the output order stable?
Yes. Items appear in their order of first occurrence: List A items in their A-order, then any items unique to B in their B-order.
What about case and whitespace differences?
By default the comparison is case-sensitive and whitespace-sensitive — `Apple` and `apple` are different items, and `apple ` (with a trailing space) is different from `apple`. Run Trim Lines first if whitespace is incidental, or use the case-insensitive option in the comparison bar.
