{"id":71912,"date":"2026-02-22T15:10:12","date_gmt":"2026-02-22T14:10:12","guid":{"rendered":"https:\/\/www.derekhaines.ch\/sandbox\/?p=71912"},"modified":"2026-03-29T10:56:12","modified_gmt":"2026-03-29T08:56:12","slug":"calculator-test","status":"publish","type":"post","link":"https:\/\/www.derekhaines.ch\/sandbox\/calculator-test\/","title":{"rendered":"Free Novel Writing Calculator: Set Up Your Writing Goals"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-70431\" src=\"https:\/\/www.derekhaines.ch\/sandbox\/wp-content\/uploads\/2018\/04\/ChatGPT-As-A-Free-Grammar-Tool.png\" alt=\"ChatGPT As A Free Grammar Tool\" width=\"600\" height=\"280\" srcset=\"https:\/\/www.derekhaines.ch\/sandbox\/wp-content\/uploads\/2018\/04\/ChatGPT-As-A-Free-Grammar-Tool.png 750w, https:\/\/www.derekhaines.ch\/sandbox\/wp-content\/uploads\/2018\/04\/ChatGPT-As-A-Free-Grammar-Tool-400x187.png 400w, https:\/\/www.derekhaines.ch\/sandbox\/wp-content\/uploads\/2018\/04\/ChatGPT-As-A-Free-Grammar-Tool-290x135.png 290w, https:\/\/www.derekhaines.ch\/sandbox\/wp-content\/uploads\/2018\/04\/ChatGPT-As-A-Free-Grammar-Tool-193x90.png 193w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<p>Most new authors start a novel with a dream, but without a goal. Unless you have a concrete plan, &#8220;someday&#8221; becomes a moving target that rarely actually arrives.<\/p>\n<p>How long does it really take to write a book? The answer depends entirely on your pace, your genre\u2019s word count goals, and how many &#8220;life just happens&#8221; days you build into your schedule.<\/p>\n<p>I built this Free Novel Writing Calculator to take away the guesswork and give you a realistic goal based on your writing routine and habits.<\/p>\n<p>All you need to do is type in your target word count and daily output below to see exactly when you plan to type &#8220;The End.\u201d<\/p>\n<h2>Calculate Your Custom Writing Schedule<\/h2>\n<p>If you want to move on from &#8220;thinking about writing a book&#8221; to actually finishing it, you need a roadmap that accounts for where you are starting today.<\/p>\n<p>Whether you are staring at a blank page or you\u2019re already 20,000 words deep into a draft, this tool helps you see the distant finish line.<\/p>\n<p>All you need to do is enter your total word count goal and your current progress below to see exactly what it will take to reach &#8220;The End.&#8221;<\/p>\n<style>\r\n    \/* 1. REGULAR WEB STYLES - v3 Blue Standard *\/\r\n    #pen-gen-container {\r\n        width: 100%;\r\n        display: flex;\r\n        justify-content: center;\r\n        padding: 20px 0;\r\n        font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif;\r\n    }\r\n    #pen-gen-pro {\r\n        background: #fefefe;\r\n        padding: 30px;\r\n        border: 2px solid #0073aa;\r\n        border-radius: 15px;\r\n        width: 100%;\r\n        max-width: 500px;\r\n        box-shadow: 0 10px 20px rgba(0,0,0,0.1);\r\n        box-sizing: border-box;\r\n    }\r\n    \r\n    #pen-gen-pro h2 { \r\n        margin: 0 0 20px 0; \r\n        color: #0073aa; \r\n        font-size: 1.6rem; \r\n        text-align: center; \r\n    }\r\n    \r\n    .pg-group { margin-bottom: 20px; }\r\n    .pg-group label { display: block; font-size: 14px; font-weight: bold; margin-bottom: 8px; color: #2d3436; }\r\n    \r\n    \/* Blue Styled Options *\/\r\n    .pg-options { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 10px; }\r\n    .pg-btn-opt { \r\n        padding: 10px; \r\n        border: 1px solid #dcdde1; \r\n        border-radius: 8px; \r\n        background: #fff; \r\n        cursor: pointer; \r\n        font-size: 13px; \r\n        transition: 0.3s; \r\n        text-align: center; \r\n        color: #2d3436; \r\n        font-weight: 600;\r\n    }\r\n    .pg-btn-opt:hover { border-color: #0073aa; background: #f0f8ff; }\r\n    .pg-btn-opt.active { background: #0073aa; color: #ffffff; border-color: #0073aa; }\r\n\r\n    .pg-gender-wrap { display: flex; gap: 10px; }\r\n    .pg-gender-btn { \r\n        flex: 1; \r\n        padding: 10px; \r\n        border: 1px solid #dcdde1; \r\n        border-radius: 8px; \r\n        cursor: pointer; \r\n        text-align: center; \r\n        font-size: 13px; \r\n        font-weight: 600; \r\n        background: #fff;\r\n        transition: 0.3s;\r\n    }\r\n    .pg-gender-btn.active { background: #34495e; color: #fff; border-color: #34495e; }\r\n\r\n    #genreSelectWrap { display: none; margin-top: 10px; animation: fadeIn 0.3s; }\r\n    @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }\r\n\r\n    #genBtn { \r\n        width: 100%; \r\n        padding: 15px; \r\n        background: #0073aa; \r\n        color: #ffffff; \r\n        border: none; \r\n        border-radius: 8px; \r\n        font-weight: bold; \r\n        cursor: pointer; \r\n        font-size: 16px; \r\n        margin-top: 10px;\r\n        transition: 0.3s;\r\n    }\r\n    #genBtn:hover { background: #005a87; }\r\n\r\n    #clickAgainHint { display: none; text-align: center; font-size: 13px; color: #7f8c8d; margin-top: 12px; font-style: italic; }\r\n    #resultsHeader { \r\n        margin-top: 25px; \r\n        font-weight: bold; \r\n        display: none; \r\n        color: #0073aa; \r\n        border-bottom: 2px solid #eef7ff; \r\n        padding-bottom: 8px; \r\n        justify-content: space-between;\r\n        align-items: center;\r\n    }\r\n    \r\n    #resultsGrid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 15px; }\r\n    \r\n    @media (max-width: 400px) { #resultsGrid { grid-template-columns: 1fr; } }\r\n\r\n    .name-card { \r\n        background: #fdfdfd; \r\n        padding: 12px; \r\n        border-radius: 8px; \r\n        border: 1px solid #dcdde1;\r\n        font-size: 14px; \r\n        text-align: center; \r\n        cursor: pointer; \r\n        position: relative; \r\n        transition: 0.2s; \r\n        color: #2d3436; \r\n        font-weight: 600;\r\n    }\r\n    .name-card:hover { background: #eef7ff; border-color: #0073aa; transform: translateY(-2px); }\r\n    \r\n    .pg-footer-note { font-size: 12px; color: #7f8c8d; margin-top: 15px; text-align: center; font-weight: 500; }\r\n    .copy-toast { position: absolute; top: -25px; left: 50%; transform: translateX(-50%); background: #2ecc71; color: #ffffff; font-size: 10px; padding: 4px 10px; border-radius: 4px; display: none; }\r\n\r\n    #resetLink { font-size: 12px; color: #7f8c8d; text-decoration: none; cursor: pointer; }\r\n    #resetLink:hover { color: #e74c3c; text-decoration: underline; }\r\n\r\n    \/* v3 Darkened Footer *\/\r\n    .tool-footer-v3 { \r\n        text-align: center; \r\n        margin-top: 30px; \r\n        border-top: 1px solid #eee; \r\n        padding-top: 15px; \r\n        color: #34495e !important; \r\n        font-size: 14px; \r\n        width: 100%; \r\n    }\r\n    .tool-footer-v3 a { color: #0073aa; text-decoration: none; font-weight: bold; }\r\n\r\n    \/* 2. THE PRINT FIX *\/\r\n    @media print {\r\n        body * { visibility: hidden; }\r\n        #pen-gen-pro, #pen-gen-pro * { visibility: visible; }\r\n        #pen-gen-pro { position: absolute; top: 0; left: 0; border: none !important; box-shadow: none !important; width: 100% !important; }\r\n        #genBtn, #clickAgainHint, .pg-footer-note, .tool-footer-v3, #resetLink { display: none !important; }\r\n    }\r\n<\/style>\r\n\r\n<div id=\"pen-gen-container\">\r\n    <div id=\"pen-gen-pro\">\r\n        <h2>Free Pen Name Generator<\/h2>\r\n        \r\n        <div class=\"pg-group\">\r\n            <label>Gender Preference:<\/label>\r\n            <div class=\"pg-gender-wrap\">\r\n                <div id=\"g-male\" class=\"pg-gender-btn\" onclick=\"setGender('male')\">Masculine<\/div>\r\n                <div id=\"g-female\" class=\"pg-gender-btn\" onclick=\"setGender('female')\">Feminine<\/div>\r\n                <div id=\"g-neutral\" class=\"pg-gender-btn active\" onclick=\"setGender('neutral')\">Neutral<\/div>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"pg-group\">\r\n            <label>Choose a Style:<\/label>\r\n            <div class=\"pg-options\">\r\n                <div class=\"pg-btn-opt\" onclick=\"setMode('initials', this)\">Double Initial<\/div>\r\n                <div class=\"pg-btn-opt\" onclick=\"setMode('short', this)\">Short & Punchy<\/div>\r\n                <div class=\"pg-btn-opt\" onclick=\"setMode('vintage', this)\">Vintage\/Classic<\/div>\r\n                <div class=\"pg-btn-opt\" onclick=\"setMode('alliteration', this)\">Alliteration<\/div>\r\n                <div class=\"pg-btn-opt\" onclick=\"setMode('genre', this)\">By Genre<\/div>\r\n                <div class=\"pg-btn-opt\" onclick=\"setMode('surprise', this)\">Surprise Me<\/div>\r\n            <\/div>\r\n\r\n            <div id=\"genreSelectWrap\">\r\n                <select id=\"pgGenre\" style=\"width:100%; padding:12px; border-radius:8px; border:1px solid #dcdde1; font-size:15px; background: #fff;\">\r\n                    <option value=\"romance\">Romance<\/option>\r\n                    <option value=\"scifi\">Sci-Fi \/ Fantasy<\/option>\r\n                    <option value=\"historical\">Historical Fiction<\/option>\r\n                    <option value=\"mystery\">Mystery \/ Thriller<\/option>\r\n                    <option value=\"ya\">Young Adult (YA)<\/option>\r\n                <\/select>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <button id=\"genBtn\" onclick=\"generateNames()\">Generate 10 Names<\/button>\r\n        <div id=\"clickAgainHint\">Click again for 10 more results!<\/div>\r\n\r\n        <div id=\"resultsHeader\">\r\n            <span>Suggested Pen Names:<\/span>\r\n            <span id=\"resetLink\" onclick=\"resetAll()\">Reset All<\/span>\r\n        <\/div>\r\n        <div id=\"resultsGrid\"><\/div>\r\n        <p class=\"pg-footer-note\">Click any name to copy to clipboard.<\/p>\r\n   \r\n        <div class=\"tool-footer-v3\">\r\n            <div style=\"margin-bottom: 8px;\">\r\n                This tool was created by <strong>Just Publishing Advice.<\/strong>\r\n            <\/div>\r\n            <div>\r\n                Explore more \u2192 See all our <a href=\"https:\/\/justpublishingadvice.com\/free-writing-tools\/\">free writing tools<\/a>.\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n<\/div>\r\n\r\n<script>\r\n    let currentMode = '';\r\n    let currentGender = 'neutral';\r\n\r\n    const pool = {\r\n        male: {\r\n            romance: [\"Julian\", \"Sebastian\", \"Dominic\", \"Lucian\", \"Adrian\", \"Cassian\", \"Raphael\", \"Gideon\", \"Benedict\", \"Fabian\"],\r\n            scifi: [\"Kael\", \"Zane\", \"Vane\", \"Cyrus\", \"Orion\", \"Talon\", \"Xander\", \"Ryker\", \"Jaxen\", \"Zale\"],\r\n            historical: [\"Bartholomew\", \"Thaddeus\", \"Silas\", \"Alistair\", \"Leopold\", \"Frederick\", \"Arthur\", \"Barnaby\", \"Edmund\", \"Percy\"],\r\n            mystery: [\"Jack\", \"Mick\", \"Frank\", \"Jude\", \"Gage\", \"Vince\", \"Blane\", \"Reid\", \"Grant\", \"Cade\"],\r\n            ya: [\"Parker\", \"Finn\", \"Charlie\", \"Rowan\", \"Nico\", \"Asher\", \"Leo\", \"Beckett\", \"Miles\", \"Ezra\"],\r\n            vintage: [\"George\", \"Henry\", \"Walter\", \"Frank\", \"Albert\", \"Charles\", \"Edward\", \"Ernest\", \"Louis\", \"Clarence\"]\r\n        },\r\n        female: {\r\n            romance: [\"Isabella\", \"Clara\", \"Genevieve\", \"Seraphina\", \"Evangeline\", \"Aurelia\", \"Vivienne\", \"Rosalind\", \"Camille\", \"Eloise\"],\r\n            scifi: [\"Lyra\", \"Nova\", \"Elara\", \"Vesper\", \"Astra\", \"Juno\", \"Sloane\", \"Sora\", \"Lyris\", \"Xanthe\"],\r\n            historical: [\"Eleanor\", \"Margaret\", \"Florence\", \"Dorothy\", \"Beatrix\", \"Martha\", \"Adelaide\", \"Edith\", \"Harriet\", \"Sybil\"],\r\n            mystery: [\"Quinn\", \"Sloane\", \"Jade\", \"Paige\", \"Vera\", \"Tess\", \"Nell\", \"Ruth\", \"Faye\", \"Margo\"],\r\n            ya: [\"Riley\", \"Skylar\", \"Sage\", \"Emerson\", \"Avery\", \"Jules\", \"Mila\", \"Piper\", \"Willow\", \"Quinn\"],\r\n            vintage: [\"Alice\", \"Evelyn\", \"Rose\", \"Mabel\", \"Pearl\", \"Hazel\", \"Ruby\", \"Iris\", \"Helen\", \"Agnes\"]\r\n        },\r\n        neutral: {\r\n            romance: [\"Jordan\", \"Morgan\", \"Taylor\", \"Alex\", \"Robin\", \"Emery\", \"Skylar\", \"Sydney\"],\r\n            scifi: [\"Zen\", \"Lux\", \"Echo\", \"Phaedra\", \"Indigo\", \"Sol\", \"Voss\", \"Rune\"],\r\n            historical: [\"Francis\", \"Ellis\", \"Marion\", \"Sidney\", \"Cecil\", \"Dorian\", \"Valentine\"],\r\n            mystery: [\"Case\", \"Lane\", \"Logan\", \"Dakota\", \"Harlow\", \"Parker\", \"Morgan\"],\r\n            ya: [\"Blake\", \"Charlie\", \"Hayden\", \"Jamie\", \"River\", \"Phoenix\", \"Jesse\", \"Ellis\"],\r\n            vintage: [\"Marion\", \"Leslie\", \"Beverly\", \"Evelyn\", \"Jean\", \"Dale\", \"Adrian\"]\r\n        },\r\n        lastNames: {\r\n            romance: [\"Sterling\", \"Thorne\", \"Holloway\", \"Deveraux\", \"Blackwood\", \"Beaumont\", \"Valentine\", \"St. James\", \"Beaufort\", \"Rose\"],\r\n            scifi: [\"Valor\", \"Moon\", \"Steel\", \"Vector\", \"Night\", \"Void\", \"Drake\", \"Solari\", \"Voss\", \"Titan\", \"Zenith\"],\r\n            historical: [\"Harrington\", \"Bridgerton\", \"Whitlock\", \"Winslow\", \"Caldwell\", \"Fairfax\", \"Standish\", \"Penhaligon\", \"Ashford\"],\r\n            mystery: [\"Moss\", \"Fox\", \"Cross\", \"Stone\", \"Hardy\", \"Wolfe\", \"Sharp\", \"Grant\", \"Vale\", \"Crane\", \"Nash\"],\r\n            ya: [\"Quinn\", \"Knox\", \"Reed\", \"West\", \"Flynn\", \"Hayes\", \"Beck\", \"Wild\", \"Frost\", \"Mercer\", \"Brooks\"],\r\n            vintage: [\"Miller\", \"Wright\", \"Cooper\", \"Gardner\", \"Palmer\", \"Bennett\", \"Hughes\", \"Carter\", \"Foster\", \"Brooks\"]\r\n        }\r\n    };\r\n\r\n    function setGender(g) {\r\n        currentGender = g;\r\n        document.querySelectorAll('.pg-gender-btn').forEach(b => b.classList.remove('active'));\r\n        document.getElementById('g-' + g).classList.add('active');\r\n    }\r\n\r\n    function setMode(mode, el) {\r\n        currentMode = mode;\r\n        document.querySelectorAll('.pg-btn-opt').forEach(b => b.classList.remove('active'));\r\n        el.classList.add('active');\r\n        document.getElementById('genreSelectWrap').style.display = (mode === 'genre') ? 'block' : 'none';\r\n    }\r\n\r\n    function getRandom(arr) { return arr[Math.floor(Math.random() * arr.length)]; }\r\n\r\n    function resetAll() {\r\n        document.getElementById('resultsGrid').innerHTML = '';\r\n        document.getElementById('resultsHeader').style.display = 'none';\r\n        document.getElementById('clickAgainHint').style.display = 'none';\r\n        document.querySelectorAll('.pg-btn-opt').forEach(b => b.classList.remove('active'));\r\n        currentMode = '';\r\n        document.getElementById('genreSelectWrap').style.display = 'none';\r\n    }\r\n\r\n    function generateNames() {\r\n        if (!currentMode) { alert(\"Please select a style first!\"); return; }\r\n        const grid = document.getElementById('resultsGrid');\r\n        const head = document.getElementById('resultsHeader');\r\n        const hint = document.getElementById('clickAgainHint');\r\n        grid.innerHTML = '';\r\n        head.style.display = 'flex';\r\n        hint.style.display = 'block';\r\n\r\n        let results = new Set();\r\n\r\n        while (results.size < 10) {\r\n            let name = \"\";\r\n            let modeToUse = currentMode === 'surprise' ? getRandom(['initials', 'short', 'vintage', 'alliteration', 'genre']) : currentMode;\r\n            let fPool = (currentGender === 'neutral') ? pool.neutral : pool[currentGender];\r\n            \r\n            if (modeToUse === 'initials') {\r\n                const abc = \"ABCDEFGHIJKLMNOPRSTW\";\r\n                name = getRandom(abc) + \". \" + getRandom(abc) + \". \" + getRandom(pool.lastNames.historical);\r\n            } else if (modeToUse === 'short') {\r\n                let fNames = [...fPool.mystery, ...fPool.ya];\r\n                let lNames = [...pool.lastNames.mystery, ...pool.lastNames.ya];\r\n                name = getRandom(fNames) + \" \" + getRandom(lNames);\r\n            } else if (modeToUse === 'vintage') {\r\n                name = getRandom(fPool.vintage) + \" \" + getRandom(pool.lastNames.vintage);\r\n            } else if (modeToUse === 'alliteration') {\r\n                let allFirst = Object.values(fPool).flat();\r\n                let allLast = Object.values(pool.lastNames).flat();\r\n                let f = getRandom(allFirst);\r\n                let firstLetter = f.charAt(0);\r\n                let matches = allLast.filter(l => l.charAt(0).toUpperCase() === firstLetter.toUpperCase());\r\n                let l = matches.length > 0 ? getRandom(matches) : (firstLetter + \"something\");\r\n                if (matches.length > 0) name = f + \" \" + l;\r\n                else continue;\r\n            } else if (modeToUse === 'genre') {\r\n                const g = document.getElementById('pgGenre').value;\r\n                name = getRandom(fPool[g]) + \" \" + getRandom(pool.lastNames[g]);\r\n            }\r\n            \r\n            if (name) results.add(name);\r\n        }\r\n\r\n        results.forEach(name => {\r\n            const card = document.createElement('div');\r\n            card.className = 'name-card';\r\n            card.innerHTML = `<span class=\"copy-toast\">Copied!<\/span>${name}`;\r\n            card.onclick = function() {\r\n                if (navigator.clipboard && window.isSecureContext) {\r\n                    navigator.clipboard.writeText(name);\r\n                } else {\r\n                    let textArea = document.createElement(\"textarea\");\r\n                    textArea.value = name;\r\n                    document.body.appendChild(textArea);\r\n                    textArea.select();\r\n                    document.execCommand(\"copy\");\r\n                    document.body.removeChild(textArea);\r\n                }\r\n                const toast = this.querySelector('.copy-toast');\r\n                toast.style.display = 'block';\r\n                setTimeout(() => { toast.style.display = 'none'; }, 1000);\r\n            };\r\n            grid.appendChild(card);\r\n        });\r\n    }\r\n<\/script>\n<p>One of the best features of this Free Novel Plan Calculator is the ability to toggle between your desired deadline and your daily capacity.<\/p>\n<p>If you have a specific date in mind, enter the &#8220;Days to Write&#8221; to see the daily word count you need to hit that mark. Alternatively, if you know you can only manage 500 words a day, enter that into the &#8220;Words Per Day&#8221; field to see your realistic completion date.<\/p>\n<p>The calculator automatically updates as you type, allowing you to experiment with different schedules until you find one that fits your lifestyle.<\/p>\n<p>Don&#8217;t forget to use the &#8220;Current Word Count&#8221; field to keep your plan updated as you make progress through your manuscript.<\/p>\n<p>Once you\u2019ve found a plan that feels right for you, click the &#8220;Save My Plan&#8221; button to generate a PDF you can keep or to print and stick on the wall as your writing motivator..<\/p>\n<p>Having a physical copy of your deadline is a powerful psychological tool for staying disciplined during the &#8220;middle-of-the-book&#8221; slump.<\/p>\n<p>Adjust your numbers as often as you like, and remember that any progress, no matter how small, is getting you closer to the finishing line.<\/p>\n<p>&nbsp;<\/p>\n<h3>What is a Realistic Word Count Goal?<\/h3>\n<p>Before you can use the calculator effectively, you need a realistic target.<\/p>\n<p>If you are a new author, you might wonder how many words your manuscript actually needs to be.<\/p>\n<p>While there are no &#8220;hard and fast&#8221; rules in the world of self-publishing, traditional industry standards provide a helpful clue for your plan.<\/p>\n<p>Generally, a standard fiction novel falls between 80,000 and 100,000 words. However, your specific genre plays a massive role in what readers (and publishers) expect:<\/p>\n<p style=\"padding-left: 40px;\"><strong>Mainstream &amp; Literary Fiction:<\/strong> 80,000 \u2013 100,000 words<\/p>\n<p style=\"padding-left: 40px;\"><strong>Science Fiction &amp; Fantasy:<\/strong> 100,000 \u2013 115,000 words (due to world-building)<\/p>\n<p style=\"padding-left: 40px;\"><strong>Romance:<\/strong> 70,000 \u2013 90,000 words<\/p>\n<p style=\"padding-left: 40px;\"><strong>Mystery &amp; Thriller:<\/strong> 75,000 \u2013 90,000 words<\/p>\n<p style=\"padding-left: 40px;\"><strong>Young Adult (YA):<\/strong> 50,000 \u2013 80,000 words<\/p>\n<p style=\"padding-left: 40px;\"><strong>Memoir:<\/strong> 60,000 \u2013 90,000 words<\/p>\n<p>If your writing goal is shorter, you might be looking at a Novella (15,000 \u2013 40,000 words) or even Flash Fiction (under 1,000 words).<\/p>\n<p>On the other hand, non-fiction and self-help books are often more concise, frequently ranging from 30,000 to 70,000 words.<\/p>\n<p>For a deeper look into these numbers, you can check out my full guide on word count guidelines, (LINK) but for the purpose of your current plan, pick a mid-range number that feels achievable.<\/p>\n<p>Remember, it is much easier to expand a 60,000-word draft than it is to cut a 150,000-word &#8220;monster&#8221; manuscript down to size later on.<\/p>\n<p>&nbsp;<\/p>\n<h3>Summary<\/h3>\n<p>This little calculator can help you turn your plan into a reality.<\/p>\n<p>Hitting &#8220;The End&#8221; on a manuscript is rarely a matter of luck; it is almost always a matter of discipline, routine, and planning.<\/p>\n<p>By using this calculation tool, you have already taken the most important step in transitioning from an aspiring writer to a productive author.<\/p>\n<p>You now have an achievable deadline that turns a daunting 80,000-word mountain into a series of small and manageable daily hills.<\/p>\n<p>Remember that a writing plan is a living document, not a rigid contract. As you progress, feel free to return to this page to update your &#8220;Current Word Count&#8221; and see how your finish date shifts. Whether you are ahead of schedule or need to adjust for a slower week, the goal remains the same: consistent, steady progress toward your tartget.<\/p>\n<p>Now that you have your roadmap and your PDF plan in hand, there is only one thing left to do.<\/p>\n<p>Open your manuscript document, work with your daily goal, and start writing those next few words right now.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Most new authors start a novel with a dream, but without a goal. Unless you have a concrete plan, &#8220;someday&#8221; becomes a moving target that rarely actually arrives. How long does it really take to write a book? The answer depends entirely on your pace, your genre\u2019s word count goals, and how many &#8220;life just&hellip;<\/p>\n","protected":false},"author":1,"featured_media":70431,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"limit_modified_date":"","last_modified_date":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"default","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[7],"tags":[],"class_list":["post-71912","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-books"],"_links":{"self":[{"href":"https:\/\/www.derekhaines.ch\/sandbox\/wp-json\/wp\/v2\/posts\/71912","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.derekhaines.ch\/sandbox\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.derekhaines.ch\/sandbox\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.derekhaines.ch\/sandbox\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.derekhaines.ch\/sandbox\/wp-json\/wp\/v2\/comments?post=71912"}],"version-history":[{"count":68,"href":"https:\/\/www.derekhaines.ch\/sandbox\/wp-json\/wp\/v2\/posts\/71912\/revisions"}],"predecessor-version":[{"id":72031,"href":"https:\/\/www.derekhaines.ch\/sandbox\/wp-json\/wp\/v2\/posts\/71912\/revisions\/72031"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.derekhaines.ch\/sandbox\/wp-json\/wp\/v2\/media\/70431"}],"wp:attachment":[{"href":"https:\/\/www.derekhaines.ch\/sandbox\/wp-json\/wp\/v2\/media?parent=71912"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.derekhaines.ch\/sandbox\/wp-json\/wp\/v2\/categories?post=71912"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.derekhaines.ch\/sandbox\/wp-json\/wp\/v2\/tags?post=71912"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}