Wedding Hashtag Generator
One hashtag for every photo of your big day. Enter both names and get classic, blended and playful wedding hashtags β ready to copy, print and share.
β€οΈ Your Favourite Names
Every Style Covered
Classic ‘Weds’ hashtags, celebrity-style name blends and playful one-liners β all from one pair of names.
Copy One or Copy All
Tap a card to copy a single hashtag, or grab the whole set at once for your invitations and photo booth.
Made to Be Found
Short, clean hashtags with no spaces or symbols, so guests spell them right and every photo lands in one place.
How to Choose a Wedding Hashtag Guests Will Actually Use
A wedding hashtag only works if guests remember it, spell it right and use it on every photo.
Keep it short and impossible to misspell
Your hashtag will be typed on phones, in a hurry, often after a long day of celebrating. Short beats clever: #AaravWedsDiya will collect every photo, while a long pun with tricky spelling will split your photos across five wrong versions. If a name has an unusual spelling, the blended style (#Aariya) is often the safest of all.
Check it is really yours before you print it
Search your finalist on Instagram and TikTok before ordering boards and invitations. If another couple is already using it, add your wedding year or your new surname β #AaravWedsDiya2026 is still short, and it is uniquely yours.
One main hashtag, a few fun extras
Pick ONE main hashtag and put it everywhere: invitations, the venue board, table cards and the photo booth. Extra playful hashtags are fine for your own posts, but guests should never have to guess which one to use.
Real hashtags this tool creates
| Couple | Main hashtag | Blend hashtag |
|---|---|---|
| Aarav + Diya | #AaravWedsDiya | #Aariya |
| Virat + Anushka | #ViratWedsAnushka | #Virushka |
| Deepika + Ranveer | #DeepikaWedsRanveer | #Deepveer |
| Rohan + Sana | #RohanWedsSana | #Rohana |
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.
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.
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
Everything couples ask about wedding hashtags.
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 curCat = "all";
let currentTags = [];
function firstName(v){ return v.trim().replace(/[^a-zA-Z ]/g,"").split(/\s+/)[0] || ""; }
function capName(v){ const s = firstName(v); return s ? s.charAt(0).toUpperCase() + s.slice(1) : ""; }
function cap(s){ return s.charAt(0).toUpperCase() + s.slice(1); }
function blends(a, b){
a = a.toLowerCase(); b = b.toLowerCase();
const out = new Set();
if(!a || !b) return [];
for(let i=1;i
'; currentTags = []; return; } let tags = buildTags(); if(curCat !== "all") tags = tags.filter(x => x.cat === curCat); currentTags = tags.map(x => "#" + x.t); if(!tags.length){ box.innerHTML = '
'; return; } tags.slice(0,24).forEach((x,i)=>{ const card = document.createElement("div"); card.className = "name-card"; card.style.animationDelay = (i*0.03)+"s"; const full = "#" + x.t; card.innerHTML = '
' + '
' + '
' + '' + (x.cat==="classic" ? "π Classic" : x.cat==="blend" ? "π Blend" : "π Playful") + ''; box.appendChild(card); }); } window.refreshResults = generate; $("#genBtn").addEventListener("click", generate); ["nameA","nameB","surname","year"].forEach(id => $("#"+id).addEventListener("input", generate)); $("#catChips").addEventListener("click", e=>{ const b = e.target.closest("[data-c]"); if(!b) return; document.querySelectorAll("#catChips .chip").forEach(x=>x.classList.remove("on")); b.classList.add("on"); curCat = b.getAttribute("data-c"); generate(); }); $("#copyAll").addEventListener("click", ()=>{ const tags = buildTags().map(x => "#" + x.t); if(tags.length) copyText(tags.join(" "), tags.length + " hashtags copied!"); else toast("Type both names first"); }); const PAIRS = [["Virat","Anushka"],["Deepika","Ranveer"],["Aarav","Diya"],["Rohan","Sana"]]; 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();

