{"id":589,"date":"2026-03-11T16:34:02","date_gmt":"2026-03-11T16:34:02","guid":{"rendered":"https:\/\/primetoolhub.com\/?page_id=589"},"modified":"2026-10-04T15:20:58","modified_gmt":"2026-10-04T15:20:58","slug":"free-web-tools-directory","status":"publish","type":"page","link":"https:\/\/schoolict.net\/tools\/free-web-tools-directory\/","title":{"rendered":"Free Web Tools Directory (Prime Tool Hub)"},"content":{"rendered":"\n<style>\n.pth-intro-band{max-width:1480px;margin:0 auto 45px;padding:0 20px;box-sizing:border-box;font-family:'Inter',system-ui,sans-serif}\n.pth-intro-band *{box-sizing:border-box;min-width:0}\n\n.pth-intro-lead{\n  background:linear-gradient(180deg,#f8fafc 0%,#ffffff 100%);\n  border:1px solid #e2e8f0;border-left:5px solid #2563eb;\n  border-radius:14px;padding:28px 30px;margin-bottom:22px;\n}\n.pth-intro-badge{\n  display:inline-flex;align-items:center;gap:7px;background:#eff6ff;color:#1d4ed8;\n  font-size:12px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;\n  padding:6px 12px;border-radius:20px;border:1px solid #bfdbfe;margin-bottom:14px;\n}\n.pth-intro-lead p{color:#1e293b;font-weight:500;font-size:1.05rem;line-height:1.7;margin:0}\n.pth-intro-lead strong{color:#0f172a;font-weight:800}\n\n.pth-intro-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:18px}\n.pth-intro-card{\n  background:#ffffff;border:1px solid #e2e8f0;border-radius:14px;padding:22px 22px 20px;\n  box-shadow:0 4px 6px -1px rgba(0,0,0,.02);transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease;\n}\n.pth-intro-card:hover{transform:translateY(-4px);border-color:#bfdbfe;box-shadow:0 12px 22px -8px rgba(37,99,235,.18)}\n.pth-intro-icon{\n  width:44px;height:44px;border-radius:12px;background:#eff6ff;border:1px solid #bfdbfe;\n  display:flex;align-items:center;justify-content:center;font-size:21px;margin-bottom:14px;\n}\n.pth-intro-card h3{font-size:1.02rem;font-weight:800;color:#0f172a;margin:0 0 8px;line-height:1.35}\n.pth-intro-card p{font-size:.93rem;color:#1e293b;font-weight:500;line-height:1.62;margin:0}\n.pth-intro-card code{\n  background:#f1f5f9;border:1px solid #e2e8f0;border-radius:5px;padding:1px 6px;\n  font-size:.85rem;color:#1d4ed8;font-weight:700;font-family:ui-monospace,monospace;\n}\n.pth-intro-card.pth-green .pth-intro-icon{background:#ecfdf5;border-color:#a7f3d0}\n.pth-intro-card.pth-green:hover{border-color:#a7f3d0;box-shadow:0 12px 22px -8px rgba(5,150,105,.16)}\n.pth-intro-card.pth-amber .pth-intro-icon{background:#fffbeb;border-color:#fde68a}\n.pth-intro-card.pth-amber:hover{border-color:#fde68a;box-shadow:0 12px 22px -8px rgba(146,64,14,.16)}\n\n@media(max-width:768px){\n  .pth-intro-band{padding:0 10px;margin-bottom:32px}\n  .pth-intro-lead{padding:22px 20px;border-radius:12px}\n  .pth-intro-lead p{font-size:1rem}\n}\n<\/style>\n\n<div class=\"pth-intro-band\">\n\n  <div class=\"pth-intro-lead\">\n    <span class=\"pth-intro-badge\"><span aria-hidden=\"true\">\ud83d\udd12<\/span> No signup \u00b7 No uploads<\/span>\n    <p>Every tool listed below runs inside your browser tab. Nothing you type, paste, or drop into them travels to a server, and none of them ask you to create an account first. Pick a card, hit <strong>Open<\/strong>, and the tool loads on its own page.<\/p>\n  <\/div>\n\n  <div class=\"pth-intro-grid\">\n\n    <div class=\"pth-intro-card\">\n      <div class=\"pth-intro-icon\" aria-hidden=\"true\">\ud83d\udd0d<\/div>\n      <h3>Search What It Does, Not What It&#8217;s Called<\/h3>\n      <p>The search box reads the feature lines on every card, not just the titles. Try <code>Verilog<\/code>, <code>EXIF<\/code>, or <code>UTF-8<\/code> \u2014 the right tool appears even though none of those words are in its name.<\/p>\n    <\/div>\n\n    <div class=\"pth-intro-card pth-green\">\n      <div class=\"pth-intro-icon\" aria-hidden=\"true\">\ud83d\udcc2<\/div>\n      <h3>Filter Down by Category<\/h3>\n      <p>Thirteen category pills group the tools by what they touch: image, video, audio, developer, PDF, electronics and more. On a phone, open <strong>Filter by Category<\/strong> first, then pick one.<\/p>\n    <\/div>\n\n    <div class=\"pth-intro-card pth-amber\">\n      <div class=\"pth-intro-icon\" aria-hidden=\"true\">\u2b50<\/div>\n      <h3>Pin Up To 12 Favourites<\/h3>\n      <p>Hit <strong>Save<\/strong> on any card and it lands in your quick-access list at the top of the site. Favourites are stored in this browser only \u2014 nothing is uploaded, nothing is tracked.<\/p>\n    <\/div>\n\n  <\/div>\n\n<\/div>\n\n\n<style>\r\n\/* ==========================================================\r\n   PTH DIRECTORY \u2014 v2.0 (WCAG AA + Zero CLS)\r\n   ========================================================== *\/\r\n\r\n\/* \ud83d\udd34 FAVOURITE \/ OPEN BUTTON STYLES \ud83d\udd34 *\/\r\nspan.pth-card-fav-btn {\r\n    background: #f8fafc !important; border: 1px solid #e2e8f0 !important; border-radius: 8px !important;\r\n    font-size: 13px !important; color: #334155 !important; cursor: pointer !important; font-weight: 700 !important;\r\n    transition: all 0.2s !important; display: inline-flex !important; align-items: center !important; justify-content: center !important;\r\n    gap: 6px !important; height: 35px !important; padding: 0 16px !important; box-sizing: border-box !important; margin: 0 !important;\r\n}\r\nspan.pth-card-fav-btn:hover { background: #eff6ff !important; color: #1d4ed8 !important; border-color: #bfdbfe !important; }\r\nspan.pth-card-fav-btn.is-fav { background: #fffbeb !important; color: #92400e !important; border-color: #fde68a !important; }\r\nspan.pth-card-fav-btn.is-fav:hover { background: #fef3c7 !important; color: #78350f !important; border-color: #fcd34d !important; }\r\n\r\n.pth-btn-open {\r\n    height: 35px !important; display: inline-flex !important; align-items: center !important; justify-content: center !important;\r\n    box-sizing: border-box !important; margin: 0 !important;\r\n}\r\n\r\n\/* \ud83d\udd34 THEME UNLOCKER \ud83d\udd34 *\/\r\n.site.grid-container, #page.site, .site-content, #content, #primary, main.site-main, .inside-article, .entry-content {\r\n    max-width: 100% !important; width: 100% !important; padding: 0 20px !important; margin: 0 auto !important; border: none !important; box-shadow: none !important;\r\n}\r\n\r\n\/* \ud83d\udd34 DIRECTORY STYLES \ud83d\udd34 *\/\r\n#pth-directory-wrapper {\r\n    --pth-primary: #2563eb; --pth-primary-hover: #1d4ed8;\r\n    --pth-bg: #f8fafc; --pth-surface: #ffffff;\r\n    --pth-text-main: #0f172a; --pth-text-muted: #334155;\r\n    --pth-border: #e2e8f0; --pth-radius: 12px;\r\n    --pth-tag-bg: #eff6ff; --pth-tag-text: #1d4ed8;\r\n\r\n    width: 100%; max-width: 1480px !important; margin: 40px auto !important;\r\n    font-family: 'Inter', system-ui, sans-serif; color: var(--pth-text-main); box-sizing: border-box;\r\n}\r\n#pth-directory-wrapper * { box-sizing: border-box; min-width: 0; }\r\n\r\n.pth-dir-header { text-align: center; margin-bottom: 30px; }\r\n.pth-dir-title { font-size: 32px; font-weight: 800; color: var(--pth-text-main); margin-bottom: 10px; }\r\n.pth-dir-subtitle { font-size: 16px; color: var(--pth-text-muted); margin-bottom: 25px; }\r\n\r\n.pth-search-bar { max-width: 600px; margin: 0 auto 30px auto; position: relative; }\r\n.pth-search-input { width: 100% !important; padding: 16px 20px 16px 55px !important; background: #ffffff !important; font-size: 16px !important; border: 2px solid var(--pth-border) !important; border-radius: 30px !important; outline: none !important; transition: all 0.3s !important; box-shadow: 0 4px 6px -1px rgba(0,0,0,0.05) !important; font-family: 'Inter', sans-serif !important; line-height: normal !important; }\r\n.pth-search-input:focus { border-color: var(--pth-primary) !important; box-shadow: 0 0 0 4px rgba(37,99,235,0.12) !important; }\r\n.pth-search-icon { position: absolute !important; left: 20px !important; top: 50% !important; transform: translateY(-50%) !important; font-size: 18px !important; color: var(--pth-text-muted) !important; pointer-events: none !important; line-height: 1 !important; z-index: 5 !important; }\r\n\r\n\/* \ud83d\udd34 FILTERS + MOBILE COLLAPSE \ud83d\udd34 *\/\r\n.pth-filter-wrapper { width: 100%; margin-bottom: 40px; }\r\n.pth-filter-scroll { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; }\r\n.pth-filter-btn { padding: 10px 20px; background: var(--pth-surface); border: 1px solid var(--pth-border); border-radius: 20px; font-size: 14px; font-weight: 700; color: var(--pth-text-muted); cursor: pointer; transition: all 0.2s; display: inline-flex; align-items: center; gap: 6px; box-shadow: 0 2px 4px rgba(0,0,0,0.02); }\r\n.pth-filter-btn:hover { border-color: var(--pth-primary); color: #1d4ed8; }\r\n.pth-filter-btn.active { background: var(--pth-primary); border-color: var(--pth-primary); color: #ffffff; }\r\n\r\n.pth-dir-mobile-toggle { display: none; }\r\n\r\n@media (max-width: 991px) {\r\n    .pth-dir-mobile-toggle {\r\n        display: flex; justify-content: space-between; align-items: center;\r\n        background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 12px;\r\n        padding: 15px 20px; font-size: 15px; font-weight: 800; color: #0f172a;\r\n        cursor: pointer; margin-bottom: 15px; box-shadow: 0 4px 6px rgba(0,0,0,0.02);\r\n    }\r\n    .pth-dir-mobile-toggle .pth-arrow { transition: transform 0.3s; color: #334155; font-size: 12px; }\r\n    .pth-dir-mobile-toggle.pth-open .pth-arrow { transform: rotate(180deg); }\r\n\r\n    .pth-filter-scroll {\r\n        display: none; flex-direction: column; background: #ffffff;\r\n        border: 1px solid #e2e8f0; border-radius: 12px; padding: 15px; gap: 8px;\r\n        box-shadow: 0 10px 25px rgba(0,0,0,0.05);\r\n    }\r\n    .pth-filter-scroll.pth-open { display: flex; }\r\n    .pth-filter-btn { width: 100%; justify-content: flex-start; border-radius: 8px; padding: 12px 15px; }\r\n}\r\n\r\n\/* \ud83d\udd34 GRID + CARDS \ud83d\udd34 *\/\r\n.pth-dir-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); gap: 25px; }\r\n\r\n.pth-tool-card { background: var(--pth-surface); border: 1px solid var(--pth-border); border-radius: 16px; padding: 25px; display: flex; flex-direction: column; transition: all 0.3s ease; text-decoration: none; position: relative; overflow: hidden; }\r\n.pth-tool-card:hover { transform: translateY(-5px); box-shadow: 0 15px 30px -5px rgba(0,0,0,0.1); border-color: #cbd5e1; }\r\n.pth-tool-card::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 4px; background: var(--pth-primary); opacity: 0; transition: opacity 0.3s; }\r\n.pth-tool-card:hover::before { opacity: 1; }\r\n\r\n.pth-snippet-no { position: absolute; top: 20px; right: 20px; width: 32px; height: 32px; background: #f8fafc; color: #334155; border: 2px solid #e2e8f0; border-radius: 50%; display: flex; justify-content: center; align-items: center; font-size: 12px; font-weight: 800; z-index: 2; transition: all 0.3s ease; font-family: monospace; }\r\n.pth-tool-card:hover .pth-snippet-no { border-color: var(--pth-primary); color: var(--pth-primary); background: #eff6ff; }\r\n\r\n.pth-card-header { display: flex; align-items: center; gap: 15px; margin-bottom: 15px; padding-right: 35px; }\r\n.pth-card-icon { font-size: 32px; background: var(--pth-bg); width: 60px; height: 60px; display: flex; align-items: center; justify-content: center; border-radius: 12px; border: 1px solid var(--pth-border); flex-shrink: 0; }\r\n.pth-card-title { font-size: 18px; font-weight: 800; color: var(--pth-text-main); margin: 0; line-height: 1.3; }\r\n.pth-card-desc { font-size: 14px; color: var(--pth-text-muted); line-height: 1.5; margin-bottom: 20px; flex-grow: 1; }\r\n\r\n.pth-card-features { margin: 0 0 20px 0; padding: 0; list-style: none; border-top: 1px dashed var(--pth-border); padding-top: 15px; }\r\n.pth-card-features li { font-size: 13px; color: #334155; margin-bottom: 8px; display: flex; align-items: flex-start; gap: 8px; font-weight: 500; }\r\n.pth-card-features li::before { content: '\\2714\\FE0F'; font-size: 12px; }\r\n\r\n.pth-card-footer { display: flex; justify-content: space-between; align-items: center; margin-top: auto; }\r\n.pth-cat-tags { display: flex; gap: 5px; flex-wrap: wrap; }\r\n.pth-tag { font-size: 11px; font-weight: 700; padding: 4px 8px; background: var(--pth-tag-bg); color: var(--pth-tag-text); border-radius: 6px; text-transform: uppercase; letter-spacing: 0.5px; }\r\n.pth-btn-open { background: var(--pth-primary); color: #ffffff; padding: 8px 16px; border-radius: 8px; font-size: 13px; font-weight: 700; text-decoration: none; transition: background 0.2s; }\r\n.pth-btn-open:hover { background: var(--pth-primary-hover); }\r\n\r\n\/* \ud83d\udd34 PAGINATION \ud83d\udd34 *\/\r\n.pth-pagination-wrapper { margin-top: 40px; padding-top: 20px; border-top: 1px dashed #e2e8f0; display: flex; justify-content: center; align-items: center; width: 100%; grid-column: 1 \/ -1; }\r\n.pth-pagination-container { display: flex; gap: 8px; flex-wrap: wrap; justify-content: center; }\r\n.pth-page-btn { display: inline-flex; justify-content: center; align-items: center; min-width: 40px; height: 40px; padding: 0 14px; background: #ffffff; border: 1px solid #cbd5e1; border-radius: 8px; font-size: 1rem; font-weight: 600; color: #334155; cursor: pointer; transition: all 0.2s ease; }\r\n.pth-page-btn:hover:not(:disabled) { border-color: var(--pth-primary); color: var(--pth-primary); background: #eff6ff; transform: translateY(-2px); box-shadow: 0 4px 6px -1px rgba(37, 99, 235, 0.1); }\r\n.pth-page-btn.active { background: var(--pth-primary); color: #ffffff; border-color: var(--pth-primary); box-shadow: 0 4px 6px -1px rgba(37, 99, 235, 0.3); }\r\n.pth-page-btn:disabled { opacity: 0.5; cursor: not-allowed; background: #f8fafc; }\r\n\r\n\/* =========================================================\r\n   MATCH DIRECTORY CARD TITLE & ICON WITH HOME PAGE\r\n   ========================================================= *\/\r\n#pth-dir-grid .pth-card-top-header {\r\n    display: flex !important;\r\n    flex-direction: row !important;\r\n    align-items: center !important;\r\n    margin-bottom: 16px !important;\r\n}\r\n#pth-dir-grid .pth-card-icon {\r\n    width: 44px !important;\r\n    height: 44px !important;\r\n    font-size: 22px !important;\r\n    margin-bottom: 0 !important;\r\n    margin-right: 15px !important;\r\n    background: #f1f5f9 !important;\r\n    border-radius: 12px !important;\r\n    border: 1px solid #e2e8f0 !important;\r\n    display: inline-flex !important;\r\n    align-items: center !important;\r\n    justify-content: center !important;\r\n    flex-shrink: 0 !important;\r\n}\r\n#pth-dir-grid .pth-card-title {\r\n    width: calc(100% - 60px) !important;\r\n    font-size: 17px !important;\r\n    font-weight: 800 !important;\r\n    color: #0f172a !important;\r\n    line-height: 1.3 !important;\r\n    margin-bottom: 0 !important;\r\n}\r\n\r\n\/* =========================================================\r\n   ZERO-CLS LAYOUT RESERVATION  (added v2.0)\r\n   Reserves height for the filter row, the card grid and the\r\n   pagination row BEFORE the render script fills them.\r\n   ========================================================= *\/\r\n\r\n\/* Filter pill row \u2014 desktop only (mobile row is collapsed by design) *\/\r\n@media (min-width: 992px) { #pth-dir-filters { min-height: 44px; } }\r\n\r\n\/* Pagination row *\/\r\n#pth-dir-pagination { min-height: 40px; }\r\n.pth-pagination-wrapper { min-height: 61px; }\r\n\r\n\/* Uniform height so a skeleton box === a real card box *\/\r\n.pth-tool-card, .pth-dir-skel { min-height: 440px; }\r\n\r\n\/* Skeleton card \u2014 same border\/radius\/padding as .pth-tool-card *\/\r\n.pth-dir-skel {\r\n    background: var(--pth-surface); border: 1px solid var(--pth-border);\r\n    border-radius: 16px; padding: 25px; display: flex; flex-direction: column;\r\n    gap: 14px; pointer-events: none;\r\n}\r\n.pth-skel-row {\r\n    border-radius: 8px; background: #eef2f7;\r\n    background-image: linear-gradient(90deg, #eef2f7 0%, #f8fafc 50%, #eef2f7 100%);\r\n    background-size: 200% 100%;\r\n    animation: pth-skel-shimmer 1.4s linear infinite;\r\n}\r\n.pth-skel-head { display: flex; align-items: center; gap: 15px; }\r\n.pth-skel-icon { width: 60px; height: 60px; border-radius: 12px; flex-shrink: 0; }\r\n.pth-skel-title { width: 60%; height: 20px; }\r\n.pth-skel-line { width: 100%; height: 12px; }\r\n.pth-skel-line.pth-short { width: 68%; }\r\n.pth-skel-foot { margin-top: auto; display: flex; justify-content: space-between; align-items: center; gap: 10px; }\r\n.pth-skel-tag { width: 96px; height: 24px; border-radius: 6px; }\r\n.pth-skel-btn { width: 72px; height: 35px; border-radius: 8px; }\r\n\r\n@keyframes pth-skel-shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }\r\n@media (prefers-reduced-motion: reduce) { .pth-skel-row { animation: none; } }\r\n<\/style>\r\n\r\n<div id=\"pth-directory-wrapper\">\r\n    <div class=\"pth-dir-header\">\r\n        <h2 class=\"pth-dir-title\">Prime Tool Hub Directory<\/h2>\r\n        <p class=\"pth-dir-subtitle\">Explore our complete collection of 100% free, offline web utilities and generators.<\/p>\r\n\r\n        <div class=\"pth-search-bar\">\r\n            <span class=\"pth-search-icon\" aria-hidden=\"true\">\ud83d\udd0d<\/span>\r\n            <input type=\"text\" id=\"pth-dir-search\" class=\"pth-search-input\" aria-label=\"Search tools by name or feature\" placeholder=\"Search for tools or specific features (e.g., 'Verilog', 'UTF-8', 'Nouns')...\">\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"pth-filter-wrapper\">\r\n        <div class=\"pth-dir-mobile-toggle\" id=\"pth-dir-toggle-btn\" role=\"button\" tabindex=\"0\" aria-label=\"Filter tools by category\">\r\n            <span>\ud83d\udcc2 Filter by Category<\/span>\r\n            <span class=\"pth-arrow\" aria-hidden=\"true\">\u25bc<\/span>\r\n        <\/div>\r\n        <div class=\"pth-filter-scroll\" id=\"pth-dir-filters\"><\/div>\r\n    <\/div>\r\n\r\n    <div class=\"pth-dir-grid\" id=\"pth-dir-grid\"><\/div>\r\n\r\n    <script data-no-optimize=\"1\" data-no-minify=\"1\" data-cfasync=\"false\">\r\n    \/* ===== ZERO-CLS SKELETON INJECTOR =====\r\n       Runs at parse time (before first paint), so the browser reserves the\r\n       full grid height immediately. The render snippet's innerHTML wipes\r\n       these automatically; the observer below is a safety net if it appends. *\/\r\n    (function () {\r\n        'use strict';\r\n\r\n        \/* MUST match ITEMS_PER_PAGE in the directory render snippet. *\/\r\n        var PTH_SKELETON_COUNT = 12;\r\n\r\n        var grid = document.getElementById('pth-dir-grid');\r\n        if (!grid || grid.children.length > 0) { return; }\r\n\r\n        var card = '<div class=\"pth-dir-skel\" aria-hidden=\"true\">' +\r\n            '<div class=\"pth-skel-head\">' +\r\n                '<div class=\"pth-skel-row pth-skel-icon\"><\/div>' +\r\n                '<div class=\"pth-skel-row pth-skel-title\"><\/div>' +\r\n            '<\/div>' +\r\n            '<div class=\"pth-skel-row pth-skel-line\"><\/div>' +\r\n            '<div class=\"pth-skel-row pth-skel-line\"><\/div>' +\r\n            '<div class=\"pth-skel-row pth-skel-line pth-short\"><\/div>' +\r\n            '<div class=\"pth-skel-row pth-skel-line\"><\/div>' +\r\n            '<div class=\"pth-skel-row pth-skel-line pth-short\"><\/div>' +\r\n            '<div class=\"pth-skel-foot\">' +\r\n                '<div class=\"pth-skel-row pth-skel-tag\"><\/div>' +\r\n                '<div class=\"pth-skel-row pth-skel-btn\"><\/div>' +\r\n            '<\/div>' +\r\n        '<\/div>';\r\n\r\n        var html = '';\r\n        for (var i = 0; i < PTH_SKELETON_COUNT; i++) { html += card; }\r\n        grid.innerHTML = html;\r\n\r\n        if (typeof MutationObserver !== 'undefined') {\r\n            var obs = new MutationObserver(function () {\r\n                if (grid.querySelector('.pth-tool-card')) {\r\n                    var skels = grid.querySelectorAll('.pth-dir-skel');\r\n                    for (var j = 0; j < skels.length; j++) {\r\n                        skels[j].parentNode.removeChild(skels[j]);\r\n                    }\r\n                    obs.disconnect();\r\n                }\r\n            });\r\n            obs.observe(grid, { childList: true });\r\n            setTimeout(function () { obs.disconnect(); }, 10000);\r\n        }\r\n    })();\r\n    <\/script>\r\n\r\n    <div class=\"pth-pagination-wrapper\">\r\n        <div id=\"pth-dir-pagination\" class=\"pth-pagination-container\"><\/div>\r\n    <\/div>\r\n\r\n    <script data-no-optimize=\"1\" data-no-minify=\"1\" data-cfasync=\"false\">\r\n    \/* ===== FAVOURITES (ES5 \u2014 LiteSpeed safe) ===== *\/\r\n    window.togglePthFavoriteNew = function (e, toolId) {\r\n        if (e) { e.preventDefault(); e.stopPropagation(); }\r\n\r\n        var MAX_FAVORITES_LIMIT = 12;\r\n        var favs = [];\r\n        try { favs = JSON.parse(localStorage.getItem('pthFavorites') || '[]'); } catch (err) { favs = []; }\r\n\r\n        var isAdding = false;\r\n        var idx = -1;\r\n        for (var i = 0; i < favs.length; i++) {\r\n            if (favs[i] === toolId) { idx = i; break; }\r\n        }\r\n\r\n        if (idx > -1) {\r\n            favs.splice(idx, 1);\r\n        } else {\r\n            if (favs.length >= MAX_FAVORITES_LIMIT) {\r\n                if (typeof window.pthAlert === 'function') {\r\n                    window.pthAlert('Limit Reached!', 'You can save up to ' + MAX_FAVORITES_LIMIT + ' favorite tools for quick access.', 'logo');\r\n                }\r\n                return;\r\n            }\r\n            favs.push(toolId);\r\n            isAdding = true;\r\n        }\r\n\r\n        localStorage.setItem('pthFavorites', JSON.stringify(favs));\r\n\r\n        if (e && e.target) {\r\n            if (isAdding) {\r\n                e.target.innerHTML = '\u2b50 Saved';\r\n                e.target.classList.add('is-fav');\r\n            } else {\r\n                e.target.innerHTML = '\u2606 Save';\r\n                e.target.classList.remove('is-fav');\r\n            }\r\n        }\r\n\r\n        if (typeof window.pthUpdateHomeUINew === 'function') { window.pthUpdateHomeUINew(); }\r\n        if (typeof window.pthUpdateTopMenuUI === 'function') { window.pthUpdateTopMenuUI(); }\r\n        window.dispatchEvent(new CustomEvent('pthFavoritesChanged'));\r\n    };\r\n\r\n    \/* ===== MOBILE FILTER TOGGLE (4-layer safe) ===== *\/\r\n    (function () {\r\n        'use strict';\r\n\r\n        function bindToggle() {\r\n            var toggleBtn = document.getElementById('pth-dir-toggle-btn');\r\n            var filtersDiv = document.getElementById('pth-dir-filters');\r\n            if (!toggleBtn || !filtersDiv || toggleBtn.getAttribute('data-pth-bound') === '1') { return; }\r\n            toggleBtn.setAttribute('data-pth-bound', '1');\r\n\r\n            toggleBtn.addEventListener('click', function () {\r\n                toggleBtn.classList.toggle('pth-open');\r\n                filtersDiv.classList.toggle('pth-open');\r\n            });\r\n\r\n            toggleBtn.addEventListener('keydown', function (ev) {\r\n                if (ev.key === 'Enter' || ev.key === ' ') {\r\n                    ev.preventDefault();\r\n                    toggleBtn.click();\r\n                }\r\n            });\r\n\r\n            filtersDiv.addEventListener('click', function (ev) {\r\n                if (ev.target.classList.contains('pth-filter-btn') && window.innerWidth <= 991) {\r\n                    toggleBtn.classList.remove('pth-open');\r\n                    filtersDiv.classList.remove('pth-open');\r\n                }\r\n            });\r\n        }\r\n\r\n        bindToggle();\r\n        if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', bindToggle); }\r\n        window.addEventListener('load', function () { setTimeout(bindToggle, 50); });\r\n    })();\r\n    <\/script>\r\n<\/div>\n\n\n<style id=\"pth-nt10-styles\">\r\n.pth-recent-container{max-width:1480px;margin:40px auto;padding:0 20px;box-sizing:border-box;font-family:'Inter',system-ui,sans-serif}\r\n.pth-recent-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:25px;flex-wrap:wrap;gap:15px}\r\n.pth-recent-title{font-size:20px;font-weight:800;color:#0f172a;margin:0;display:flex;align-items:center;gap:10px;text-transform:uppercase;letter-spacing:.5px;flex-wrap:wrap}\r\n.pth-recent-count-badge{background:#0f172a;color:#fff;font-size:14px;font-weight:800;padding:4px 12px;border-radius:20px;text-transform:none;letter-spacing:normal;display:inline-flex;align-items:center;justify-content:center}\r\n.pth-recent-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}\r\n.pth-recent-dir-btn{font-size:14px;font-weight:700;color:#fff;background:#047857;padding:8px 18px;border-radius:30px;text-decoration:none;transition:background .2s;display:inline-flex;align-items:center;gap:6px;border:1px solid #047857}\r\n.pth-recent-dir-btn:hover{background:#064e3b;color:#fff}\r\n.pth-recent-video-btn{font-size:14px;font-weight:700;color:#fff;background:#b91c1c;padding:8px 18px;border-radius:30px;text-decoration:none;transition:background .2s;display:inline-flex;align-items:center;gap:6px;border:1px solid #b91c1c}\r\n.pth-recent-video-btn:hover{background:#991b1b;color:#fff}\r\n.pth-recent-view-all{font-size:14px;font-weight:700;color:#2563eb;background:#eff6ff;padding:8px 18px;border-radius:30px;text-decoration:none;transition:background .2s,color .2s;display:inline-flex;align-items:center;gap:6px}\r\n.pth-recent-view-all:hover{background:#2563eb;color:#fff}\r\n.pth-recent-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:20px}\r\n.pth-recent-card{background:#fff;border:1px solid #e2e8f0;border-radius:12px;overflow:hidden;display:flex;flex-direction:column;height:100%;transition:transform .3s ease,box-shadow .3s ease,border-color .3s ease;box-shadow:0 4px 10px rgba(0,0,0,.02);text-decoration:none!important}\r\n.pth-recent-card:hover{transform:translateY(-5px);box-shadow:0 15px 30px rgba(0,0,0,.08);border-color:#93c5fd}\r\n.pth-img-wrap{position:relative;width:100%;padding-bottom:56.25%;background-color:#f1f5f9;border-bottom:1px solid #e2e8f0;flex-shrink:0}\r\n@supports(aspect-ratio:16\/9){.pth-img-wrap{padding-bottom:0;aspect-ratio:16\/9}}\r\n.pth-img-wrap img{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;display:block}\r\n.pth-recent-content{padding:15px;display:flex;flex-direction:column;flex-grow:1}\r\n.pth-recent-meta{font-size:11px;color:#64748b;font-weight:700;margin-bottom:10px;display:flex;align-items:center;gap:6px;text-transform:uppercase;min-height:16px}\r\n.pth-recent-cat{color:#0f172a;background:#e2e8f0;padding:3px 8px;border-radius:4px}\r\n.pth-meta-updated{color:#2563eb;font-weight:600;margin-left:4px;padding-left:6px;border-left:1px solid #cbd5e1;text-transform:none}\r\n.pth-recent-post-title{font-size:15px;font-weight:800;color:#0f172a;margin:0 0 12px;line-height:1.4;transition:color .2s;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;min-height:63px}\r\n.pth-recent-card:hover .pth-recent-post-title{color:#2563eb}\r\n.pth-recent-btn{margin-top:auto;display:flex;align-items:center;justify-content:center;background:#f8fafc;color:#2563eb;border:1px solid #bfdbfe;padding:8px 16px;border-radius:8px;font-size:12px;font-weight:700;transition:background .2s,color .2s;width:100%;box-sizing:border-box}\r\n.pth-recent-card:hover .pth-recent-btn{background:#2563eb;color:#fff;border-color:#2563eb}\r\n@media(min-width:992px) and (max-width:1200px){.pth-recent-grid{grid-template-columns:repeat(3,1fr)}}\r\n@media(max-width:991px){.pth-recent-container{display:none!important}}\r\n<\/style>\r\n\r\n<div class=\"pth-recent-container\">\r\n    <div class=\"pth-recent-header\">\r\n        <h2 class=\"pth-recent-title\">\r\n            <span style=\"font-size:1.2em;\" aria-hidden=\"true\">\ud83d\udcdd<\/span>\r\n            LATEST TECHNICAL GUIDES\r\n            <span class=\"pth-recent-count-badge\">58<\/span>\r\n        <\/h2>\r\n        <div class=\"pth-recent-actions\">\r\n            <a href=\"https:\/\/schoolict.net\/tools\/free-web-tools-directory-prime-tool-hub\/\" class=\"pth-recent-dir-btn\" aria-label=\"Browse all free web tools\">\r\n                <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><polygon points=\"12 2 2 7 12 12 22 7 12 2\"><\/polygon><polyline points=\"2 17 12 22 22 17\"><\/polyline><polyline points=\"2 12 17 22 22 12\"><\/polyline><\/svg>\r\n                All Web Tools\r\n            <\/a>\r\n            <a href=\"https:\/\/schoolict.net\/tools\/free-web-tools-by-category\/\" class=\"pth-recent-video-btn\" aria-label=\"Browse tools by category\">\r\n                <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z\"><\/path><\/svg>\r\n                Categories\r\n            <\/a>\r\n            <a href=\"\/ultimate-free-web-tools\/\" class=\"pth-recent-view-all\">View All Articles \u2192<\/a>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"pth-recent-grid\">\r\n            <a href=\"https:\/\/schoolict.net\/tools\/how-to-convert-csv-to-sql\/\" class=\"pth-recent-card\">\r\n            <div class=\"pth-img-wrap\">\r\n                <img src=\"https:\/\/schoolict.net\/tools\/wp-content\/uploads\/2026\/08\/how-to-convert-csv-to-sql-400x223.jpeg\"\r\n                     alt=\"How to Convert CSV to SQL: Types, Dialects &amp; Safe INSERT Statementshow-to-convert-csv-to-sql\"\r\n                     width=\"640\" height=\"360\"\r\n                     loading=\"eager\"\r\n                     decoding=\"async\"\r\n                     data-no-lazy=\"1\"\r\n                      fetchpriority=\"high\">\r\n            <\/div>\r\n            <div class=\"pth-recent-content\">\r\n                <div class=\"pth-recent-meta\">\r\n                    <span class=\"pth-recent-cat\">\ud83d\udcc2 Data Converters<\/span>\r\n                    <span aria-hidden=\"true\">\u2022<\/span>\r\n                    <span>\ud83d\udcc5 Aug 9                                            <\/span>\r\n                <\/div>\r\n                <h3 class=\"pth-recent-post-title\">How to Convert CSV to SQL: Types, Dialects &amp; Safe INSERT Statementshow-to-convert-csv-to-sql<\/h3>\r\n                <span class=\"pth-recent-btn\">\ud83d\udcd6 Read More<\/span>\r\n            <\/div>\r\n        <\/a>\r\n            <a href=\"https:\/\/schoolict.net\/tools\/how-pdf-files-work\/\" class=\"pth-recent-card\">\r\n            <div class=\"pth-img-wrap\">\r\n                <img src=\"https:\/\/schoolict.net\/tools\/wp-content\/uploads\/2026\/08\/how-PDF-files-work-400x223.jpeg\"\r\n                     alt=\"How PDF Files Work Inside &#8211; Text, Pages and Why Redaction Is Hard\"\r\n                     width=\"640\" height=\"360\"\r\n                     loading=\"lazy\"\r\n                     decoding=\"async\"\r\n                     data-no-lazy=\"1\"\r\n                     >\r\n            <\/div>\r\n            <div class=\"pth-recent-content\">\r\n                <div class=\"pth-recent-meta\">\r\n                    <span class=\"pth-recent-cat\">\ud83d\udcc2 Document Tool<\/span>\r\n                    <span aria-hidden=\"true\">\u2022<\/span>\r\n                    <span>\ud83d\udcc5 Aug 9                                            <\/span>\r\n                <\/div>\r\n                <h3 class=\"pth-recent-post-title\">How PDF Files Work Inside &#8211; Text, Pages and Why Redaction Is Hard<\/h3>\r\n                <span class=\"pth-recent-btn\">\ud83d\udcd6 Read More<\/span>\r\n            <\/div>\r\n        <\/a>\r\n            <a href=\"https:\/\/schoolict.net\/tools\/how-to-spot-ai-written-content\/\" class=\"pth-recent-card\">\r\n            <div class=\"pth-img-wrap\">\r\n                <img src=\"https:\/\/schoolict.net\/tools\/wp-content\/uploads\/2026\/08\/Spotting_AI_written_content-400x223.jpeg\"\r\n                     alt=\"How to Spot AI Written Content \u2014 And Why Detector Tools Keep Getting It Wrong\"\r\n                     width=\"640\" height=\"360\"\r\n                     loading=\"lazy\"\r\n                     decoding=\"async\"\r\n                     data-no-lazy=\"1\"\r\n                     >\r\n            <\/div>\r\n            <div class=\"pth-recent-content\">\r\n                <div class=\"pth-recent-meta\">\r\n                    <span class=\"pth-recent-cat\">\ud83d\udcc2 Text &amp; SEO Tools<\/span>\r\n                    <span aria-hidden=\"true\">\u2022<\/span>\r\n                    <span>\ud83d\udcc5 Aug 9                                            <\/span>\r\n                <\/div>\r\n                <h3 class=\"pth-recent-post-title\">How to Spot AI Written Content \u2014 And Why Detector Tools Keep Getting It Wrong<\/h3>\r\n                <span class=\"pth-recent-btn\">\ud83d\udcd6 Read More<\/span>\r\n            <\/div>\r\n        <\/a>\r\n            <a href=\"https:\/\/schoolict.net\/tools\/how-sentiment-analysis-works\/\" class=\"pth-recent-card\">\r\n            <div class=\"pth-img-wrap\">\r\n                <img src=\"https:\/\/schoolict.net\/tools\/wp-content\/uploads\/2026\/08\/How-Sentiment-Analysis-Works-400x223.jpeg\"\r\n                     alt=\"How Sentiment Analysis Works \u2014 And Why &#8220;Not Bad&#8221; Is So Hard\"\r\n                     width=\"640\" height=\"360\"\r\n                     loading=\"lazy\"\r\n                     decoding=\"async\"\r\n                     data-no-lazy=\"1\"\r\n                     >\r\n            <\/div>\r\n            <div class=\"pth-recent-content\">\r\n                <div class=\"pth-recent-meta\">\r\n                    <span class=\"pth-recent-cat\">\ud83d\udcc2 AI assistant<\/span>\r\n                    <span aria-hidden=\"true\">\u2022<\/span>\r\n                    <span>\ud83d\udcc5 Aug 9                                            <\/span>\r\n                <\/div>\r\n                <h3 class=\"pth-recent-post-title\">How Sentiment Analysis Works \u2014 And Why &#8220;Not Bad&#8221; Is So Hard<\/h3>\r\n                <span class=\"pth-recent-btn\">\ud83d\udcd6 Read More<\/span>\r\n            <\/div>\r\n        <\/a>\r\n            <a href=\"https:\/\/schoolict.net\/tools\/how-product-tours-work\/\" class=\"pth-recent-card\">\r\n            <div class=\"pth-img-wrap\">\r\n                <img src=\"https:\/\/schoolict.net\/tools\/wp-content\/uploads\/2026\/08\/How-Product-Tours-Work-400x223.jpeg\"\r\n                     alt=\"How Product Tours Work Under the Hood\"\r\n                     width=\"640\" height=\"360\"\r\n                     loading=\"lazy\"\r\n                     decoding=\"async\"\r\n                     data-no-lazy=\"1\"\r\n                     >\r\n            <\/div>\r\n            <div class=\"pth-recent-content\">\r\n                <div class=\"pth-recent-meta\">\r\n                    <span class=\"pth-recent-cat\">\ud83d\udcc2 Web Development<\/span>\r\n                    <span aria-hidden=\"true\">\u2022<\/span>\r\n                    <span>\ud83d\udcc5 Aug 7                                                    <span class=\"pth-meta-updated\">(Updated: Aug 9)<\/span>\r\n                                            <\/span>\r\n                <\/div>\r\n                <h3 class=\"pth-recent-post-title\">How Product Tours Work Under the Hood<\/h3>\r\n                <span class=\"pth-recent-btn\">\ud83d\udcd6 Read More<\/span>\r\n            <\/div>\r\n        <\/a>\r\n        <\/div>\r\n<\/div>\n\n\n<p><!-- ============================================================\n     ARTICLE BODY \u2014 free-web-tools-directory-prime-tool-hub\n     v2.1 COMPLIANT | paste in WP Code Editor mode\n     ============================================================ --><\/p>\n\n\n<p class=\"wp-block-paragraph\">Last updated: July 2026<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udd34 <strong>Search Matches Features, Not Just Names<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Most tool lists only match the title, which is useless when you don&#8217;t know what the tool is called. Here the query is compared against the feature lines on each card as well.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A real example. Type <strong>UTF-8<\/strong> into the box. Nothing on this site has &#8220;UTF-8&#8221; in its name, but the <a href=\"https:\/\/schoolict.net\/tools\/free-base64-encoder-decoder-utf-8-supported\/\">Base64 Encoder \/ Decoder<\/a> comes back, because UTF-8 handling is one of its listed features. Same story with <strong>Verilog<\/strong>: the card that appears is the <a href=\"https:\/\/schoolict.net\/tools\/universal-logic-gate-converter-pro\/\">Logic Gate Converter Pro<\/a>, which exports Verilog from a gate diagram. Type <strong>EXIF<\/strong> and you get two very different pages \u2014 the <a href=\"https:\/\/schoolict.net\/tools\/free-offline-smart-file-organizer\/\">Smart File Organizer<\/a>, which reads EXIF while sorting photos, and the <a href=\"https:\/\/schoolict.net\/tools\/free-ai-image-detector-forensic-analyzer\/\">AI Forensic Analyzer<\/a>, which reads EXIF to judge whether an image was edited.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udfe1 <strong>Which Card to Open for Which Job<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If you&#8217;re new to this free web tools directory, here&#8217;s the shortest path from problem to page:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udd35 <strong>Working with data or code<\/strong> \u2014 the <a href=\"https:\/\/schoolict.net\/tools\/free-jsonpath-evaluator-extractor\/\">JSON Studio Pro<\/a> covers formatting, validation, JSONPath queries and JSON\u2194CSV\/XML\/YAML conversion in one page, and the <a href=\"https:\/\/schoolict.net\/tools\/advanced-text-regex-tester-debugger\/\">Regex Tester &amp; Debugger<\/a> handles pattern work with live match highlighting.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udfe0 <strong>Electronics coursework<\/strong> \u2014 start with the <a href=\"https:\/\/schoolict.net\/tools\/truth-table-generator\/\">Truth Table Generator<\/a>, then take the same expression into the <a href=\"https:\/\/schoolict.net\/tools\/boolean-expression-simplifier\/\">Boolean Expression Simplifier<\/a> to see the minimised form.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udfe3 <strong>Images and media<\/strong> \u2014 the <a href=\"https:\/\/schoolict.net\/tools\/free-advanced-image-studio-pro\/\">Advanced Image Studio Pro<\/a> does compress, convert, resize and crop with batch export; the <a href=\"https:\/\/schoolict.net\/tools\/turbo-video-editor\/\">Video Studio<\/a> holds the timeline, trim, merge and GIF work.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udfe2 <strong>Why One Card Sometimes Replaces Three Tools<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A few cards open a studio with tabs instead of a single-purpose page. Background removal, object erase and upscaling all live inside the AI Image Eraser, and image + video face blurring share one Face Blur Studio. If you searched for &#8220;upscale&#8221; and landed on a card that also mentions background removal, that&#8217;s why \u2014 you&#8217;re one tab away from what you wanted, not on the wrong page.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">What the \u2b50 Save Button Actually Stores<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Saving a tool writes its ID into your browser&#8217;s <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Window\/localStorage\" rel=\"noreferrer noopener\" target=\"_blank\">localStorage<\/a> under a single key. No account, no cookie sent to a server, no tracking of which tools you use. The practical side effect: the list is tied to <em>this<\/em> browser on <em>this<\/em> device. Saves made on your laptop won&#8217;t show up on your phone, and clearing site data or browsing in a private window wipes them.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Where This Directory Won&#8217;t Help You<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Being straight about the edges. The search box only looks at tool cards \u2014 it does not search inside the articles or the tutorials, so a query like &#8220;how do I minify CSS&#8221; will find the minifier tool but not the write-up about it. Favourites don&#8217;t sync across devices, as above. And a handful of the AI tools (offline transcription, background removal) download a model file the first time you run them, so that first run needs a connection and a few seconds of patience; after that they work locally like everything else. For heavy video jobs, a phone will struggle with a 500 MB clip no matter which card you open \u2014 use a laptop. If you want the reasoning behind building every tool client-side, the full write-up is here: <a href=\"https:\/\/schoolict.net\/tools\/secure-offline-web-development-utilities-guide\/\">why offline browser tools<\/a> beat upload-based ones.<\/p>\n\n\n\n<style>\n.pth-faq-section{margin:50px auto 40px;font-family:inherit;max-width:1480px;padding:0 20px;box-sizing:border-box}\n.pth-faq-header{font-size:1.8rem;font-weight:800;color:#0f172a;margin-bottom:25px;border-bottom:2px solid #e2e8f0;padding-bottom:10px;display:flex;align-items:center;gap:10px}\n.pth-faq-grid{display:grid;grid-template-columns:1fr;gap:20px}\n@media(min-width:768px){.pth-faq-grid{grid-template-columns:repeat(2,1fr)}}\n@media(min-width:1024px){.pth-faq-grid{grid-template-columns:repeat(3,1fr)}}\n.pth-faq-card{background:#f8fafc;padding:24px;border-radius:12px;border:1px solid #e2e8f0;transition:transform .2s ease;break-inside:avoid}\n.pth-faq-card:hover{transform:translateY(-3px);box-shadow:0 4px 12px rgba(0,0,0,.05)}\n.pth-faq-q{color:#0f172a;font-size:1rem;font-weight:700;margin:0 0 12px;line-height:1.4}\n.pth-faq-a{margin:0;font-size:.95rem;color:#1e293b;line-height:1.6;font-weight:500}\n<\/style>\n\n<div class=\"pth-faq-section\">\n  <div class=\"pth-faq-header\">\u2753 Frequently Asked Questions<\/div>\n  <div class=\"pth-faq-grid\">\n\n    <div class=\"pth-faq-card\">\n      <p class=\"pth-faq-q\">Do I need an account to use any of these tools?<\/p>\n      <p class=\"pth-faq-a\">No. There is no sign-up form anywhere on the site. Click Open on a card and the tool is ready. Nothing is gated, and there is no paid tier hiding behind a free one.<\/p>\n    <\/div>\n\n    <div class=\"pth-faq-card\">\n      <p class=\"pth-faq-q\">Are my files uploaded to a server?<\/p>\n      <p class=\"pth-faq-a\">No. Every tool processes your data inside the browser tab using JavaScript. Your PDF, image, or JSON never leaves the machine you&#8217;re sitting at. You can confirm it yourself: open DevTools, go to the Network tab, and run a tool \u2014 you&#8217;ll see no upload request.<\/p>\n    <\/div>\n\n    <div class=\"pth-faq-card\">\n      <p class=\"pth-faq-q\">Why can I only save 12 favourites?<\/p>\n      <p class=\"pth-faq-a\">A quick-access list stops being quick once it holds thirty items. Twelve fits the home page strip and the top menu without scrolling. If you hit the limit, un-save something you haven&#8217;t touched in a while.<\/p>\n    <\/div>\n\n    <div class=\"pth-faq-card\">\n      <p class=\"pth-faq-q\">My saved tools disappeared. What happened?<\/p>\n      <p class=\"pth-faq-a\">Favourites live in this browser&#8217;s local storage. Clearing browsing data, using a private\/incognito window, or switching to a different browser or device all give you a fresh, empty list. There is no account to restore them from, because there is no account.<\/p>\n    <\/div>\n\n    <div class=\"pth-faq-card\">\n      <p class=\"pth-faq-q\">The search returns nothing for what I typed. Now what?<\/p>\n      <p class=\"pth-faq-a\">Try a shorter word. &#8220;Minifier&#8221; works, &#8220;how to minify my stylesheet&#8221; does not \u2014 the search does a plain keyword match against titles and feature lines, not a natural-language query. Also try the category filter and skim the cards; some tools sit inside a multi-tab studio under a broader name.<\/p>\n    <\/div>\n\n    <div class=\"pth-faq-card\">\n      <p class=\"pth-faq-q\">Do the tools work on a phone?<\/p>\n      <p class=\"pth-faq-a\">Most do, and the directory itself is built for a phone screen. Editors that push a lot of data through the CPU \u2014 video timeline work, long audio exports, AI transcription \u2014 are realistically desktop tasks. A short clip is fine on mobile; a half-gigabyte file is not.<\/p>\n    <\/div>\n\n    <div class=\"pth-faq-card\">\n      <p class=\"pth-faq-q\">Can I use a tool with the internet switched off?<\/p>\n      <p class=\"pth-faq-a\">The page itself has to load first, so you need a connection to open it. After that, the processing is fully local \u2014 you can drop the connection mid-task and the tool keeps working. Two exceptions: the AI transcription and background-removal tools fetch a model file on first use.<\/p>\n    <\/div>\n\n    <div class=\"pth-faq-card\">\n      <p class=\"pth-faq-q\">Why do some cards cover three or four different jobs?<\/p>\n      <p class=\"pth-faq-a\">Related tools were merged into one page with tabs instead of being published as near-identical separate pages. One studio with a background-remover, an object eraser and an upscaler is easier to navigate \u2014 and honest \u2014 compared with three thin pages that mostly repeat each other.<\/p>\n    <\/div>\n\n    <div class=\"pth-faq-card\">\n      <p class=\"pth-faq-q\">How often are new tools added?<\/p>\n      <p class=\"pth-faq-a\">Roughly a couple each month, and existing tools get rebuilt more often than new ones get added. When a tool is merged into a studio, the old URL redirects to the right tab rather than dying, so any link you saved keeps working.<\/p>\n    <\/div>\n\n  <\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>\ud83d\udd12 No signup \u00b7 No uploads Every tool listed below runs inside your browser tab. Nothing you type, paste, or drop into them travels to a server, and none of them ask you to create an account first. Pick a card, hit Open, and the tool loads on its own page. \ud83d\udd0d Search What It &#8230; <a title=\"How Product Tours Work Under the Hood\" class=\"read-more\" href=\"https:\/\/schoolict.net\/tools\/how-product-tours-work\/\" aria-label=\"Read more about How Product Tours Work Under the Hood\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":5443,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-589","page","type-page","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"https:\/\/schoolict.net\/tools\/wp-json\/wp\/v2\/pages\/589","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/schoolict.net\/tools\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/schoolict.net\/tools\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/schoolict.net\/tools\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/schoolict.net\/tools\/wp-json\/wp\/v2\/comments?post=589"}],"version-history":[{"count":1,"href":"https:\/\/schoolict.net\/tools\/wp-json\/wp\/v2\/pages\/589\/revisions"}],"predecessor-version":[{"id":7126,"href":"https:\/\/schoolict.net\/tools\/wp-json\/wp\/v2\/pages\/589\/revisions\/7126"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/schoolict.net\/tools\/wp-json\/wp\/v2\/media\/5443"}],"wp:attachment":[{"href":"https:\/\/schoolict.net\/tools\/wp-json\/wp\/v2\/media?parent=589"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}