Couple Nickname Generator
Enter your names and get nicknames made for the two of you β sweet classics, funny pairs, and cute nicknames built from your own names.
β€οΈ Your Favourite Names
Made From Your Names
Your two names are blended into nicknames nobody else has β plus team names and initials.
Sweet & Funny Styles
Classic pet names, adorable duo nicknames and playful pairs β pick the mood that fits you two.
Unlimited & Free
Generate as many nicknames as you like. Save the best ones to your favourites and copy them anywhere.
How to Find the Perfect Couple Nickname
Sweet, funny, or made from your own names β here is how couples pick a nickname that sticks.
Three kinds of couple nicknames
Sweet classics are the timeless pet names β Honey, Babe, Sweetheart, Lovebug. They work for almost every couple and never sound forced. Funny pairs describe the two of you as a duo β Early Bird & Night Owl, WiFi & Hotspot, Grumpy & Sleepy. And name-based nicknames are blended from your real names, so they belong to you alone: Aarav and Diya, for example, blend into Aaya and Aariya, with Team AaDi as their couple team name.
How name blending works
The generator takes the first half of one name and joins it to the second half of the other, in both directions, then keeps the blends that sound natural. Short blends (4β8 letters) make the best nicknames and contact names. Your initials β like A + D β are another classic: perfect for bios, captions and matching profile names.
Tips for choosing yours
Pick it together β a nickname only one of you likes will not last. Say it out loud: if it feels awkward to say in front of friends, keep it as your private one and choose a softer public version. Many couples keep two: a sweet public nickname and a funny private one. Save your shortlist with the heart button, live with the top two or three for a week, and the winner usually picks itself.
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 Name Combiner
Merge two names into one couple name.
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 nicknames and how this generator 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();
const SWEET_PAIRS = [["Peanut Butter & Jelly","The classic duo β you complete each other"],["Sun & Moon","Opposites who light up each other's world"],["Salt & Pepper","Different, but always together"],["Milk & Cookies","Warm, sweet and made for each other"],["Mac & Cheese","Pure comfort, as a couple"],["Tom & Jerry","You tease, you chase, you love"],["Romeo & Juliet","The most famous lovers of all time"],["Bonnie & Clyde","Partners in everything β the fun kind"]]; const SWEET_SINGLES = ["Honey","Babe","Lovebug","Sweetheart","Cutie Pie","Sunshine","Buttercup","Snuggle Bug","Angel Face","Teddy Bear","Pumpkin","Cupcake","Darling","Sweet Pea"]; const FUNNY = [["Grumpy & Sleepy","One complains, one naps β perfect balance"],["Early Bird & Night Owl","Your sleep schedules never meet"],["Chatterbox & Listener","One talks, one nods β it works"],["Snack Thief & Snack Guard","Guard your fries at all times"],["WiFi & Hotspot","You are simply better connected together"],["Battery & Charger","One drains, one recharges"],["Captain & Co-Pilot","Every plan needs both of you"],["Drama Queen & Peace Maker","Balance, in nickname form"]]; let curCat = "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) || "Alex"; const B = cleanName($("#nameB").value) || "Sam"; const nameCards = []; blends(A, B).filter(x => x.length >= 4 && x.length <= 8).slice(0, 8).forEach(n => nameCards.push({ n: n, m: "Blended from " + A + " + " + B, t: "β¨ From Your Names" })); nameCards.push({ n: "Team " + capName(A.slice(0, 2).toLowerCase()) + capName(B.slice(0, 2).toLowerCase()), m: "Your couple team name", t: "β¨ From Your Names" }); nameCards.push({ n: A.charAt(0).toUpperCase() + " + " + B.charAt(0).toUpperCase(), m: "Your initials β perfect for bios and captions", t: "β¨ From Your Names" }); nameCards.push({ n: capName(A) + " Boo", m: "A cute spin on " + A, t: "β¨ From Your Names" }); nameCards.push({ n: capName(B) + " Boo", m: "A cute spin on " + B, t: "β¨ From Your Names" }); const sweetCards = []; SWEET_PAIRS.forEach(p => sweetCards.push({ n: p[0], m: p[1], t: "π Sweet Pair" })); SWEET_SINGLES.forEach(n => sweetCards.push({ n: n, m: "A sweet name to call your partner", t: "π¬ Sweet" })); const funnyCards = FUNNY.map(p => ({ n: p[0], m: p[1], t: "π€£ Funny Pair" })); let cards = []; if (curCat === "names") cards = nameCards; else if (curCat === "sweet") cards = sweetCards; else if (curCat === "funny") cards = funnyCards; else cards = nameCards.concat(sweetCards, funnyCards); const shown = cards.slice(0, 24); const box = $("#results"); box.innerHTML = ""; shown.forEach((c, i) => { const card = document.createElement("div"); card.className = "name-card"; card.style.animationDelay = (i * 0.03) + "s"; card.innerHTML = cardHTML(c.n, c.m, '' + c.t + ''); box.appendChild(card); }); $("#countLine").textContent = shown.length + " couple nicknames β tap the heart to save your favourites"; } window.refreshResults = generate; $("#genBtn").addEventListener("click", generate); $("#nameA").addEventListener("input", generate); $("#nameB").addEventListener("input", generate); $("#catChips").addEventListener("click", e => { const btn = e.target.closest("[data-c]"); if (!btn) return; document.querySelectorAll("#catChips .chip").forEach(x => x.classList.remove("on")); btn.classList.add("on"); curCat = btn.getAttribute("data-c"); generate(); }); const PAIRS = [["Virat","Anushka"],["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();