یک مجموعه کامل از تگ‌های HTML متا برای سئو بسازید — عنوان، توضیحات، robots، canonical، viewport و بیشتر — با پیش‌نمایش زنده Google. رایگان، در مرورگر شما.

همه چیز در مرورگر شما اجرا می‌شود — چیزی بارگذاری نمی‌شود. فرم را پر کنید و تگ‌های تولیدشده را در <head> صفحه خود کپی کنید.

جزئیات صفحه
برای :lo–:hi نویسه هدف بگیرید تا در نتایج جستجو بریده نشود.
برای بهترین قطعه، :lo–:hi نویسه هدف بگیرید.
پیش‌نمایش نتیجه جستجو

رنگ پوسته
تگ‌های تولیدشده

اشتراک‌گذاری
به کمک نیاز دارید؟
با این ابزار مشکلی پیدا کردید؟ به تیم ما اطلاع دهید.
گزارش مشکل

این ابزار رایگان را به وب‌سایت خود اضافه کنید — کد زیر را کپی و جای‌گذاری کنید.

\n\n'; } let lastCode = ''; function render() { const v = values(); applyCounter('title', v.title.length, 50, 60); applyCounter('description', v.description.length, 120, 160); renderSerp(v); lastCode = buildCode(v); codeEl.textContent = lastCode; /* textContent = no XSS */ } /* ----- copy / download ----- */ async function copy(text) { if (!text) { if (window.showToast) window.showToast('warning', T.nothing); return; } try { await navigator.clipboard.writeText(text); } catch (e) { try { const tmp = document.createElement('textarea'); tmp.value = text; document.body.appendChild(tmp); tmp.select(); document.execCommand('copy'); tmp.remove(); } catch (e2) { if (window.showToast) window.showToast('error', T.copy_failed); return; } } if (window.showToast) window.showToast('success', T.copied); } function download() { const v = values(); if (!lastCode) { if (window.showToast) window.showToast('warning', T.nothing); return; } const blob = new Blob([buildDocument(v)], { type: 'text/html;charset=utf-8' }); const a = document.createElement('a'); a.href = URL.createObjectURL(blob); a.download = 'meta-tags.html'; document.body.appendChild(a); a.click(); setTimeout(() => { URL.revokeObjectURL(a.href); a.remove(); }, 0); if (window.showToast) window.showToast('success', T.downloaded); } /* ----- events ----- */ Object.values(inputs).forEach(el => { el.addEventListener('input', render); el.addEventListener('change', render); }); /* keep color picker and text input in sync */ inputs.themeColor.addEventListener('input', () => { if (inputs.themeColorText) inputs.themeColorText.value = inputs.themeColor.value; }); if (inputs.themeColorText) { inputs.themeColorText.addEventListener('input', () => { const val = inputs.themeColorText.value.trim(); if (/^#[0-9a-fA-F]{6}$/.test(val)) inputs.themeColor.value = val; render(); }); } root.querySelector('[data-mtg-copy]').addEventListener('click', () => copy(lastCode)); root.querySelector('[data-mtg-download]').addEventListener('click', download); root.querySelector('[data-mtg-sample]').addEventListener('click', () => { inputs.title.value = T.sample.title; inputs.description.value = T.sample.desc; inputs.keywords.value = T.sample.keywords; inputs.author.value = T.sample.author; inputs.canonical.value = T.sample.canonical; inputs.lang.value = 'en'; inputs.robotsIndex.value = 'index'; inputs.robotsFollow.value = 'follow'; inputs.viewport.checked = true; inputs.charset.checked = true; inputs.themeColor.value = '#0d6efd'; if (inputs.themeColorText) inputs.themeColorText.value = '#0d6efd'; render(); }); root.querySelector('[data-mtg-reset]').addEventListener('click', () => { ['title', 'description', 'keywords', 'author', 'lang', 'canonical'].forEach(k => { inputs[k].value = ''; }); inputs.robotsIndex.value = 'index'; inputs.robotsFollow.value = 'follow'; inputs.viewport.checked = true; inputs.charset.checked = true; inputs.themeColor.value = '#0d6efd'; if (inputs.themeColorText) inputs.themeColorText.value = '#0d6efd'; render(); }); /* init text mirror for color */ if (inputs.themeColorText) inputs.themeColorText.value = inputs.themeColor.value; render(); })();