A keyword combination, in the strict mathematical sense used by the Keyword Combiner, is the concatenation of one term drawn from list A with one term drawn from list B, producing every A × B pair in a deterministic order. For example, three colors paired with two product names yield exactly six input pairs, which is the size of the Cartesian product before any deduplication. The "math" of combining keywords is therefore straightforward combinatorics: count the unique terms on each side, multiply, and check that the result fits inside a fixed budget. Once the budget is confirmed, the tool iterates the chosen outer list first, then the inner list, and concatenates each pair with a literal separator that the user provides. Order matters because switching from A-then-B to B-then-A changes the iteration order and therefore the visible output sequence. None of this involves search volume, intent, or grammatical judgment; the math is purely about string combination, which is why every output phrase still needs human review before it is treated as a target.

What a Keyword Combination Actually Is
The math behind two-list keyword generation is the Cartesian product. If list A holds n unique terms and list B holds m unique terms, the theoretical number of input pairs is n × m. For instance, three colors paired with two product names yield 3 × 2 = 6 input pairs, which is the size of the product before any deduplication. Every one of those pairs becomes a candidate phrase in the output, unless two pairs collapse into the same final string once the separator is applied.
The Keyword Combiner treats each input list independently first. Each non-empty line is trimmed at its outer edges; empty lines are ignored; exact case-sensitive duplicates inside a list are removed while preserving the first occurrence. Deduplication is case-sensitive on purpose, so Shoe and shoe stay distinct because they may be intentional variants. Internal spaces, punctuation, accents, emoji, and non-Latin scripts remain unchanged. After normalization, the tool reports the cleaned list size for both editors along with how many duplicates were dropped.
The Pair Budget: Why 10,000 Is the Hard Limit
Once both lists are normalized, the tool computes the theoretical pair count n × m and checks it against the hard limit of 10,000 input pairs. If the count is at or below 10,000, generation proceeds. If it is even one pair over, the entire request fails before any output is produced; the tool never returns a partial sample, a paginated slice, or an ellipsis. This prevents a request that is nominally too large from slipping through only because some strings later collide.
Several input limits exist alongside the pair budget and they interact:
| Limit | Value | Where it applies |
|---|---|---|
| Unique terms per list | 500, case-sensitive | Each of list A and list B after dedup |
| Pasted text per editor | 100,000 UTF-16 code units | List A and list B separately |
| Length of a single term | 100 Unicode code points | Each non-empty line after trimming |
| Input pair budget | 10,000 pairs | Final n × m count, before output dedup |
| Separator length | 20 Unicode code points, no line breaks or controls | The literal text placed between A and B |
These are independent ceilings, not interchangeable buffers. A request can fit comfortably inside the 10,000-pair budget while still exceeding the 100,000 UTF-16 character cap on one of the editors, so the pair count alone does not predict success. Control characters are rejected in both terms and the separator, which keeps the math from generating unpredictable output.
How to Combine Two Keyword Lists With the Math in Mind
- Paste one keyword or phrase per line in list A and one modifier or second term per line in list B.
- Choose A-then-B or B-then-A order, enter the exact separator (an empty string, a space, a hyphen, a plus sign, or any short literal up to 20 Unicode code points with no line breaks or control characters), and combine the complete pair set.
- Review the summary panel: unique output count, normalized list sizes, theoretical input-pair count, removed input duplicates, and removed output collisions.
- If the unique output count is unexpectedly large, narrow the source lists before copying; if it is unexpectedly small, check for repeated terms or colliding concatenations.
- Copy the deterministic one-per-line output as a single block for a spreadsheet, ad-group draft, content brief, internal taxonomy review, or later analysis in another tool.
When Two Different Pairs Produce the Same Phrase
Output collisions are different from input duplicates. An input duplicate is two identical lines inside one source list that the tool collapses before iteration. An output collision is two different input pairs that, after concatenation with the chosen separator, produce the same final phrase. The clearest example is an empty separator: ab plus c and a plus bc both produce abc. Because the pair budget is calculated before output deduplication, the budget check does not know which of these collisions will occur; the tool counts them after generation.
Both counts are surfaced separately. If the tool reports removed input duplicates, your source list contained a repeated term such as red appearing twice. If it reports removed output collisions, two genuinely different input pairs collided into the same string. Auditing both numbers prevents the kind of confusion that happens when an output looks smaller than the math suggests it should be.
Determinism and Why Repeated Runs Always Match
Order is stable across runs. The outer loop walks the chosen first list in first-seen order, the inner loop walks the chosen second list in first-seen order, and the separator is applied literally with no hidden spacing. Switching from A-then-B to B-then-A changes both the iteration order and the phrase order, so results are predictable and easy to diff. Rerunning identical inputs yields byte-identical text, which makes the output suitable for version comparison and deterministic tests. If you want the same output but in a different visible sequence, change the order control rather than re-sorting the source lists, because re-sorting would not affect the first-seen order the tool records.
All combination logic runs in the current browser tab. The lists are never uploaded or stored by the widget, and copying only happens after the user presses the copy button. Because the math is computed locally, there is no dependency on network state during generation, and identical inputs on different machines still produce identical outputs.
What the Combination Math Does Not Measure
A generated phrase is not automatically a good target. The math behind the Keyword Combiner deliberately does not estimate search volume, competition, cost per click, intent, language, relevance, or grammatical quality. It does not query an advertising account, search engine, keyword provider, or AI service. Some combinations will sound unnatural, overlap in meaning, or have no measurable demand. Treat the output as a candidate list that still needs human review and, when appropriate, first-party or paid keyword evidence.
The tool also does not create Google Ads match-type syntax, add quotation marks or brackets, normalize capitalization, expand synonyms, stem words, or remove trademarked terms. Apply the rules of the destination system yourself. Before using a list in a campaign or publishing workflow, remove irrelevant phrases, confirm landing-page fit, review policy and trademark concerns, and validate demand through an appropriate source. This distinction keeps a string-combination utility from pretending to be keyword research.
For a deeper look, see How to Check Keyword Density in Microsoft Word.