The guide
Combining word lists is multiplication, and multiplication does not stay small
Three short lists make dozens of phrases and six make a million. The arithmetic is exact, so the count should come before the list, and the cleaning before both.
- 48 phrases from lists of 3, 4 and 3 entries when the third list may be skipped
- 720 orders in which six lists can be arranged
- 1,000,000 phrases from six lists of ten words each, in one fixed order
- 1,956 ordered arrangements of one or more of six lists
Read the full guide Fold the guide
Anyone who has built a phrase list by hand knows the moment it gets away from them. Three adjectives, four products and a handful of audiences look like an afternoon of typing. Then a fourth list arrives, somebody suggests trying the words in the other order too, and the spreadsheet is suddenly longer than anyone will ever read. Nothing went wrong. The list did exactly what multiplication does.
That is the whole subject here: a combined list is a product, and its size is known before a single phrase exists. The count is arithmetic. The judgement, what goes in and what is thrown away, is not.
The arithmetic of every combination
Take two lists and pair every entry of the first with every entry of the second. Mathematicians call the result a Cartesian product, and its size is the simplest fact about it: the number of pairs is the size of one list times the size of the other. With three lists it is the product of three sizes, and so on. The same idea, stated as a counting principle, is the rule of product: if one thing can be done in a ways and another in b ways, both can be done in a times b ways.
A worked example makes it concrete. List a holds handmade, leather and vegan. List b holds wallet, belt, backpack and card holder. List c holds for men, for women and gift. Joined in that order with a space, the three lists give 3 x 4 x 3, which is 36 phrases, from handmade wallet for men to vegan card holder gift.
Now let the third list be skipped, so that leather belt is as welcome as leather belt gift. A list that may be skipped offers one more choice than it has entries, the choice of nothing. The count becomes 3 x 4 x (3 + 1), which is 48 phrases. That figure is what the tool shows when the page first opens, and it is easy to check by hand: 36 long phrases and 12 short ones. The slip to watch for is counting the skippable list as if it were required, which gives 36 and silently loses a quarter of the output.
One detail of that rule matters at the edge. If every list may be skipped, the product counts one combination in which all of them are, and that combination is an empty phrase. It is not a phrase at all, so one is subtracted. And a required list with nothing in it makes the whole count zero, because a product with a zero factor is zero. A tool that quietly ignored the empty list would be doing something other than what was asked.
Order is a second multiplication
Joining lists in a fixed order is one thing. Asking for every order is another, and it multiplies again. The number of ways to arrange n different things in a row is n factorial, the product of the whole numbers from 1 to n. The idea is old. An account of the history of permutations credits Fabian Stedman, writing in 1677 about the order in which church bells can be rung, with explaining the count step by step from two bells upward. The sequence of factorials is the entry numbered A000142 in the standard catalogue of integer sequences.
So three lists can be laid out in 6 orders, four in 24, five in 120, and six lists in 720 orders. Each order is a full product of its own. The example above, with all three lists required, goes from 36 phrases to 216. With the third list skippable there are two cases to add: all three lists in 6 orders, 216 phrases, and the first two alone in 2 orders, 24 phrases, for 240 in all.
That sum over cases has a neat extreme. Suppose every list holds one word and every list may be skipped. Then the count is the number of ways to choose some of the lists, at least one, and put them in a row. For six lists that is 1,956. The catalogue lists the closely related sequence A000522, the number of ordered selections of any size from n things. Its value for six things is 1,957, one larger, because it also counts the empty selection.
Inside a single list the same two ideas appear as pairs and triples. If order matters, the number of ordered pairs from n entries is n times n minus 1, and of ordered triples n times n minus 1 times n minus 2. If order does not matter, each set is counted once, and the count is the binomial coefficient, defined in the standard reference on mathematical functions as the number of ways of choosing a given number of objects from a collection without regard to order. Ten entries give 90 ordered pairs or 45 unordered ones.
Why the totals run away
None of these formulas is hard. What makes them dangerous is that every term multiplies. Six lists of ten words each, joined in one fixed order, give 1,000,000 phrases. Ask for every order of those six lists and the figure is 720 million. Double one list and the total doubles; add a list of twenty and it grows twentyfold. Growth of this kind is not a quirk of keyword work. It is what a product does, and it is why a count that is exact and available beforehand is worth more than a progress bar.
It also explains a design choice that looks fussy and is not: the count should be made in exact integer arithmetic, not in ordinary floating-point numbers. Six lists of five thousand entries have a product with twenty-three digits. The JSON standard notes that software built on the usual double-precision number format agrees exactly only on whole numbers up to about nine thousand million million, a figure of sixteen digits. Past that, a counter would show something close to the right figure and wrong in its last digits, which is a strange thing for a counting tool to do.
A template changes the arithmetic only slightly. A pattern such as a slot for the product, the word in, and a slot for the city multiplies the sizes of the lists it names. A slot that appears twice holds the same entry in both places, so it counts once, not twice. Lists the pattern never names do not multiply anything.
Cleaning is the real work
The product is only as good as its factors, and word lists gathered from spreadsheets and old documents are rarely clean. The same word turns up twice. One copy has a trailing space, another a capital letter. Each stray duplicate in a list is not one extra phrase but one extra phrase for every combination of the other lists.
Some duplicates are invisible. Text standards allow certain characters to be stored in more than one way: an accented letter can be one code or a plain letter followed by a combining accent. The Unicode standard calls these sequences canonically equivalent, meaning they represent the same abstract character and should always look and behave the same, and it defines normalization forms so that software can make them identical before comparing. Without that step, two entries that no reader could tell apart count as two.
Case is a similar trap. Comparing without regard to case is done properly with case folding, not by lower-casing alone: the Unicode folding data maps the German sharp s to a double s and the Greek final sigma to the ordinary sigma, so words that differ only in those letters fold together. Plurals are harder still. Stripping an s from the end of a word is a rough English habit that fails on glass and bus, which is why any tool offering it should leave it off by default and say what it is.
Length needs the same care. A character as a reader sees it, which the Unicode text segmentation annex calls a grapheme cluster, may be several codes. A family emoji is one such cluster and, in the UTF-8 encoding, where a single code point takes one to four bytes, it occupies 18 bytes. A limit counted in characters and a limit counted in bytes are different limits. Whose limit it is matters too: this page builds in nobody’s maximum, because a number copied from memory is worse than a field left for the reader to fill.
Even the file is part of the cleaning. The common description of the comma-separated format requires a field that contains a comma, a double quote or a line break to be enclosed in double quotes, with inner quotes doubled, and a list of phrases will contain commas sooner or later. There is a security point as well: the guidance on formula injection from a well-known web security project notes that a cell beginning with an equals sign, a plus, a minus or an at sign can be run as a formula by a spreadsheet. A phrase list with a leading minus on every line is exactly that case.
None of this is glamorous. It is, though, where a short clean list beats a long dirty one every time, and it has to happen before the multiplication, not after.
More phrases is not more reach
It is tempting to treat the count as an achievement. The published spam policies of one large search engine, read for this essay in October 2026, suggest the opposite. They name keyword stuffing, filling a page with words or numbers to manipulate rankings, and give blocks of text listing cities and regions as an example. They describe pages targeted at specific regions or cities that funnel visitors to one page as doorway abuse, and the generation of many pages mainly to manipulate rankings as scaled content abuse. A combiner pointed at a page template makes all three with no effort at all.
So the honest use of a combined list is as raw material. In advertising, one platform’s scripting reference writes a phrase-match keyword in quotation marks and an exact-match keyword in square brackets, and a combiner can add those marks, but it cannot know whether a phrase deserves either. In content planning, a list of every product crossed with every city is a list of questions to check, not a list of pages to publish.
What a combiner cannot tell you is the part that decides whether the work was worth doing. It does not know whether anyone searches for a phrase, what a click on it costs, or how a page built around it will perform, and a tool that printed such figures without measuring them would be inventing them. It cannot tell that vegan leather wallet is a product and vegan handmade is not. It will happily produce a million lines, and a million lines nobody has read is not a keyword strategy. Count first, cut hard, and read what is left.
Sources
Every source consulted for this guide. Links checked October 11, 2026.
- Cartesian product Wikipedia
- Rule of product Wikipedia
- Permutation Wikipedia
- Combination Wikipedia
- DLMF: 26.3 Lattice Paths: Binomial Coefficients NIST Digital Library of Mathematical Functions
- A000142: Factorial numbers The On-Line Encyclopedia of Integer Sequences
- A000522: Total number of ordered k-tuples (k=0..n) of distinct elements from an n-element set The On-Line Encyclopedia of Integer Sequences
- UAX #15: Unicode Normalization Forms Unicode Consortium
- UAX #29: Unicode Text Segmentation Unicode Consortium
- CaseFolding-18.0.0.txt, Unicode Character Database Unicode Consortium
- RFC 3629: UTF-8, a transformation format of ISO 10646 IETF, RFC Editor
- RFC 4180: Common Format and MIME Type for Comma-Separated Values (CSV) Files IETF, RFC Editor
- RFC 8259: The JavaScript Object Notation (JSON) Data Interchange Format IETF, RFC Editor
- CSV Injection OWASP Foundation
- AdsApp.KeywordBuilder Google for Developers, Google Ads Scripts reference
- Spam Policies for Google Web Search Google for Developers, Search Central documentation
- Intl.Segmenter MDN Web Docs
- String.prototype.normalize() MDN Web Docs