Skip to content

Keyword Combiner

Combine two keyword lists into a complete, ordered Cartesian product and copy up to 10,000 unique phrases without silent truncation.

Privacy: your files never leave your device. All processing happens locally in your browser.

How to use

  1. 1.Paste one keyword or phrase per line in list A and one modifier or second term per line in list B.
  2. 2.Choose A-then-B or B-then-A order, enter the exact separator, and combine the complete pair set.
  3. 3.Review counts and collisions, remove irrelevant candidates, then copy the deterministic one-per-line output.

About Keyword Combiner

A Keyword Combiner creates every pair between two lists. Put one base term per line in list A, one modifier or second term per line in list B, choose whether A or B comes first, and enter the separator that should appear between them. The tool returns the complete Cartesian product in first-seen order. Three colors combined with two product names produce six input pairs. The result is shown as one phrase per line and can be copied as a single block for a spreadsheet, ad-group draft, content brief, internal taxonomy review, or later analysis in another tool.

The behavior is deliberately mechanical. It 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. A generated phrase is not automatically a good target. 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. This distinction keeps a string-combination utility from pretending to be keyword research.

Each non-empty line is trimmed at its outer edges. Empty lines are ignored. Exact duplicates inside a list are removed after trimming while preserving the first occurrence. Deduplication is case-sensitive, so `Shoe` and `shoe` remain distinct because they may be intentional variants. Internal spaces, punctuation, accents, emoji, and non-Latin scripts remain unchanged. A term may contain at most 100 Unicode code points, and control characters are rejected. Each source editor accepts up to 100,000 UTF-16 code units and 500 unique terms. These separate limits bound both pasted text and the number of records processed.

The separator can be an empty string, a space, a hyphen, a plus sign, or another short literal sequence. It may contain up to 20 Unicode code points but cannot contain a line break or control character. No hidden spacing is added. If the separator is one normal space, `red` and `shoes` become `red shoes`; if it is empty, they become `redshoes`. Switching the order from A then B to B then A changes the loop order as well as the phrase order, so results remain predictable and easy to diff.

The pair budget is calculated before output deduplication. Up to 10,000 input pairs are accepted; the next pair fails the whole request. This prevents a request that is nominally too large from slipping through only because several strings later collide. Distinct pairs can occasionally create the same final phrase, especially with an empty separator. For example, `ab` plus `c` and `a` plus `bc` both produce `abc`. The tool keeps the first output and reports later output collisions separately from duplicate source lines. No result is silently cut off, paginated, sampled, or replaced with an ellipsis.

Use the summary to audit what happened. It shows unique output count, normalized list sizes, theoretical input-pair count, removed input duplicates, and removed output collisions. If the number is unexpectedly large, narrow the source lists before copying. If the number is unexpectedly small, check for exact repeated terms or colliding concatenations. Because order is stable, rerunning identical input yields identical text. That makes the output suitable for version comparison and deterministic tests.

All combination logic runs in the current browser tab. The lists are not uploaded or stored by the widget, and copying occurs only after the user presses the copy button. The tool does not create Google Ads match-type syntax, quote phrases, add 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.

Methodology & sources

Split CRLF, CR, or LF input into lines; trim outer whitespace; ignore empty lines; reject control and Unicode line/paragraph separator characters; cap each term at 100 Unicode code points, each editor at 100,000 UTF-16 code units, and each list at 500 unique case-sensitive terms. Deduplicate source strings in first-seen order. Validate a literal separator of at most 20 Unicode code points with no line breaks or controls. Compute the A×B pair count before generation and reject any request above 10,000 without partial output. Iterate the selected outer and inner list order deterministically, concatenate each pair with the separator, and deduplicate final collisions in first-seen order. Report normalized list counts, theoretical pair count, input duplicate count, output collision count, and unique output count.

Frequently asked questions

Does this tool provide keyword search volume?
No. It combines strings only. It does not call a search engine, advertising account, or keyword-data provider, so every candidate still needs relevance and demand review.
Are duplicate keywords removed?
Exact case-sensitive duplicates are removed within each input list. Final phrases that collide after concatenation are also deduplicated, and both counts are reported.
What happens above 10,000 combinations?
The entire request fails before output is generated. The tool never returns a partial sample or silently keeps only the first 10,000 pairs.

SEO & Webmaster guides

View all