Couple Name Combiner
Merge your two names into one couple name β the way fans made Virushka and Deepveer. Every blend also comes as a username and a hashtag.
β€οΈ Your Favourite Names
True Ship Names
Both names are sliced at every point and joined both ways, then ranked so the smoothest, most famous-style blends come first.
Username & Hashtag Ready
Every card shows the blend as a couple name, a @username and a #hashtag β copy the version you need.
Save Your Shortlist
Tap the heart on any blend to build a favourites list you can copy, download and share with your partner.
How Couple Names Are Made (and How to Pick Yours)
Virushka was not an accident β it follows a simple recipe. Here is the recipe, and how to choose the blend that fits you two.
The ship name recipe
A couple name (also called a ship name) takes the start of one name and the end of the other. Virat + Anushka keeps “Vir” and adds “ushka” β Virushka. Deepika + Ranveer keeps “Deep” and adds “veer” β Deepveer. The joins that sound famous are the ones where the second name keeps a long, recognisable piece, which is exactly how this combiner ranks your results.
How this combiner works
It slices both names at every letter and joins the pieces in both directions β Virat into Anushka and Anushka into Virat β then ranks the blends by smoothness and shows the best 24. Under each blend you also get its @username and #hashtag forms, ready for Instagram, gaming profiles and anniversary posts.
Picking the one
Say the finalists out loud together. The right couple name is easy to pronounce, easy to spell after hearing it once, and still clearly contains both of you. If two blends feel close, the shorter one usually wins β it fits usernames, hashtags and captions everywhere. Save your top three with the heart button and let your friends vote.
More Name Tools You’ll Love
Every tool is free and works the same simple way β pick, generate, save your favourites.
Baby Name Generator
Beautiful baby names with real meanings.
Name Combiner
Blend two names into one unique name.
Middle Name Generator
Find the perfect middle name that flows.
Wedding Hashtag Generator
Catchy hashtags from the couple’s names.
Sibling Name Generator
Names that match your first child’s name.
Couple Nickname Generator
Cute nicknames for you and your partner.
Love Nickname Generator
Sweet pet names for someone you love.
Baby Boy Name Generator
Strong and sweet names for baby boys.
Baby Girl Name Generator
Beautiful names for baby girls.
Gender Neutral Baby Name Generator
Modern names that suit any baby.
Twin Baby Name Generator
Matching name pairs for twins.
Baby Name Poster Generator
Turn your baby’s name into a poster.
Frequently Asked Questions
Quick answers about couple names and how this combiner works.
const favs = new Set(); const $ = s => document.querySelector(s); function toast(msg){ const t=$("#toast"); t.textContent=msg; t.classList.add("show"); setTimeout(()=>t.classList.remove("show"),1600); } function copyText(txt,msg){ if(navigator.clipboard && navigator.clipboard.writeText){ navigator.clipboard.writeText(txt).then(()=>toast(msg||("Copied: "+txt))).catch(()=>toast(txt)); } else { const ta=document.createElement("textarea"); ta.value=txt; document.body.appendChild(ta); ta.select(); try{document.execCommand("copy"); toast(msg||("Copied: "+txt));}catch(e){toast(txt);} document.body.removeChild(ta); } } function renderFavs(){ $("#favCount").textContent = favs.size; const list=$("#favList"); list.innerHTML=""; if(!favs.size){ list.innerHTML='No favourites yet β tap π€ on any name card.'; return; } favs.forEach(n=>{ const it=document.createElement("span"); it.className="fav-item"; it.innerHTML = n + ' '; list.appendChild(it); }); } function cardHTML(name, sub, tags){ return '
' + '
' + (sub ? '
' : '') + (tags || ''); } document.addEventListener("click", e=>{ const c=e.target.closest("[data-copy]"); if(c){ copyText(c.getAttribute("data-copy")); return; } const f=e.target.closest("[data-fav]"); if(f){ const n=f.getAttribute("data-fav"); if(favs.has(n)){ favs.delete(n); f.classList.remove("faved"); f.textContent="π€"; } else { favs.add(n); f.classList.add("faved"); f.textContent="β€οΈ"; toast("Saved: "+n); } renderFavs(); return; } const u=e.target.closest("[data-unfav]"); if(u){ favs.delete(u.getAttribute("data-unfav")); renderFavs(); if(window.refreshResults) refreshResults(); return; } }); $("#favToggle").addEventListener("click", ()=>{ const p=$("#favPanel"); p.classList.toggle("open"); p.hidden = !p.classList.contains("open"); }); $("#copyFavs").addEventListener("click", ()=>{ if(favs.size) copyText([...favs].join(", "), "Favourites list copied!"); else toast("No favourites yet"); }); $("#clearFavs").addEventListener("click", ()=>{ favs.clear(); renderFavs(); if(window.refreshResults) refreshResults(); }); $("#dlFavs").addEventListener("click", ()=>{ if(!favs.size){ toast("No favourites yet"); return; } const blob=new Blob(["My Favourite Names\n\n"+[...favs].join("\n")],{type:"text/plain"}); const a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download="my-favourite-names.txt"; a.click(); URL.revokeObjectURL(a.href); toast("List downloaded!"); }); document.querySelectorAll(".faq-q").forEach(q=> q.addEventListener("click", ()=>{ const it=q.parentElement; it.classList.toggle("open"); const an=it.querySelector(".faq-a"); if(an) an.hidden = !it.classList.contains("open"); })); renderFavs();
let curStyle = "all"; function cleanName(v){ return (v || "").trim().replace(/ +/g, " "); } function capName(s){ return s ? s.charAt(0).toUpperCase() + s.slice(1) : s; } function blends(a, b){ const scored = new Map(); const x = a.toLowerCase(), y = b.toLowerCase(); function add(first, second){ const frag = second.length >= 3 ? 0 : (second.length === 2 ? 1 : 2); const name = capName(first + second); if (!scored.has(name) || scored.get(name) > frag) scored.set(name, frag); } for (let i = 2; i < x.length; i++) for (let j = 1; j < y.length; j++) add(x.slice(0, i), y.slice(j)); for (let i = 2; i < y.length; i++) for (let j = 1; j < x.length; j++) add(y.slice(0, i), x.slice(j)); return [...scored.entries()].sort((p, q) => p[1] - q[1] || p[0].length - q[0].length || p[0].localeCompare(q[0])).map(e => e[0]); } function generate(){ const A = cleanName($("#nameA").value), B = cleanName($("#nameB").value); const box = $("#results"); box.innerHTML = ""; if (!A || !B){ box.innerHTML = '
'; $("#countLine").textContent = ""; return; } let list = blends(A, B).filter(n => n.length >= 4 && n.length <= 12); if (curStyle === "short") list = list.filter(n => n.length <= 7); if (curStyle === "long") list = list.filter(n => n.length >= 8); if (!list.length){ box.innerHTML = '
'; $("#countLine").textContent = ""; return; } const shown = list.slice(0, 24); shown.forEach((n, i) => { const card = document.createElement("div"); card.className = "name-card"; card.style.animationDelay = (i * 0.03) + "s"; card.innerHTML = cardHTML(n, "@" + n.toLowerCase() + " Β· #" + n, 'π Couple Name'); box.appendChild(card); }); $("#countLine").textContent = shown.length + " couple names for " + A + " + " + B + " β tap the heart to save your favourites"; } window.refreshResults = generate; $("#genBtn").addEventListener("click", generate); $("#nameA").addEventListener("input", generate); $("#nameB").addEventListener("input", generate); $("#styleChips").addEventListener("click", e => { const btn = e.target.closest("[data-s]"); if (!btn) return; document.querySelectorAll("#styleChips .chip").forEach(x => x.classList.remove("on")); btn.classList.add("on"); curStyle = btn.getAttribute("data-s"); generate(); }); const PAIRS = [["Virat","Anushka"],["Deepika","Ranveer"],["Ben","Jennifer"],["Ranveer","Deepika"],["Nick","Priyanka"],["Harry","Meghan"]]; PAIRS.forEach(p => { const s = document.createElement("button"); s.className = "trend-chip"; s.textContent = p[0] + " + " + p[1]; s.addEventListener("click", () => { $("#nameA").value = p[0]; $("#nameB").value = p[1]; generate(); window.scrollTo({ top: 0, behavior: "smooth" }); }); $("#pairRow").appendChild(s); }); generate();

