window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-F7DY9R39YR'); ░▒▓ GL!FFY ▓▒░

⛕ HOW TO GL!FFY

*this message will only show once*

⌨ TYPE: Enter text in the box OR CHOOSE Glyphs Manually.

🃏 GL!FFIFY: Shatter words into symbols.

⛕ FLIPIFY flips text upside down! ENG only. Other languages and symbols will turn 🔙wards.

👻 GHOSTIFY: Hide text from bots by interspersing text with invisible non-spacers. This can double your text output so I've included a BYTE COUNTER to keep track.

👥 SHARE:through your preferred social media or you can simply..

⧉ DEPLOY:Tap text to Auto-Copy.

BYTE DENSITY0 / 280
SEVERITY: 3
const GHOST_CHAR = '\u200C'; const glyphData = { 'a':['ꪖ','ꪁ','ꪋ','Ⓐ','ᗩ','Ꮜ','д','ດ','ລ','ձ','ⲁ','ꅔ','მ','⦫','д','🜁','∀','𝈵','ᰝ','ꮜ','፱','ㅂ','₳','ລ','∆'], 'b':['ഭ','ᙠ','ཐ','₿','ຄ','ຢ','ସ','ଣ','ଓ','꧔','ଓ','ꨅ','ᑲ','ꠊ','ʙ','ɮ','β','Ⱁ','ⱁ','ߘ','฿','ხ','ᖯ','ℬ'], 'c':['⊂','ꮳ','☾','ꛕ','ር','᱄','Հ','୯','ᝯ','¢','₡','₵'], 'd':['ծ','ᗪ','ᑯ','ᑰ','ہے','ð'], 'e':['🝗','ε','દ','𐐁','Ƹ̵̡','ᓬ','ཇ','ع','Σ','ᛊ','꒰','♇','ይ','ৎ','Ꭷ','ᰚ','ⲉ','૯','ല','୧','ᕞ','ට','୨','ㅌ','℮','∋','ອ','ɘ'], 'f':['⨏','⨍','ꛂ','բ','न','ᱍ','ɟ','ᨃ','₣','ƒ'], 'g':['ꮐ','Ꮐ','Ꮹ','ꮹ','Ᏻ','ፍ','ᰑ','໔','ச','க','ʛ','ɕ','❡','ɢ','ჭ','₲'], 'h':['ꛖ','ʜ','ꛅ','ꛓ','ዝ','ћ','ᰙ','ի','հ','મ','ଐ','அ','ϧ','ㅐ','ㅒ','ん','ⴼ','h','հ','ɦ'], 'i':['ꚤ','ꮖ','፰','፲','ᰌ','ຳ','າ','།','ར','ᔫ','ᓵ','Ꮠ','Ꭵ','߉'], 'j':['ꮣ','ଏ','ᒎ','ᒍ','ᒚ','⌡','ʝ','Ꮣ'], 'k':['к','₭','ʞ'], 'l':['ʟ','∟','ட','ㄴ','𑣥'], 'm':['ℳ','꧑','♏︎','♍︎','ꦥ','ꛗ','Պ','ጥ','ᱬ','ᰔ','ന','ത','ଳ','ଲ','ற','ⲙ','ㅆ','ꠕ','Ꮫ','ᨎ','ᨏ','ᨓ','ᱬ','Ⱞ','ຕ','₥','ꪔ'], 'n':['И','∩','ས','ꛘ','ᰜ','᱅','ⲡ','ꠙ','ɳ','ȵ','♑︎','𑣓','𝇙','𝇚','𐢭','ᱴ','ր','ท','꒖','₦','ꫜ','ꪦ','ꫛ'], 'o':['☹','♉︎','☮','བ','ᰓ','꧞','৩','ⲑ','ⲫ','Ꮻ','ᨔ','⊕','𖣠','⦾','ᝪ','𐤈','Ⱉ','𓊗','𓐍','𓇸','𝇇','◉','ʘ','⦾','𖣠','●','ⓧ','⚆','⚙','⊛','✺','ᯪ','𓂂','𓏸','०','⚬','꧆','᭵','𑜰','ഠ','o'], 'p':['ꚬ','ᰍ','թ','Թ','ᰋ','ꛤ','ꚪ','ꚰ','ꛄ','ཁ','ꛞ','ⲣ','ᱞ','ᑭ','ᑹ','ᕈ','ᕉ','ᣑ','ᣒ','Ꭾ','ᨄ','ᨁ','ᨌ','ᨋ','ꝕ','ᨍ'], 'q':['᭷','ବ','ଵ','৭','ᑫ','գ'], 'r':['ɹ','r','ɾ','⒭','Ի','ⲅ','ր','ℝ','ℜ','ℛ','Я','ԅ','☈','ᚱ','፫','ર','ર','₹','ଧ','ମ','𞥓','འ','ⴽ','ჩ','ʀ','ʁ','ᴚ','ʁ','ʀ'], 's':['༦','ꛯ','ꭶ','ຮ','ຽ','ຂ','ຊ','ટ','ທ','ʂ','s','ꨂ','ⲋ','༦','ᔑ','ᔜ','$','ᔐ','ꠐ','𑣮','ꌚ','ֆ'], 't':['𑜂','ꮏ','৳','ꛈ','ፕ','ት','ե','ե','Շ','ঢ','₮','⸸','イ','ʈ','ϯ','ⲧ','ᨂ','ɫ','†','ᝨ'], 'u':['ᑌ','པ','ህ','ц','ມ','ປ','ນ','ບ','𞤭','ߎ','ப','ᕃ','𝈱','U','ᱢ','ᴗ','ป','ม','ꪊ'], 'v':['🜉','∨','ᐯ','ଏ','𝜗','ᰂ','᱇','ຈ','খ','ꨕ','ꨖ','ᐯ','߇','ɣ','ᨆ','ˠ','ง','ข','บ','ᝬ','ᝡ','ꪚ','ꪜ'], 'w':['ພ','ꪝ','𑜴','ω','ཡ','ꛃ','ꮤ','ሥ','պ','ш','Ш','ᰃ','ⲱ','ϣ','ய','ᓬ','ᕒ','ꠏ','ω','𝈢','ⲱ','ϣ','𐐎','𞤧','พ','ຟ','ฝ','ᱷ','ຟ','₩','ꪐ','ᗯ','ʬ'], 'x':['ꚾ','⚔','ᝣ','✖','✘','✗','𝈂','ᰞ','ᚷ','义','𓏴','ꪎ'], 'y':['🝁','ꚲ','𐤅','ຯ','થ','ꚵ','ꛥ','እ', 'ꨋ','᭻','ಏ','ழ','ⲯ','న','と','ʎ','ꪗ','ʏ','ꌦ','ყ','¥','ຯ','ⲩ'], 'z':['չ','ꨴ','༪','ᙆ','ʐ','ʑ','𖫢'] }; const flipMap = {'a':'ɐ','b':'q','c':'ɔ','d':'p','e':'ǝ','f':'ɟ','g':'ƃ','h':'ɥ','i':'ᴉ','j':'ɾ','k':'ʞ','l':'l','m':'ɯ','n':'u','o':'o','p':'d','q':'b','r':'ɹ','s':'s','t':'ʇ','u':'n','v':'ʌ','w':'ʍ','x':'x','y':'ʎ','z':'z','A':'∀','B':'ᗺ','C':'Ɔ','D':'ᗡ','E':'Ǝ','F':'Ⅎ','G':'⅁','H':'H','I':'I','J':'ᒋ','K':'ʞ','L':'Ꞁ','M':'W','N':'N','O':'O','P':'Ԁ','Q':'Ò','R':'ᴚ','S':'S','T':'⊥','U':'∩','V':'Λ','W':'M','X':'X','Y':'⅄','Z':'Z','?':'¿','!':'¡'}; let box, severityInput, lvlLabel; window.addEventListener('load', () => { box = document.getElementById('compositionBox'); severityInput = document.getElementById('severityLvl'); lvlLabel = document.getElementById('lvlLabel'); severityInput.addEventListener('input', (e) => { lvlLabel.innerText = e.target.value; }); updateCounter(); init(); if (!localStorage.getItem('gliffy_done')) { document.getElementById('tutorial').style.display = 'flex'; } }); function updateCounter() { const count = box.value.length; const counter = document.getElementById('charCounter'); counter.innerText = `${count} / 280`; counter.style.color = count > 280 ? 'var(--danger)' : (count > 200 ? 'var(--warn)' : 'var(--accent)'); } function handleBoxClick() { if (box.value.length > 0) { navigator.clipboard.writeText(box.value).then(() => { showToast("⧉ COPIED!"); }); } } function scrambleAll() { let text = box.value.replace(/\u200C/g, ''); let prob = severityInput.value * 0.2; let result = ""; for (let char of text) { let low = char.toLowerCase(); if (glyphData[low] && Math.random() < prob) { let v = glyphData[low]; result += v[Math.floor(Math.random() * v.length)]; } else { result += char; } } box.value = result; updateCounter(); showToast("OBFUSCATION"); } function ghostify() { box.value = Array.from(box.value.replace(/\u200C/g, '')).join(GHOST_CHAR); updateCounter(); showToast("GHOST MODE ACTIVE 👻"); } function flipText() { box.value = Array.from(box.value).reverse().map(c => flipMap[c] || c).join(''); updateCounter(); } function clearBox() { box.value = ""; updateCounter(); } function showToast(msg) { const t = document.createElement('div'); t.innerText = msg; t.style.cssText = `position:fixed; bottom:20%; left:50%; transform:translateX(-50%); background:var(--accent); color:#000; padding:10px 20px; border-radius:20px; font-weight:bold; font-size:12px; z-index:10001;`; document.body.appendChild(t); setTimeout(() => t.remove(), 1500); } function closeTutorial() { const tut = document.getElementById('tutorial'); tut.style.opacity = '0'; setTimeout(() => { tut.style.display = 'none'; localStorage.setItem('gliffy_done', 't'); }, 600); } function handleInput() { updateCounter(); if (document.getElementById('liveMode').checked) { scrambleAll(); } } function fillTray(letter) { const tray = document.getElementById('symbolTray'); tray.innerHTML = ''; if (glyphData[letter]) { glyphData[letter].forEach(g => { let btn = document.createElement('button'); btn.className = 'glyph-btn'; btn.innerText = g; btn.onclick = () => { box.value += g; updateCounter(); }; tray.appendChild(btn) }); } } function init() { const grid = document.getElementById('letterGrid'); Object.keys(glyphData).slice(0, 26).forEach(l => { let d = document.createElement('div'); d.className = 'letter-tab'; d.innerText = l.toUpperCase(); d.onclick = () => { document.querySelectorAll('.letter-tab').forEach(t => t.classList.remove('active')); d.classList.add('active'); fillTray(l); }; grid.appendChild(d); }); document.querySelector('.letter-tab')?.click(); } function share(p) { const enc = encodeURIComponent(box.value); if (p === 'whatsapp') window.open(`https://wa.me/?text=${enc}`); if (p === 'x') window.open(`https://x.com/intent/tweet?text=${enc}`); if (p === 'sms') window.open(`sms:?body=${enc}`); if (p === 'native') navigator.share({text: box.value}); }

© CC BY-NC-ND 4.0

Use Cases For

🃏😜FUN & WACKY TEXT: Just for fun! Gl!ffy utilizes homoglyphs found in Unicode and various Languages so your text will show up anywhere online that uses UTF-8⛓️💥 ANTI-SCRAPING: Automated bots look for strings like "buy," "bank," or specific brand names; replacing letters with ᗷ or д breaks that pattern recognition.SHADOW-BAN RESISTANCE: On some social platforms, certain words are suppressed; homoglyphs allow you to discuss topics without triggering the "automated filter" flags.👁️ VISUAL ENCRYPTION: It creates a "soft encryption" where the text remains human-readable but machine-unfriendly.👻 GHOST ENCRYPTION: hides invisible blocks throughout your text to foil keyword scraping bots.
*GhostMode is automatically enabled when you share.
This can use double the space of your original message which is why I've included a social media character counter above the input box

Gl!ffy how to

Created by ː ₿ߎᱴɳყ★Я૯᱄кꮭ୨ટ༦
˖⊹𓈒𝆬PROTECT YOUR SPEECHᛡ˳𝅦 ⊹˖
© CC BY-NC-ND 4.0

ɫɦㅂ꒖к ຯ⚆U!

Seriously! It's more than money, it's validation.
It's someone saying, I like what you're doing here.
And that means a lot!
❤︎ Thank you

ଓ𝈱ꫜꫜꪗ ܡᎧᝯ𐤊𑣥عᔑᔕ

Created by ₿𝈱ꫜꫜꪗ ܡᎧᝯ𐤊𑣥عᔑᔕ
( Ø ) ⁿ⁰₵ ₹ ¥ ₧ ₮ ¤