Merge Two Lists & Remove Duplicates

Paste two lists to get one clean deduplicated list — plus a count of the overlapping entries that were collapsed.

Try:
Merged list

About this tool

Merge Two Lists & Remove Duplicates combines your two lists into a single, clean list with every duplicate collapsed — the set union of the two — and tells you exactly how much overlap it removed. It's the fast way to consolidate two exports of anything: email subscribers, customer IDs, SKUs, domains, tags, package names, or feature flags into one deduplicated list you can copy straight out.

The totals line reports each list's size, the merged size, how many duplicates were removed, and how many entries were shared by both lists (the cross-list overlap) — the headline number when you want to know how much two lists have in common.

Everything runs locally in your browser — nothing is uploaded.

Worked example

List A

apple
banana
cherry

List B

banana
cherry
date

Merged list

Merged (4):
apple
banana
cherry
date

Totals: A=3 · B=3 · merged=4 · duplicates removed=2 · shared by both=2

The two lists had 6 entries between them; banana and cherry appeared in both, so they were collapsed to one each. The result is 4 unique items, 2 duplicates removed, and 2 entries shared by both lists.

Options

Limits

FAQ

How is this different from just comparing two lists?

A comparison (set-difference) tool shows you three buckets — only in A, only in B, and shared. This tool does the opposite job: it gives you the single combined list with duplicates removed (the union), which is what you want when you're consolidating two exports into one. The totals line still tells you how many entries the two lists shared.

What does "duplicates removed" versus "shared by both" mean?

Duplicates removed is every entry that was collapsed, including repeats within a single list and matches across the two lists — it always equals A + B − merged. Shared by both counts only the distinct entries that appeared in both List A and List B (the cross-list overlap). If neither list has internal repeats, the two numbers match.

How do I merge comma-separated or tab-separated lists?

Change the Separator dropdown to Comma, Tab, Semicolon, Pipe, or Space. Both lists are split the same way, so paste them in whatever format you have — one item per line is the default. The merged output is always joined one item per line.

Which copy is kept when an item appears in both lists?

The first occurrence wins, so Merge order decides it: with Append, List A's copy is kept; with Interleave, whichever list reached that item first. This matters with Ignore case on — a shared [email protected] keeps the capitalization of the copy that appeared first.

Can it match items that differ only by case or leading zeros?

Yes. Enable Ignore case to treat Apple and apple as the same item, and Ignore leading zeros to treat 007 and 7 as equal — useful for consolidating numeric IDs, order numbers, or SKUs that were exported with different zero-padding.

Is my data uploaded anywhere?

No. The merge runs entirely in your browser via WebAssembly — your lists never leave your device.

Developer & Automation Access

Run it from the terminal

Same engine as this page, headless — via the gizza CLI:

gizza tool list-dedupe-merge "apple
banana
cherry" 'list_b=banana
cherry
date'

New to the CLI? Get gizza →

Open it by URL

Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:

https://gizza.ai/tools/list-dedupe-merge/?list_a=apple%0Abanana%0Acherry&list_b=banana%0Acherry%0Adate&separator=newline&merge_order=append&trim=true&ignore_blank=true&ignore_case=true&sort=input&ignore_leading_zeros=true

Machine-readable descriptor: tool.json — title + parameters JSON Schema for agents.