If you have ever seen couple names like Brangelina (Brad + Angelina) or Bennifer (Ben + Jennifer), then you have already seen a portmanteau in action.
A portmanteau is simply a word created by blending two words or names together. Today, these mixed names are everywhere — from celebrity couples and baby names to usernames, gaming tags, startup brands, and social media identities.
That is exactly why I built the Mix Names tool on NameCombinerss.
👉 Try it here: https://namecombinerss.us/tools/mix-names
The interesting part is that creating natural-sounding mixed names is harder than it looks. You cannot just randomly combine letters and expect good results. Some combinations sound smooth, while others become impossible to pronounce.
In this article, I will explain how I built a simple yet smart name blending algorithm in pure JavaScript without any frameworks.
This guide is beginner-friendly, so even if you are new to JavaScript, you can follow along easily.
What Is a Name Combiner?
A name combiner is a tool that merges two names into one unique blended result.
Examples:
Brad + Angelina → Brangelina
Ben + Jennifer → Bennifer
Taylor + Travis → Trayvis
Ali + Sara → Alisa
People use these tools for many reasons:
Couple nicknames
Baby names
Brand names
Usernames
Gaming tags
Social media handles
Friendship names
Modern name combiners use blending logic, syllable matching, and pronunciation flow to create smoother results.
Why I Built This Tool
I wanted to create a lightweight static website with multiple creative name generators.
Most online tools are either:
Too basic
Filled with ads
Slow to use
Or generate random unreadable names
So I decided to build my own fast and simple solution:
👉 https://namecombinerss.us/tools/mix-names
The goal was simple:
- Instant generation
- Natural sounding combinations
- Mobile friendly
- Beginner-friendly UI
- No login required
Understanding Portmanteau Formation
The technical word for mixing names is portmanteau formation.
It is a real linguistic process where parts of two words combine into one new word.
Examples include:
Brunch = Breakfast + Lunch
Smog = Smoke + Fog
Motel = Motor + Hotel
Name combiners use the same concept.
Instead of randomly attaching words, the system tries to preserve:
Pronunciation
Readability
Letter balance
Syllable flow
Good mixed names should feel natural when spoken aloud.
The Main Problem With Mixing Names
The biggest challenge is pronunciation.
For example:
Bad combination:
Brad + Angelina → Bradnglina
This becomes difficult to pronounce because too many consonants appear together.
Better combination:
Brad + Angelina → Brangelina
This sounds smooth because the vowels and consonants flow naturally.
That means the algorithm must:
Detect vowels
Find natural breakpoints
Merge carefully
Remove ugly results
Step 1 — Detect Vowels in Both Names
The first thing the algorithm does is locate vowels.
Vowels are:
a, e, i, o, u
These letters help determine where syllables naturally break.
Here is the helper function:
function isVowel(char) {
return "aeiou".includes(char.toLowerCase());
}
This small function becomes very important later.
Step 2 — Find Natural Split Positions
Now we need to identify good places where names can be cut.
A common technique is detecting:
consonant → vowel transitions
Example:
Angelina
Breakdown:
An-ge-li-na
Each vowel often creates a smoother merge point.
We collect these indexes:
function getSplitPositions(name) {
const positions = [];
for (let i = 1; i < name.length; i++) {
const prev = name[i - 1];
const current = name[i];
if (!isVowel(prev) && isVowel(current)) {
positions.push(i);
}
}
return positions;
}
This helps us find more human-friendly cutting points.
Step 3 — Combine Name Segments
Now comes the fun part.
We take:
the first half of name 1
and combine it with the second half of name 2
Example:
Brad + Angelina
Possible splits:
Br + Angelina
Brad + gelina
Bra + ngelina
JavaScript code:
function combineNames(name1, name2) {
const results = [];
const split1 = getSplitPositions(name1);
const split2 = getSplitPositions(name2);
split1.forEach(pos1 => {
split2.forEach(pos2 => {
const part1 = name1.slice(0, pos1);
const part2 = name2.slice(pos2);
results.push(part1 + part2);
});
});
return results;
}
This generates multiple possible combinations instantly.
Step 4 — Filter Ugly Combinations
Not every generated name sounds good.
Some become impossible to pronounce.
Example:
Brdnglna
To improve readability, I added filters.
One simple rule:
Remove combinations containing 4+ consonants together
Example filter:
function isReadable(name) {
return !/[bcdfghjklmnpqrstvwxyz]{4,}/i.test(name);
}
This removes most ugly outputs automatically.
Final Generate Function
Here is the simplified complete version:
function generateMixNames(name1, name2) {
const results = [];
function isVowel(char) {
return "aeiou".includes(char.toLowerCase());
}
function getSplitPositions(name) {
const positions = [];
for (let i = 1; i < name.length; i++) {
if (!isVowel(name[i - 1]) && isVowel(name[i])) {
positions.push(i);
}
}
return positions;
}
function isReadable(name) {
return !/[bcdfghjklmnpqrstvwxyz]{4,}/i.test(name);
}
const split1 = getSplitPositions(name1);
const split2 = getSplitPositions(name2);
split1.forEach(pos1 => {
split2.forEach(pos2 => {
const mixed =
name1.slice(0, pos1) +
name2.slice(pos2);
if (isReadable(mixed)) {
results.push(mixed);
}
});
});
return [...new Set(results)];
}
This version:
Removes duplicates
Keeps readable results
Generates smoother names
Works instantly in browser
Why Vowels Matter So Much
Vowels create pronunciation flow.
Without vowels:
Brdngln
With vowels:
Brangelina
That single improvement makes the name feel natural.
Many modern naming tools now use:
syllable detection
vowel balancing
phonetic analysis
pronunciation logic
to create better results.
Example Results
Input:
Brad + Angelina
Generated names:
Brangelina
Bradgelina
Brelina
Bangelina
Input:
Ali + Sara
Results:
Alisa
Asara
Alara
Input:
Taylor + Travis
Results:
Trayvis
Tayris
Travlor
Performance Benefits of Vanilla JavaScript
I intentionally avoided frameworks.
Why?
Because this tool does not need:
React
Vue
Angular
Pure JavaScript is:
Faster
Lightweight
Easier to deploy
SEO-friendly
Beginner-friendly
The entire algorithm runs instantly in the browser.
No backend required.
SEO Benefits of Interactive Tools
One reason interactive generators perform well in SEO is because users:
stay longer
interact more
generate multiple searches
share results socially
Tools naturally improve:
engagement
dwell time
repeat visits
That is why free utility websites often rank well in Google.
Beginner Lessons You Can Learn From This Project
If you are learning JavaScript, this project teaches:
- loops
- arrays
- string slicing
- regex
- helper functions
- filtering
- user input handling
- DOM interaction
It is actually a fantastic beginner project.
Future Improvements
Here are features I may add later:
- AI-based phonetic scoring
- Multi-name blending
- Language-aware pronunciation
- Smart nickname suggestions
- Saved favorite combinations
- Brand-style generation modes
Try the Mix Names Tool
If you want to generate your own blended names instantly, try the live tool here:
👉 https://namecombinerss.us/tools/mix-names
It is:
free
beginner-friendly
mobile responsive
fast
and works instantly in browser
Final Thoughts
Building a name combiner is much more interesting than simply merging strings together.
Once you start thinking about:

- pronunciation
- syllables
- vowel flow
- readability
you realize how language-aware even simple tools can become.
The best part is that you can build a surprisingly useful generator using only beginner-level JavaScript.
If you are learning web development, this is one of the most fun mini-projects you can create.


Top comments (0)