ToolPort

Sitemap.xml генератор

Онлайн-сервис для создания sitemap.xml: вставьте список URL, нажмите «Сгенерировать» и получите готовую карту сайта для быстрой индексации поисковыми системами.
Имя файла
Протокол
lastmod
changefreq
priority
Лимит
URL (по одному в строке)
URL: 0 · Valid: 0 · Files: 0
URL: ${f.count}

`; filesList.appendChild(row); }); filesList.querySelectorAll("button[data-act]").forEach(btn => { btn.addEventListener("click", () => { const act = btn.getAttribute("data-act"); const idx = Number(btn.getAttribute("data-idx")); const f = state.files[idx]; if (!f) return; if (act === "show"){ preview.textContent = f.xml; setTab("xml"); showToast("Показан: " + f.name); } else { downloadText(f.name, f.xml); } }); }); } function build(){ hideError(); const raw = (urlsTa.value || "").split(/\r?\n/).map(x => x.trim()).filter(Boolean); state = { xml:"", files:[], bad:[], input: raw.length, valid:0, dupes:0 }; if (raw.length === 0){ preview.textContent = "—"; downloadBtn.disabled = true; copyBtn.disabled = true; refreshStats(); badList.textContent = "—"; filesList.textContent = "—"; showError("Вставьте хотя бы один URL."); return; } let lastmod = ""; if (lastmodMode.value === "today") lastmod = todayIso(); if (lastmodMode.value === "custom"){ const lm = (lastmodCustom.value || "").trim(); if (!isValidIsoDate(lm)){ showError("lastmod должен быть YYYY-MM-DD (например 2025-12-26)."); return; } lastmod = lm; } const opts = { lastmod, changefreq: changefreq.value || "", priority: priority.value || "" }; const good = []; const seen = new Set(); raw.forEach(line => { const r = normalizeUrl(line); if (!r.ok){ state.bad.push(line); return; } if (dedup.checked){ if (seen.has(r.value)){ state.dupes++; return; } seen.add(r.value); } good.push(r.value); }); state.valid = good.length; if (good.length === 0){ preview.textContent = "—"; downloadBtn.disabled = true; copyBtn.disabled = true; refreshStats(); refreshBad(); refreshFiles(); showError("Нет валидных URL. Проверьте формат."); setTab("bad"); return; } const chunk = Math.max(1, Number(chunkSize.value || 50000)); const baseName = (filename.value || "sitemap.xml").trim() || "sitemap.xml"; const base = baseName.toLowerCase().endsWith(".xml") ? baseName.slice(0,-4) : baseName; const files = []; for (let i=0; i { urlsTa.value = `example.com https://example.com/ https://example.com/catalog?utm_source=ads&utm_medium=cpc https://example.com/blog/post-1 not-a-url`; build(); }); downloadBtn.addEventListener("click", () => { if (!state.files.length) return; downloadText(state.files[0].name, state.files[0].xml); if (state.files.length > 1) showToast("Скачан 1-й файл. Остальные — во вкладке «Файлы»."); }); copyBtn.addEventListener("click", async () => { if (!state.xml) return; try{ await navigator.clipboard.writeText(state.xml); showToast("Скопировано ✅"); }catch(e){ try{ const ta = document.createElement("textarea"); ta.value = state.xml; ta.style.position = "fixed"; ta.style.left = "-9999px"; document.body.appendChild(ta); ta.select(); document.execCommand("copy"); ta.remove(); showToast("Скопировано ✅"); }catch(_){ showToast("Скопируйте вручную из окна XML"); } } }); lastmodMode.addEventListener("change", () => { lastmodCustomWrap.style.display = (lastmodMode.value === "custom") ? "block" : "none"; }); urlsTa.addEventListener("input", () => { try{ localStorage.setItem("s3_urls", urlsTa.value); }catch(e){} }); try{ const saved = localStorage.getItem("s3_urls"); if (saved) urlsTa.value = saved; }catch(e){} refreshStats(); setTab("xml"); })();

💡 Генератор Sitemap-xml
онлайн-инструмент для быстрого создания корректной карты сайта без программирования и сложных настроек. Сервис автоматически обрабатывает список URL, удаляет дубликаты и UTM-метки, формирует валидный sitemap.xml и помогает подготовить сайт к индексации в поисковых системах. Подходит для SEO-специалистов, веб-разработчиков, владельцев сайтов и маркетологов.

IT и SEO