{"id":59,"date":"2026-07-01T13:34:53","date_gmt":"2026-07-01T13:34:53","guid":{"rendered":"https:\/\/freewebtools.co.in\/?page_id=59"},"modified":"2026-07-09T16:00:54","modified_gmt":"2026-07-09T16:00:54","slug":"word-counter","status":"publish","type":"page","link":"https:\/\/freewebtools.co.in\/index.php\/word-counter\/","title":{"rendered":"Word Counter"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Count words, characters, sentences and paragraphs instantly.<\/p>\n\n\n\n<div id=\"analytics-counter-container\">\n    <style>\n        \/* Scoped Styles *\/\n        #analytics-counter-container { all: initial; display: block; font-family: 'Segoe UI', system-ui, sans-serif; max-width: 900px; margin: 20px auto; color: #0f172a; }\n        #analytics-counter-container * { box-sizing: border-box; }\n        \n        \/* Stats Grid *\/\n        .stats-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 15px; margin-bottom: 25px; }\n        .stat-card { background: #ffffff; border: 1px solid #cbd5e1; padding: 15px; border-radius: 12px; text-align: center; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05); }\n        .stat-num { font-size: 1.8rem; font-weight: 700; color: #2563eb; margin-bottom: 5px; }\n        .stat-label { font-size: 0.75rem; color: #64748b; text-transform: uppercase; letter-spacing: 0.5px; font-weight: 600; }\n        \n        \/* Workspace *\/\n        .workspace { background: #ffffff; border: 1px solid #cbd5e1; border-radius: 12px; padding: 15px; }\n        textarea { width: 100%; height: 300px; background: #f8fafc; border: 1px solid #cbd5e1; border-radius: 8px; padding: 15px; font-size: 1rem; outline: none; resize: vertical; margin-bottom: 15px; }\n        .control-bar { display: flex; justify-content: flex-end; gap: 10px; }\n        button { padding: 10px 20px; border: none; border-radius: 6px; font-weight: 600; cursor: pointer; transition: all 0.2s; }\n        .btn-clear { background: #fee2e2; color: #ef4444; }\n        .btn-copy { background: #2563eb; color: #ffffff; }\n    <\/style>\n\n    <div class=\"stats-grid\">\n        <div class=\"stat-card\"><div class=\"stat-num\" id=\"wordCount\">0<\/div><div class=\"stat-label\">Words<\/div><\/div>\n        <div class=\"stat-card\"><div class=\"stat-num\" id=\"charWithSpace\">0<\/div><div class=\"stat-label\">Chars (w\/ space)<\/div><\/div>\n        <div class=\"stat-card\"><div class=\"stat-num\" id=\"charNoSpace\">0<\/div><div class=\"stat-label\">Chars (no space)<\/div><\/div>\n        <div class=\"stat-card\"><div class=\"stat-num\" id=\"sentenceCount\">0<\/div><div class=\"stat-label\">Sentences<\/div><\/div>\n        <div class=\"stat-card\"><div class=\"stat-num\" id=\"paragraphCount\">0<\/div><div class=\"stat-label\">Paragraphs<\/div><\/div>\n    <\/div>\n\n    <div class=\"workspace\">\n        <textarea id=\"textInput\" placeholder=\"Type, paste, or drop your content here...\"><\/textarea>\n        <div class=\"control-bar\">\n            <button class=\"btn-clear\" id=\"clearBtn\">\ud83d\uddd1\ufe0f Clear<\/button>\n            <button class=\"btn-copy\" id=\"copyBtn\">\ud83d\udccb Copy<\/button>\n        <\/div>\n    <\/div>\n\n    <script>\n    (function() {\n        const root = document.getElementById('analytics-counter-container');\n        const textInput = root.querySelector('#textInput');\n        \n        const update = () => {\n            const text = textInput.value;\n            root.querySelector('#wordCount').textContent = text.trim() ? text.trim().split(\/\\s+\/).length : 0;\n            root.querySelector('#charWithSpace').textContent = text.length;\n            root.querySelector('#charNoSpace').textContent = text.replace(\/\\s\/g, '').length;\n            root.querySelector('#sentenceCount').textContent = text.trim() ? (text.match(\/[^.!?]+[.!?]+\/g) || []).length : 0;\n            root.querySelector('#paragraphCount').textContent = text.trim() ? text.split(\/\\n+\/).filter(p => p.trim().length > 0).length : 0;\n        };\n\n        textInput.addEventListener('input', update);\n        root.querySelector('#clearBtn').addEventListener('click', () => { textInput.value = ''; update(); });\n        root.querySelector('#copyBtn').addEventListener('click', () => navigator.clipboard.writeText(textInput.value));\n    })();\n    <\/script>\n<\/div>\n\n\n\n<div id=\"scribble-metrics-app\">\n    <style>\n        #scribble-metrics-app { all: initial; display: block; font-family: 'Plus Jakarta Sans', system-ui, sans-serif; max-width: 900px; margin: 20px auto; color: #0f172a; }\n        #scribble-metrics-app * { box-sizing: border-box; }\n        \n        \/* Layout & Cards *\/\n        .metrics-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 15px; margin-bottom: 25px; }\n        .metric-card { background: #fff; border: 1px solid #cbd5e1; border-radius: 16px; padding: 15px; text-align: center; box-shadow: 0 4px 6px -1px rgba(0,0,0,0.05); }\n        .metric-num { font-size: 1.5rem; font-weight: 700; color: #2563eb; margin-bottom: 2px; transition: transform 0.1s; }\n        .metric-num.pop { transform: scale(1.1); color: #10b981; }\n        .metric-label { font-size: 0.7rem; color: #64748b; text-transform: uppercase; font-weight: 700; }\n        \n        \/* Editor *\/\n        .workspace-panel { background: #fff; border: 1px solid #cbd5e1; border-radius: 20px; padding: 20px; box-shadow: 0 10px 15px -3px rgba(0,0,0,0.05); }\n        textarea { width: 100%; height: 300px; background: #f8fafc; border: 1px solid #cbd5e1; border-radius: 12px; padding: 15px; font-size: 1rem; outline: none; margin-bottom: 15px; resize: vertical; }\n        .control-bar { display: flex; justify-content: flex-end; gap: 10px; }\n        button { padding: 10px 20px; border-radius: 10px; border: none; font-weight: 600; cursor: pointer; transition: all 0.2s; }\n        .btn-clear { background: #fef2f2; color: #ef4444; border: 1px solid #fecaca; }\n        .btn-copy { background: #2563eb; color: #fff; }\n        \n        \/* Footer *\/\n        .analysis-footer { margin-top: 15px; padding-top: 15px; border-top: 1px dashed #cbd5e1; display: flex; justify-content: space-between; font-size: 0.85rem; color: #64748b; }\n        .analysis-item span { color: #0f172a; font-weight: 700; }\n    <\/style>\n\n    <div class=\"metrics-grid\">\n        <div class=\"metric-card\"><div class=\"metric-num\" id=\"wordCount\">0<\/div><div class=\"metric-label\">Words<\/div><\/div>\n        <div class=\"metric-card\"><div class=\"metric-num\" id=\"charWithSpace\">0<\/div><div class=\"metric-label\">Chars (+Space)<\/div><\/div>\n        <div class=\"metric-card\"><div class=\"metric-num\" id=\"charNoSpace\">0<\/div><div class=\"metric-label\">Chars (-Space)<\/div><\/div>\n        <div class=\"metric-card\"><div class=\"metric-num\" id=\"sentenceCount\">0<\/div><div class=\"metric-label\">Sentences<\/div><\/div>\n        <div class=\"metric-card\"><div class=\"metric-num\" id=\"paragraphCount\">0<\/div><div class=\"metric-label\">Paragraphs<\/div><\/div>\n    <\/div>\n\n    <div class=\"workspace-panel\">\n        <textarea id=\"textEditor\" placeholder=\"Type or paste your text here...\"><\/textarea>\n        <div class=\"control-bar\">\n            <button id=\"clearBtn\" class=\"btn-clear\">\ud83d\uddd1\ufe0f Clear<\/button>\n            <button id=\"copyBtn\" class=\"btn-copy\">\ud83d\udccb Copy<\/button>\n        <\/div>\n        <footer class=\"analysis-footer\">\n            <div class=\"analysis-item\">Reading Pace: <span id=\"readTime\">0 min<\/span><\/div>\n            <div class=\"analysis-item\">Avg Word: <span id=\"avgWordLen\">0.0 chars<\/span><\/div>\n        <\/footer>\n    <\/div>\n\n    <script>\n    (function() {\n        const root = document.getElementById('scribble-metrics-app');\n        const editor = root.querySelector('#textEditor');\n        \n        const update = () => {\n            const val = editor.value;\n            const words = val.trim() ? val.trim().split(\/\\s+\/).length : 0;\n            const cWS = val.length;\n            const cNS = val.replace(\/\\s\/g, '').length;\n            const sents = val.trim() ? (val.match(\/[^.!?]+[.!?]+\/g) || []).length : 0;\n            const paras = val.trim() ? val.split(\/\\n+\/).filter(p => p.trim().length > 0).length : 0;\n            \n            const set = (id, n) => {\n                const el = root.querySelector('#' + id);\n                if (el.textContent != n) {\n                    el.textContent = n;\n                    el.classList.add('pop');\n                    setTimeout(() => el.classList.remove('pop'), 150);\n                }\n            };\n            \n            set('wordCount', words);\n            set('charWithSpace', cWS);\n            set('charNoSpace', cNS);\n            set('sentenceCount', sents);\n            set('paragraphCount', paras);\n            \n            root.querySelector('#readTime').textContent = Math.ceil(words \/ 225) + \" min\";\n            root.querySelector('#avgWordLen').textContent = words > 0 ? (cNS \/ words).toFixed(1) + \" chars\" : \"0.0 chars\";\n        };\n\n        editor.addEventListener('input', update);\n        root.querySelector('#clearBtn').onclick = () => { editor.value = ''; update(); };\n        root.querySelector('#copyBtn').onclick = () => navigator.clipboard.writeText(editor.value);\n    })();\n    <\/script>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Count words, characters, sentences and paragraphs instantly. 0 Words 0 Chars (w\/ space) 0 Chars (no space) 0 Sentences 0 Paragraphs \ud83d\uddd1\ufe0f Clear \ud83d\udccb Copy 0 Words 0 Chars (+Space) 0 Chars (-Space) 0 Sentences 0 Paragraphs \ud83d\uddd1\ufe0f Clear \ud83d\udccb Copy Reading Pace: 0 min Avg Word: 0.0 chars<\/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-59","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/freewebtools.co.in\/index.php\/wp-json\/wp\/v2\/pages\/59","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/freewebtools.co.in\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/freewebtools.co.in\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/freewebtools.co.in\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/freewebtools.co.in\/index.php\/wp-json\/wp\/v2\/comments?post=59"}],"version-history":[{"count":9,"href":"https:\/\/freewebtools.co.in\/index.php\/wp-json\/wp\/v2\/pages\/59\/revisions"}],"predecessor-version":[{"id":233,"href":"https:\/\/freewebtools.co.in\/index.php\/wp-json\/wp\/v2\/pages\/59\/revisions\/233"}],"wp:attachment":[{"href":"https:\/\/freewebtools.co.in\/index.php\/wp-json\/wp\/v2\/media?parent=59"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}