Home · Tools · Keyword Multiplier

SEO & PPC Tool

RGM° · Tools

Keyword Multiplier

Combine up to four keyword lists into every possible variation — broad, phrase, exact, and broad-modified match types — then export to CSV, Excel, Word, or copy to clipboard. The fastest way to expand a keyword set for SEO content planning or PPC campaign builds.

Enter your keyword lists

Put one keyword per line in each list. The tool generates every combination of List 1 × List 2 × List 3 × List 4. Empty lists are skipped. If you only need two lists, just fill in two.

0 keywords
0 keywords
0 keywords
0 keywords

Match types to generate

How to use the keyword multiplier

  1. Fill in 2–4 keyword lists. One keyword or phrase per line. List 1 is typically a modifier (best, cheap, top), List 2 is the core term (plumber, software, vacation), List 3 is a location or suffix (near me, in Brooklyn, for small business), List 4 is an optional further qualifier.
  2. Pick your match types. Broad match is plain text suitable for SEO research and Google Ads broad match. Phrase match wraps each result in quotes (for Microsoft Ads or older Google Ads syntax). Exact match wraps in square brackets. Broad-modified prepends a plus to each word (the legacy +keyword +modifier syntax — useful for historical match-type comparisons).
  3. Click Process. The tool computes every cartesian-product combination across your lists and renders the result.
  4. Export. Download as plain text, CSV (opens in any spreadsheet), TSV, .xls or .doc (open natively in Excel and Word), or copy to clipboard. Markdown export is useful for pasting into Notion, Linear, or any markdown-supported tool.
  5. Use the output downstream. Run the result through a search-volume tool (Ahrefs, Semrush, Keyword Planner) to triage. Feed it into a content calendar. Build campaign structures around it. Pair with the N-gram analyzer to find common phrases in your competitor data.
Why this tool exists. Keyword expansion at scale is the foundation of both SEO content planning and paid-search campaign builds. Manually permuting modifier × core × location is error-prone and slow. This tool runs every combination in milliseconds and gives you four export formats so the data flows into wherever you actually work — your spreadsheet, your campaign builder, your content brief.

Combining keyword lists for SEO and PPC

Keyword multiplication is one of the highest-leverage techniques in keyword research. A small list of modifiers (10 items) times a small list of core terms (15 items) times a list of locations (20 items) yields 3,000 unique queries. That's the seed corpus for an SEO content plan or a campaign structure with structured ad groups.

The trick isn't generating the combinations. The trick is what you do with them. A few patterns that work:

SEO content planning. Export the broad-match list, drop it into Ahrefs Keyword Explorer or Semrush Keyword Magic Tool in batches, pull search volume + difficulty + intent classification. Filter to queries with non-trivial volume and reachable difficulty. Cluster by intent (informational, commercial, transactional). Each cluster becomes a page on your site.

Local SEO campaign structure. Use the modifier × service × location pattern to generate a sitemap. For an HVAC company in the Northeast, "emergency × air conditioning repair × [each ZIP]" gives you 200+ landing-page candidates. Most won't have enough volume to justify a unique page, but the top 30–50 will — that's your areas-served structure.

PPC campaign builds. Export the phrase + exact match versions and import directly into Google Ads Editor or Microsoft Ads. Use the structure to group ad groups by core term, with modifiers as keywords inside. The broad-modified output is useful for migrating legacy +keyword +modifier campaigns when auditing historical match-type performance.

Negative keyword discovery. Multiply your core term against words you want to exclude (free, jobs, cheap, DIY, used) to seed a negative keyword list for paid search campaigns.

The math behind the tool

If you have n₁ items in List 1, n₂ in List 2, n₃ in List 3, and n₄ in List 4, the cartesian product gives you n₁ × n₂ × n₃ × n₄ unique combinations. A 10 × 10 × 10 × 10 multiplier yields 10,000 keywords. A 25 × 15 × 50 × 5 multiplier yields 93,750 keywords. The tool handles up to ~250,000 combinations before browser memory becomes a real concern — beyond that, split your lists and run in batches.

Copied to clipboard
'; downloadBlob(html, 'keywords-' + Date.now() + '.doc', 'application/msword'); showToast('Downloaded .doc'); } function exportMD(){ var d = buildRowsForExport(); var lines = ['| ' + d.headers.join(' | ') + ' |']; lines.push('| ' + d.headers.map(function(){return '---'}).join(' | ') + ' |'); d.rows.forEach(function(r){lines.push('| ' + r.map(function(c){return String(c).replace(/\|/g, '\\|')}).join(' | ') + ' |')}); var md = lines.join('\n'); navigator.clipboard.writeText(md).then(function(){showToast('Copied Markdown table')}, function(){ // fallback var ta = document.createElement('textarea'); ta.value = md; document.body.appendChild(ta); ta.select(); document.execCommand('copy'); document.body.removeChild(ta); showToast('Copied Markdown table'); }); } function copyClipboard(){ var text = document.getElementById('output').textContent; navigator.clipboard.writeText(text).then(function(){showToast('Copied to clipboard')}, function(){ var ta = document.createElement('textarea'); ta.value = text; document.body.appendChild(ta); ta.select(); document.execCommand('copy'); document.body.removeChild(ta); showToast('Copied to clipboard'); }); } // ===== UI BINDINGS ===== document.getElementById('process').addEventListener('click', process); document.getElementById('clear').addEventListener('click', function(){ ['list1','list2','list3','list4'].forEach(function(id){document.getElementById(id).value = ''}); updateCounts(); document.getElementById('result-area').style.display = 'none'; currentResults = []; }); document.getElementById('example').addEventListener('click', function(){ document.getElementById('list1').value = 'best\ncheap\nprofessional\naffordable\n24 hour\nemergency'; document.getElementById('list2').value = 'plumber\nelectrician\ncontractor\nroofer\nhandyman'; document.getElementById('list3').value = 'near me\nin Brooklyn\nin Manhattan\nin Queens\nNYC'; document.getElementById('list4').value = ''; updateCounts(); }); ['list1','list2','list3','list4'].forEach(function(id){ document.getElementById(id).addEventListener('input', updateCounts); }); updateCounts();