Love Nickname Generator
Romantic pet names for the one you love β enter their name for nicknames made from it, or browse romantic, cute and for-him / for-her ideas.
β€οΈ Your Favourite Names
Every Kind of Romantic
Deep romantic classics, cute and playful pet names, and lists made specially for him and for her.
Made From Their Name
Type your partner’s name and get personal nicknames built from it β the kind nobody else uses.
Unlimited & Free
Generate as many as you like, save your favourites with the heart, and copy them into chats and cards.
How to Choose a Love Nickname They Will Adore
The best love nickname is the one that makes them smile every single time. Here is how to find it.
Start with the feeling, not the word
Romantic nicknames like My Love and Jaan carry deep feeling; cute ones like Cupcake and Teddy carry playfulness. Most couples use both β a romantic one for real moments and a cute one for everyday chats. The generator keeps them in separate styles so you can pick by mood.
Make it personal with their name
A nickname built from their real name feels like it was made only for them β because it was. Diya becomes Diya Boo, Di-Di and My Diya. Type your partner’s name above and open the “From Their Name” style to see theirs.
Test it the right way
Whisper it, text it, and say it in front of friends. If they blush happily, you have a winner; if they flinch, keep it private or pick another β the reaction matters more than the word. And remember: the nickname they choose to save in their own phone is usually the one that truly landed.
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.
Couple Name Combiner
Merge two names into one couple name.
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 love 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 ROMANTIC = [["My Love","The timeless romantic classic"],["Beloved","Deep, poetic and sincere"],["Sweetheart","Warm and forever in style"],["My Heart","Because that is where they live"],["Jaan","Urdu/Hindi for 'my life' β deeply romantic"],["Soulmate","For the one you were destined for"],["My World","Everything revolves around them"],["Dearest","Old-fashioned in the sweetest way"],["Darling","Soft, classic, always lands"],["Mon Amour","French for 'my love'"],["Habibi","Arabic for 'my beloved'"],["Amor","Spanish for 'love' β short and warm"]]; const CUTE = [["Cutie Pie","Playful and adorable"],["Cupcake","Small, sweet and irresistible"],["Muffin","Soft and huggable"],["Teddy","For the one you hug most"],["Bunny","Cute with a hop of energy"],["Pudding","A British-style sweet classic"],["Snuggle Bug","For a professional cuddler"],["Buttercup","Cheerful and sunny"],["Peaches","Sweet with a southern wink"],["Dimples","Named after their best feature"]]; const HIM = [["Handsome","Simple, and it works every time"],["Tiger","Bold and a little wild"],["Captain","He steers, you trust"],["Champ","Your everyday winner"],["King","Treat him like royalty"],["Rockstar","For his main-character energy"],["Hero","He shows up when it counts"],["Mr. Perfect","Cheeky, but he will love it"],["Cowboy","Rugged and charming"],["Big Guy","Affectionate and teasing"]]; const HER = [["Princess","Make her feel treasured"],["Angel","Because she is one"],["Queen","Confident and adored"],["Gorgeous","A compliment in one word"],["Beautiful","Simple and always true"],["Sunshine","She brightens every room"],["Doll","A vintage-sweet classic"],["Baby Girl","Soft and affectionate"],["Sweetie Pie","Extra sweet, extra cute"],["Star","She shines, obviously"]]; 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 nameBased(N){ const n = capName(N); const first = n.split(" ")[0]; const syl = first.slice(0, 2); return [ { n: first + " Boo", m: "A cute spin on " + first, t: "π From Their Name" }, { n: capName(syl) + "-" + capName(syl), m: "Their first sound, doubled with love", t: "π From Their Name" }, { n: "My " + first, m: "Simple, possessive, romantic", t: "π From Their Name" }, { n: first + " Pie", m: "Sweet as pie, just like them", t: "π From Their Name" }, { n: first + " Cakes", m: "Playful and affectionate", t: "π From Their Name" }, { n: first + "kins", m: "A cosy, old-fashioned pet form", t: "π From Their Name" }, { n: "Little " + first, m: "Tender and teasing at once", t: "π From Their Name" }, { n: first + " Bear", m: "For maximum hug energy", t: "π From Their Name" } ]; } function toCards(list, tag){ return list.map(p => ({ n: p[0], m: p[1], t: tag })); } function generate(){ const N = cleanName($("#pname").value) || "Alex"; const mine = nameBased(N); const romantic = toCards(ROMANTIC, "πΉ Romantic"); const cute = toCards(CUTE, "π§Έ Cute"); const him = toCards(HIM, "π¦ For Him"); const her = toCards(HER, "π§ For Her"); let cards = []; if (curCat === "names") cards = mine; else if (curCat === "romantic") cards = romantic; else if (curCat === "cute") cards = cute; else if (curCat === "him") cards = him; else if (curCat === "her") cards = her; else cards = mine.concat(romantic, cute); 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 + " love nicknames β tap the heart to save the ones they will love"; } window.refreshResults = generate; $("#genBtn").addEventListener("click", generate); $("#pname").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(); }); generate();

