The Keyword Combiner produces a single deterministic text block that can be copied with one click, accepting up to 10,000 unique input pairs per request with no silent truncation. To copy keyword combinations from the Keyword Combiner, paste one base term 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, set the exact separator, run the combination, and then press the copy button to move the result as a single block into a spreadsheet, an ad-group draft, a content brief, or another downstream tool. The output shows one phrase per line, follows first-seen order, and is reproducible: identical input always produces identical output text. Every step runs in the current browser tab, so the source lists are never uploaded, and copying happens only when you press the copy control, which keeps the workflow private and avoids accidental data movement.

What "Copy" Means in the Keyword Combiner
The Keyword Combiner generates every ordered pair between two one-per-line lists and exposes the result as a single text block that the copy button captures in one action. Each pair becomes one phrase that joins list A and list B with whatever separator you set, and the entire list lands on your clipboard without pagination, ellipses, or hidden sampling. Because order is stable and deterministic, the same two lists in the same order always produce the same text, so what you copy today matches what you would copy tomorrow from the same input.
Copying happens in the browser tab. The widget never uploads your lists to a remote service, and the clipboard action only triggers when you press the copy control. That means the source terms, the joined phrases, and the working summary all stay local until you deliberately paste them somewhere else, which is useful when you are handling draft ad groups, internal taxonomies, or any work that should not leave your machine until you say so.
Prepare Your Two Lists Before You Combine
List A holds the base terms, and list B holds the modifiers or second terms. One entry per line is the only rule that matters, because the splitter reads on line breaks (CRLF, CR, or LF) and ignores empty lines after trimming. Each non-empty line is trimmed at its outer edges, and exact duplicates inside a list are removed while preserving the first occurrence. Deduplication is case-sensitive, so Shoe and shoe stay as two distinct entries because they may be intentional variants such as a brand-spelling and a generic term.
Two hard limits shape how much you can paste. Each source editor accepts up to 100,000 UTF-16 code units, and each list accepts up to 500 unique case-sensitive terms. Individual terms are capped at 100 Unicode code points, and any line containing a control character is rejected outright. These limits bound both the pasted text and the number of records the combiner will process, so trimming a long list to its useful core is more effective than trying to bypass the cap.
The separator is the literal string that appears between the two halves of every joined phrase. It can be an empty string, a single space, a hyphen, a plus sign, or any other short sequence up to 20 Unicode code points, but it cannot contain a line break or control character. No hidden spacing is added, which makes the resulting phrases predictable:
| Separator | List A term | List B term | Combined phrase |
|---|---|---|---|
| Empty | red | shoes | redshoes |
| One space | red | shoes | red shoes |
| Hyphen | red | shoes | red-shoes |
| Plus sign | red | shoes | red+shoes |
Choosing what to keep before you press combine saves you from cleaning up noise later. Drop entries that are clearly irrelevant to your campaign or brief, keep alternative spellings you actually want, and decide whether punctuation, accents, emoji, or non-Latin characters belong in the output. The combiner leaves all of those untouched, which is helpful for non-English campaigns but means you must make those choices yourself.
Run the Combiner and Copy the Output
The build-and-copy loop is short because the tool is deliberately mechanical. The three actions below cover the entire workflow from a blank page to a clipboard full of joined phrases.
- Paste one keyword or phrase per line in list A and one modifier or second term per line in list B, then trim any leading or trailing whitespace from the pasted blocks.
- Choose A-then-B or B-then-A order, enter the exact separator you want between the two halves, and run the combination to generate the complete pair set in deterministic first-seen order.
- Review the summary counts, remove any irrelevant candidates from the source lists if the totals look wrong, and press the copy button to capture the deterministic one-per-line output as a single block.
Switching order between A then B and B then A changes both the loop order and the phrase order, so the change is visible in the output rather than hidden inside the engine. With three colors (red, blue, green) in list A and two product names (shoes, hats) in list B, the A-then-B output begins red shoes, red hats, blue shoes, blue hats, green shoes, green hats, which is six input pairs and six output phrases. Flipping to B-then-A starts with shoes red, shoes blue, shoes green, hats red, hats blue, hats green. The arithmetic is 3 × 2 = 6 either way, but the order matters for whatever you paste the result into.
The Keyword Combiner handles every step above in the same browser tab, so you stay in control of when the result moves from the page to the clipboard. If you want guidance on picking the right separator for your destination, the separator walkthrough covers the empty string, space, hyphen, plus sign, and custom literal cases.
Read the Summary Before You Copy
The summary block is the audit trail for the copy operation. It surfaces five figures: unique output count, normalized list sizes, theoretical input-pair count, removed input duplicates, and removed output collisions. Reading these numbers before you copy protects you from pasting a list that looks fine but is shorter than you expected, or that hides a silent input mistake.
| Summary field | What it tells you | Action if the number is unexpected |
|---|---|---|
| Unique output count | Final phrases you will copy | If too small, check for collisions or empty terms |
| Normalized list sizes | Lines kept in list A and list B after dedupe and trimming | If smaller than pasted, look for repeats or blank lines |
| Theoretical input pairs | A × B before any output deduplication | If above 10,000, narrow the lists before copying |
| Removed input duplicates | Exact case-sensitive repeats dropped from the sources | If high, the source list needs cleanup |
| Removed output collisions | Different pairs that produced the same final phrase | If high, consider a non-empty separator or trim short terms |
Output collisions are distinct from source duplicates. With an empty separator, ab in list A plus c in list B produces abc, and a in list A plus bc in list B also produces abc. The tool keeps the first output and reports the rest as collisions rather than silently swallowing them, so the summary stays a trustworthy record of what actually happened.
What Happens at and Above the 10,000-Pair Limit
The pair budget is calculated before any output is generated. Up to 10,000 input pairs are accepted, and the next pair causes the entire request to fail. There is no partial sample, no silent truncation, and no ellipsis slipped into the copied block. This prevents a request that is nominally too large from slipping through only because several later strings happened to collide into duplicates.
If you trip the limit, narrow list A or list B before re-running. Drop terms that clearly do not belong in the destination, split a long modifier list into two shorter passes, or run sub-campaigns separately and combine the copies later. Because the output is deterministic and order-stable, partial copies paste together cleanly without any join work on your side.
Use the Copied Block in Real Workflows
The copied output is plain text, one phrase per line, which is the format most spreadsheets, ad-group drafts, and content briefs expect on import. Paste it into a single column in Google Sheets or Excel for filtering, sort it next to a relevance column to drive a manual review pass, or drop it into a Google Ads Editor draft as a starting set of candidate keywords that you still need to qualify before launch.
Remember that the combiner is a string utility, not a research tool. It does not call a search engine, an advertising account, or a keyword-data provider, so search volume, competition, cost per click, intent, language fit, and grammatical quality are all unknown after the copy. Treat the block as a candidate list that still needs relevance review, landing-page fit, policy and trademark checks, and first-party or paid demand evidence before any of it reaches a live campaign.
One more thing worth keeping in mind: the tool never adds match-type syntax, quotation marks, brackets, or capitalization changes for you. If your destination wants "red shoes" in phrase match or [red shoes] in exact match, those rules live in the destination system, and you apply them after the copy.
For a deeper look, see Keyword Density Checker on Android: A Phone Workflow.