{"id":49,"date":"2026-06-25T07:39:20","date_gmt":"2026-06-25T07:39:20","guid":{"rendered":"https:\/\/toolskit.site\/index.php\/robots-txt-generator\/"},"modified":"2026-06-25T07:39:20","modified_gmt":"2026-06-25T07:39:20","slug":"robots-txt-generator","status":"publish","type":"page","link":"https:\/\/toolskit.site\/index.php\/robots-txt-generator\/","title":{"rendered":"Robots.txt Generator"},"content":{"rendered":"<div class=\"hth-single-tool-shell\" style=\"--hth-color:#b026ff\">\n<div id=\"rtg-wrapper\">\n<style>\n    #rtg-wrapper * { box-sizing: border-box; margin: 0; padding: 0; font-family: system-ui, -apple-system, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif; }\n    #rtg-wrapper { background: radial-gradient(circle at 70% 80%, #1a1a2e 0%, #0f0f1a 40%, #05050a 100%); color: #e0e0e0; padding: 24px; border-radius: 16px; border: 1px solid rgba(176, 38, 255, 0.15); box-shadow: 0 0 30px rgba(176, 38, 255, 0.05), inset 0 0 60px rgba(0,0,0,0.3); position: relative; overflow: hidden; max-width: 1200px; margin: 0 auto; }\n    #rtg-wrapper::before { content: \"\"; position: absolute; top: -50%; left: -50%; width: 200%; height: 200%; background: conic-gradient(from 180deg, transparent, rgba(176, 38, 255, 0.03), transparent, rgba(0, 245, 255, 0.03), transparent); animation: rtg-rotate 15s linear infinite; z-index: 0; }\n    @keyframes rtg-rotate { 100% { transform: rotate(360deg); } }\n    #rtg-wrapper .rtg-content { position: relative; z-index: 1; }\n    #rtg-wrapper .rtg-header { text-align: center; margin-bottom: 24px; }\n    #rtg-wrapper .rtg-title { font-size: 28px; font-weight: 800; background: linear-gradient(90deg, #b026ff, #00f5ff); -webkit-background-clip: text; -webkit-text-fill-color: transparent; margin-bottom: 8px; }\n    #rtg-wrapper .rtg-subtitle { color: #888; font-size: 14px; }\n    #rtg-wrapper .rtg-grid { display: grid; grid-template-columns: 1.2fr 1fr; gap: 24px; }\n    @media (max-width: 900px) { #rtg-wrapper .rtg-grid { grid-template-columns: 1fr; } }\n    #rtg-wrapper .rtg-panel { background: #0a0a12; border: 1px solid #222; border-radius: 12px; padding: 20px; }\n    #rtg-wrapper .rtg-panel-title { font-size: 16px; color: #b026ff; margin-bottom: 16px; font-weight: 700; display: flex; align-items: center; gap: 8px; }\n    #rtg-wrapper .rtg-templates { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 20px; }\n    #rtg-wrapper .rtg-tmpl-btn { padding: 8px 14px; background: #12121a; border: 1px solid #333; border-radius: 20px; color: #aaa; font-size: 12px; font-weight: 600; cursor: pointer; transition: all 0.2s; }\n    #rtg-wrapper .rtg-tmpl-btn:hover { border-color: #b026ff; color: #b026ff; }\n    #rtg-wrapper .rtg-rule { background: #12121a; border: 1px solid #2a2a35; border-radius: 10px; padding: 14px; margin-bottom: 12px; position: relative; transition: all 0.2s; }\n    #rtg-wrapper .rtg-rule:hover { border-color: #444; }\n    #rtg-wrapper .rtg-rule-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; }\n    #rtg-wrapper .rtg-rule-title { font-size: 13px; color: #00f5ff; font-weight: 700; }\n    #rtg-wrapper .rtg-rule-actions { display: flex; gap: 6px; }\n    #rtg-wrapper .rtg-icon-btn { background: transparent; border: 1px solid #333; color: #888; width: 28px; height: 28px; border-radius: 6px; cursor: pointer; display: flex; align-items: center; justify-content: center; font-size: 14px; transition: all 0.2s; }\n    #rtg-wrapper .rtg-icon-btn:hover { border-color: #ff4444; color: #ff4444; }\n    #rtg-wrapper .rtg-icon-btn.up:hover, #rtg-wrapper .rtg-icon-btn.down:hover { border-color: #00f5ff; color: #00f5ff; }\n    #rtg-wrapper .rtg-input-row { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 8px; }\n    @media (max-width: 600px) { #rtg-wrapper .rtg-input-row { grid-template-columns: 1fr; } }\n    #rtg-wrapper .rtg-input { width: 100%; background: #05050a; border: 1px solid #333; border-radius: 6px; padding: 8px 12px; color: #fff; font-size: 13px; outline: none; transition: border-color 0.3s; }\n    #rtg-wrapper .rtg-input:focus { border-color: #b026ff; }\n    #rtg-wrapper .rtg-add-btn { width: 100%; padding: 12px; background: linear-gradient(135deg, #b026ff22, #00f5ff22); border: 1px dashed #b026ff55; border-radius: 10px; color: #b026ff; font-size: 14px; font-weight: 600; cursor: pointer; transition: all 0.2s; margin-top: 10px; }\n    #rtg-wrapper .rtg-add-btn:hover { background: linear-gradient(135deg, #b026ff44, #00f5ff44); }\n    #rtg-wrapper .rtg-sitemap-field { margin-top: 20px; padding-top: 20px; border-top: 1px solid #222; }\n    #rtg-wrapper .rtg-preview-area { background: #05050a; border: 1px solid #222; border-radius: 8px; padding: 16px; font-family: monospace; font-size: 13px; color: #00ff88; white-space: pre-wrap; word-break: break-all; min-height: 300px; max-height: 500px; overflow-y: auto; line-height: 1.6; }\n    #rtg-wrapper .rtg-preview-area .rtg-warn { color: #ffaa00; }\n    #rtg-wrapper .rtg-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 20px; justify-content: center; }\n    #rtg-wrapper .rtg-btn { padding: 10px 18px; border-radius: 8px; border: 1px solid #333; background: #12121a; color: #ccc; font-size: 14px; font-weight: 600; cursor: pointer; transition: all 0.2s; display: flex; align-items: center; gap: 6px; }\n    #rtg-wrapper .rtg-btn:hover { background: #1a1a2e; border-color: #b026ff; color: #b026ff; transform: translateY(-2px); }\n    #rtg-wrapper .rtg-btn-primary { background: linear-gradient(135deg, #b026ff22, #00f5ff22); border-color: #b026ff55; color: #b026ff; }\n    #rtg-wrapper .rtg-toast { position: fixed; bottom: 30px; left: 50%; transform: translateX(-50%) translateY(100px); background: #b026ff; color: #fff; padding: 12px 24px; border-radius: 8px; font-weight: 700; font-size: 14px; z-index: 9999; transition: transform 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275); pointer-events: none; }\n    #rtg-wrapper .rtg-toast.show { transform: translateX(-50%) translateY(0); }\n  <\/style>\n<div class=\"rtg-content\">\n<div class=\"rtg-header\">\n<h2 class=\"rtg-title\">&#x1F916; Robots.txt Generator<\/h2>\n<p class=\"rtg-subtitle\">Create a perfect robots.txt file for your website with live validation<\/p>\n<\/p><\/div>\n<div class=\"rtg-grid\">\n<div class=\"rtg-panel\">\n<div class=\"rtg-panel-title\">&#x26A1; Quick Templates<\/div>\n<div class=\"rtg-templates\">\n          <button class=\"rtg-tmpl-btn\" data-tmpl=\"wp\">WordPress<\/button><br \/>\n          <button class=\"rtg-tmpl-btn\" data-tmpl=\"block\">Block All<\/button><br \/>\n          <button class=\"rtg-tmpl-btn\" data-tmpl=\"allow\">Allow All<\/button><br \/>\n          <button class=\"rtg-tmpl-btn\" data-tmpl=\"clear\">Clear All<\/button>\n        <\/div>\n<div class=\"rtg-panel-title\">&#x1F6E0; Rule Builder<\/div>\n<div id=\"rtg-rules-container\"><\/div>\n<p>        <button class=\"rtg-add-btn\" id=\"rtg-add-rule\">+ Add New Rule Group<\/button><\/p>\n<div class=\"rtg-sitemap-field\">\n<div class=\"rtg-panel-title\">&#x1F5FA; Sitemap URL<\/div>\n<p>          <input type=\"text\" class=\"rtg-input\" id=\"rtg-sitemap\" placeholder=\"https:\/\/example.com\/sitemap.xml\">\n        <\/div>\n<\/p><\/div>\n<div class=\"rtg-panel\">\n<div class=\"rtg-panel-title\">&#x1F4C4; Live Preview &#038; Validation<\/div>\n<div class=\"rtg-preview-area\" id=\"rtg-preview\"><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"rtg-actions\">\n      <button class=\"rtg-btn rtg-btn-primary\" id=\"rtg-copy\">&#x1F4CB; Copy Code<\/button><br \/>\n      <button class=\"rtg-btn\" id=\"rtg-download\">&#x1F4BE; Download robots.txt<\/button>\n    <\/div>\n<\/p><\/div>\n<div class=\"rtg-toast\" id=\"rtg-toast\">Copied!<\/div>\n<p>  <script>\n    (function() {\n      const container = document.getElementById('rtg-rules-container');\n      const preview = document.getElementById('rtg-preview');\n      const sitemapInput = document.getElementById('rtg-sitemap');\n      const toast = document.getElementById('rtg-toast');\n      let ruleId = 0;<\/p>\n<p>      function addRule(ua = '*', allow = '', disallow = '') {\n        const id = ++ruleId;\n        const div = document.createElement('div');\n        div.className = 'rtg-rule';\n        div.dataset.id = id;\n        div.innerHTML = `<\/p>\n<div class=\"rtg-rule-header\">\n            <span class=\"rtg-rule-title\">Rule Group #${id}<\/span><\/p>\n<div class=\"rtg-rule-actions\">\n              <button class=\"rtg-icon-btn up\" title=\"Move Up\">&#x2191;<\/button>\n              <button class=\"rtg-icon-btn down\" title=\"Move Down\">&#x2193;<\/button>\n              <button class=\"rtg-icon-btn del\" title=\"Delete\">&#x1F5D1;<\/button>\n            <\/div>\n<\/p><\/div>\n<div class=\"rtg-input-row\">\n            <input type=\"text\" class=\"rtg-input rtg-ua\" placeholder=\"User-agent (e.g., *)\" value=\"${ua}\">\n            <input type=\"text\" class=\"rtg-input rtg-allow\" placeholder=\"Allow (e.g., \/wp-content\/)\" value=\"${allow}\">\n          <\/div>\n<p>          <input type=\"text\" class=\"rtg-input rtg-disallow\" placeholder=\"Disallow (e.g., \/wp-admin\/)\" value=\"${disallow}\" style=\"margin-top:8px;\">\n        `;\n        container.appendChild(div);<\/p>\n<p>        div.querySelector('.del').addEventListener('click', () => { div.remove(); updatePreview(); });\n        div.querySelector('.up').addEventListener('click', () => { if(div.previousElementSibling) container.insertBefore(div, div.previousElementSibling); updatePreview(); });\n        div.querySelector('.down').addEventListener('click', () => { if(div.nextElementSibling) container.insertBefore(div.nextElementSibling, div); updatePreview(); });<\/p>\n<p>        div.querySelectorAll('.rtg-input').forEach(inp => inp.addEventListener('input', updatePreview));\n        updatePreview();\n      }<\/p>\n<p>      function updatePreview() {\n        let text = '';\n        const rules = container.querySelectorAll('.rtg-rule');\n        rules.forEach(rule => {\n          const ua = rule.querySelector('.rtg-ua').value.trim() || '*';\n          const allow = rule.querySelector('.rtg-allow').value.trim();\n          const disallow = rule.querySelector('.rtg-disallow').value.trim();<\/p>\n<p>          text += `User-agent: ${ua}n`;\n          if (allow) text += `Allow: ${allow}n`;\n          if (disallow) text += `Disallow: ${disallow}n`;\n          if (!allow && !disallow) text += `<span class=\"rtg-warn\"># Warning: No Allow\/Disallow rules defined<\/span>n`;\n          text += `n`;\n        });<\/p>\n<p>        const sitemap = sitemapInput.value.trim();\n        if (sitemap) text += `Sitemap: ${sitemap}n`;<\/p>\n<p>        preview.innerHTML = text || '<span class=\"rtg-warn\">Add rules to see preview...<\/span>';\n      }<\/p>\n<p>      function showToast(msg) { toast.textContent = msg; toast.classList.add('show'); setTimeout(() => toast.classList.remove('show'), 2000); }\n      function copyText(text) { navigator.clipboard.writeText(text).then(() => showToast('Copied! u{2705}')).catch(() => { const ta = document.createElement('textarea'); ta.value = text; document.body.appendChild(ta); ta.select(); document.execCommand('copy'); document.body.removeChild(ta); showToast('Copied! u{2705}'); }); }<\/p>\n<p>      document.getElementById('rtg-add-rule').addEventListener('click', () => addRule());\n      sitemapInput.addEventListener('input', updatePreview);<\/p>\n<p>      document.querySelectorAll('.rtg-tmpl-btn').forEach(btn => {\n        btn.addEventListener('click', () => {\n          container.innerHTML = '';\n          const tmpl = btn.dataset.tmpl;\n          if (tmpl === 'wp') {\n            addRule('*', '\/wp-admin\/', '\/wp-admin\/admin-ajax.php');\n            addRule('*', '', '\/wp-content\/uploads\/');\n          } else if (tmpl === 'block') {\n            addRule('*', '', '\/');\n          } else if (tmpl === 'allow') {\n            addRule('*', '\/', '');\n          } else {\n            addRule();\n          }\n          updatePreview();\n        });\n      });<\/p>\n<p>      document.getElementById('rtg-copy').addEventListener('click', () => copyText(preview.innerText));\n      document.getElementById('rtg-download').addEventListener('click', () => {\n        const blob = new Blob([preview.innerText], { type: 'text\/plain' });\n        const a = document.createElement('a'); a.href = URL.createObjectURL(blob); a.download = 'robots.txt'; a.click();\n      });<\/p>\n<p>      addRule('*', '', '\/wp-admin\/');\n      updatePreview();\n    })();\n  <\/script>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Create a perfect robots.txt file for your website with live validation and templates.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-49","page","type-page","status-publish"],"_links":{"self":[{"href":"https:\/\/toolskit.site\/index.php\/wp-json\/wp\/v2\/pages\/49","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/toolskit.site\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/toolskit.site\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/toolskit.site\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/toolskit.site\/index.php\/wp-json\/wp\/v2\/comments?post=49"}],"version-history":[{"count":0,"href":"https:\/\/toolskit.site\/index.php\/wp-json\/wp\/v2\/pages\/49\/revisions"}],"wp:attachment":[{"href":"https:\/\/toolskit.site\/index.php\/wp-json\/wp\/v2\/media?parent=49"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}