{"id":6,"date":"2026-05-25T19:44:40","date_gmt":"2026-05-25T16:44:40","guid":{"rendered":"https:\/\/holygaia.com\/?page_id=6"},"modified":"2026-06-01T20:01:18","modified_gmt":"2026-06-01T17:01:18","slug":"aquarium-volume-and-chemicals-calculator","status":"publish","type":"page","link":"https:\/\/holygaia.com\/?page_id=6","title":{"rendered":"Aquarium Volume \/ Chemicals Calculator"},"content":{"rendered":"\n<div class=\"aq-calc-container\">\n    <div class=\"aq-calc-grid\">\n        \n        <!-- Left Column: Product Dosage -->\n        <div class=\"aq-card dosage-card\">\n            <h3>Product Dosage<\/h3>\n            <div class=\"product-selection-row\">\n                <div class=\"input-group main-product-group\">\n                    <label for=\"calculator-select\">Select Product:<\/label>\n                    <select id=\"calculator-select\" onchange=\"updateProductVariants()\">\n                        <option value=\"custom\">Calculate Your Own<\/option>\n                        <option value=\"fluval_bio\">FLUVAL Biological Enhancer<\/option>\n                        <option value=\"accr\">FRITZ A.C.C.R.<\/option>\n                        <option value=\"fritzzyme\">FRITZ Zyme<\/option>\n                        <option value=\"methylblue\">SeaStar METHYL BLUE<\/option>\n                        <option value=\"aquasafe\">Tetra AquaSafe<\/option>\n                        <option value=\"crystalwater\">Tetra Crystal Water<\/option>\n                        <option value=\"easybalance\">Tetra EasyBalance<\/option>\n                        <option value=\"antychlor\">Tropical ANTYCHLOR<\/option>\n                        <option value=\"ph_buffer\">Waterlife pH 6.5 BUFFER<\/option>\n                    <\/select>\n                <\/div>\n                <div id=\"variant-select-container\" class=\"input-group variant-product-group\" style=\"display: none;\">\n                    <label for=\"variant-select\">Usage Option:<\/label>\n                    <select id=\"variant-select\" onchange=\"updateDosage()\">\n                    <\/select>\n                <\/div>\n            <\/div>\n\n            <div id=\"dosage-inputs\" style=\"margin-top: 20px;\">\n                <div id=\"custom-fields\">\n                    <div class=\"input-group\">\n                        <label>Bottle Dose (ml):<\/label>\n                        <input type=\"number\" id=\"bottle-ml\" value=\"5\" oninput=\"updateDosage()\">\n                    <\/div>\n                    <div class=\"input-group\">\n                        <label>Per (Liters):<\/label>\n                        <input type=\"number\" id=\"bottle-liters\" value=\"10\" oninput=\"updateDosage()\">\n                    <\/div>\n                <\/div>\n                \n                <div id=\"fixed-info\" style=\"display:none; font-style: italic; color: #aaa; margin-bottom: 10px;\">\n                    <span id=\"product-ratio\"><\/span>\n                <\/div>\n\n                <div class=\"result-box dose-highlight\">\n                    <strong>Your Required Dose:<\/strong>\n                    <div class=\"result-value\"><span id=\"final-dose\">58.8<\/span> <span id=\"dose-unit\">ml<\/span><\/div>\n                    <div id=\"dose-breakdown\" style=\"font-size: 0.85em; color: #bbb; margin-top:5px; border-top: 1px solid rgba(255,255,255,0.1); padding-top: 5px;\"><\/div>\n                <\/div>\n                \n                <p id=\"fritzzyme-note\" class=\"calc-note\" style=\"display:none; color: #ff5252; margin-top: 10px; text-align: center;\">\n                    * For a large livestock load, Dosage may be safely increased 10x (<span id=\"fritzzyme-10x\">0.0<\/span> ml)\n                <\/p>\n\n                <p id=\"buffer-note\" class=\"calc-note\" style=\"display:none; color: #ff5252; margin-top: 10px; font-weight: 600; text-align: center;\">\n                    * Check pH parameters every 30 mins after administration.\n                <\/p>\n            <\/div>\n        <\/div>\n\n        <!-- Right Column: Aquarium Volume -->\n        <div class=\"aq-card volume-card\">\n            <h3>Aquarium Volume<\/h3>\n            <div id=\"dimensions-row\" class=\"input-row\">\n                <div class=\"input-group\">\n                    <label>Length (cm):<\/label>\n                    <input type=\"number\" id=\"aq-length\" value=\"120\" oninput=\"calculateVolume()\">\n                <\/div>\n                <div class=\"input-group\">\n                    <label>Width (cm):<\/label>\n                    <input type=\"number\" id=\"aq-width\" value=\"35\" oninput=\"calculateVolume()\">\n                <\/div>\n                <div class=\"input-group\">\n                    <label>Height (cm):<\/label>\n                    <input type=\"number\" id=\"aq-height\" value=\"40\" oninput=\"calculateVolume()\">\n                <\/div>\n            <\/div>\n            \n            <div id=\"fill-level-container\" class=\"input-group fill-level\">\n                <label>Fill Level (%):<\/label>\n                <input type=\"number\" id=\"aq-fill\" value=\"70\" min=\"1\" max=\"100\" oninput=\"calculateVolume()\">\n                <p class=\"calc-note\">*Please account for the Substrate \/ Gravel too not just the unfilled gap to the lid of the Aquarium<\/p>\n            <\/div>\n\n            <div class=\"input-group checkbox-group\">\n                <label class=\"checkbox-label\">\n                    <input type=\"checkbox\" id=\"manual-checkbox\" onchange=\"toggleManualVolume()\">\n                    Enter Volume Manually\n                <\/label>\n            <\/div>\n\n            <div id=\"manual-volume-row\" class=\"manual-input-row\" style=\"display: none;\">\n                <div class=\"input-group\">\n                    <label>Your Volume:<\/label>\n                    <input type=\"number\" id=\"manual-volume-input\" value=\"100\" oninput=\"calculateVolume()\">\n                <\/div>\n                <div class=\"input-group\">\n                    <label>Unit:<\/label>\n                    <select id=\"manual-volume-unit\" onchange=\"calculateVolume()\">\n                        <option value=\"liters\">Liters<\/option>\n                        <option value=\"gallons\">Gallons (US)<\/option>\n                    <\/select>\n                <\/div>\n            <\/div>\n            \n            <div class=\"result-box volume-result\">\n                <strong>Net Water Volume:<\/strong>\n                <div class=\"result-value\"><span id=\"total-liters\">117.6<\/span> Liters<\/div>\n                <div style=\"font-size: 0.85em; color: #bbb; margin-top:5px;\">\n                    Total Capacity: <span id=\"raw-liters\">168.0<\/span> L<br>\n                    Est. Weight: <span id=\"total-kg\">117.6<\/span> KG\n                <\/div>\n            <\/div>\n        <\/div>\n\n    <\/div>\n<\/div>\n\n<style>\n    \/* Scoped Container Styling *\/\n    .aq-calc-container { \n        font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif; \n        max-width: 950px; \n        margin: 20px auto; \n        color: #ffffff; \/* White text for contrast against aquarium video *\/\n        line-height: 1.5; \n    }\n    \n    .aq-calc-grid { \n        display: grid; \n        grid-template-columns: 1fr 1fr; \n        gap: 25px; \n    }\n    \n    @media (max-width: 768px) { \n        .aq-calc-grid { grid-template-columns: 1fr; } \n        .volume-card { order: 1; }\n        .dosage-card { order: 2; }\n    }\n    \n    \/* The Frosted Glass Card Effect - Matches your Store Links page *\/\n    .aq-card { \n        background: rgba(30, 41, 59, 0.45) !important; \n        backdrop-filter: blur(12px) !important; \n        -webkit-backdrop-filter: blur(12px) !important;\n        padding: 25px; \n        border-radius: 15px; \n        border: 1px solid rgba(255, 255, 255, 0.1); \n        box-shadow: 0 8px 32px rgba(0,0,0,0.3); \n    }\n\n    .aq-card h3 { \n        margin: 0 0 20px 0; \n        color: #64b5f6; \n        font-size: 1.25rem; \n        text-transform: uppercase; \n        letter-spacing: 1px; \n        border-bottom: 2px solid rgba(100, 181, 246, 0.2); \n        padding-bottom: 10px; \n    }\n    \n    .input-row { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 10px; }\n    .manual-input-row { display: grid; grid-template-columns: 2fr 1fr; gap: 10px; margin-bottom: 18px; }\n    \n    .input-group label { \n        display: block; \n        font-size: 0.85rem; \n        margin-bottom: 6px; \n        font-weight: 600; \n        color: #e0e0e0; \n    }\n\n    \/* Input & Select fields styled for the dark translucent theme *\/\n    .input-group input, .aq-card select { \n        width: 100%; \n        padding: 10px; \n        border: 1px solid rgba(255, 255, 255, 0.2); \n        border-radius: 6px; \n        font-size: 1rem; \n        background-color: rgba(15, 23, 42, 0.6) !important; \n        color: white !important; \n    }\n\n    .input-group input:focus, .aq-card select:focus { border-color: #64b5f6; outline: none; }\n    \n    .fill-level { background: rgba(255, 248, 225, 0.1); padding: 12px; border-radius: 6px; border: 1px solid rgba(255, 224, 130, 0.2); }\n    .calc-note { color: #ffb74d; font-size: 0.75rem; margin: 8px 0 0 0; line-height: 1.2; font-style: italic; }\n\n    .checkbox-label { display: inline-flex; align-items: center; cursor: pointer; font-size: 0.9rem; color: #e0e0e0; }\n    .checkbox-label input[type=\"checkbox\"] { width: auto; margin-right: 8px; }\n\n    \/* Result Boxes: Styled like your link cards but with darker interior *\/\n    .result-box { \n        margin-top: 20px; \n        padding: 20px; \n        border-radius: 8px; \n        text-align: center; \n        background: rgba(15, 23, 42, 0.5) !important;\n        border: 1px solid rgba(255, 255, 255, 0.1);\n    }\n\n    .result-value { font-size: 2.2rem; font-weight: 800; color: #81c784; margin-top: 5px; }\n    .volume-result .result-value { color: #64b5f6; }\n<\/style>\n\n<script>\n    const presets = {\n        custom: { multi: false, unit: \"ml\" },\n        fluval_bio: {\n            multi: true,\n            unit: \"ml\",\n            variants: [\n                { id: \"day1\", label: \"Day 1 (25ml\/40L)\", ml: 25, liters: 40 },\n                { id: \"day2\", label: \"Day 2 (10ml\/40L)\", ml: 10, liters: 40 },\n                { id: \"day3\", label: \"Day 3 (10ml\/40L)\", ml: 10, liters: 40 },\n                { id: \"maintenance\", label: \"Maintenance (7ml\/40L)\", ml: 7, liters: 40 }\n            ]\n        },\n        accr: { multi: false, ml: 5, liters: 38, unit: \"ml\", label: \"FRITZ A.C.C.R.: 5ml per 38L\" },\n        fritzzyme: {\n            multi: true,\n            unit: \"ml\",\n            variants: [\n                { id: \"new\", label: \"New System (118ml\/38L)\", ml: 118, liters: 38 },\n                { id: \"est\", label: \"Established System (30ml\/38L)\", ml: 30, liters: 38 }\n            ]\n        },\n        methylblue: { multi: false, ml: 10, liters: 100, unit: \"ml\", label: \"SeaStar METHYL BLUE: 10ml per 100L\" },\n        aquasafe: { multi: false, ml: 5, liters: 10, unit: \"ml\", label: \"Tetra AquaSafe: 5ml per 10L\" },\n        crystalwater: { multi: false, ml: 2.5, liters: 10, unit: \"ml\", label: \"Tetra Crystal Water: 2.5ml per 10L\" },\n        easybalance: { multi: false, ml: 2.5, liters: 10, unit: \"ml\", label: \"Tetra EasyBalance: 2.5ml per 10L\" },\n        antychlor: { multi: false, ml: 10, liters: 100, unit: \"ml\", label: \"Tropical ANTYCHLOR: 10ml per 100L\" },\n        ph_buffer: { multi: false, ml: 2, liters: 100, unit: \"Teaspoons\", label: \"Waterlife pH 6.5 BUFFER: 2 tsp per 100L\" }\n    };\n\n    function toggleManualVolume() {\n        const isManual = document.getElementById('manual-checkbox').checked;\n        document.getElementById('aq-length').disabled = isManual;\n        document.getElementById('aq-width').disabled = isManual;\n        document.getElementById('aq-height').disabled = isManual;\n        document.getElementById('aq-fill').disabled = isManual;\n        document.getElementById('dimensions-row').style.opacity = isManual ? \"0.4\" : \"1\";\n        document.getElementById('fill-level-container').style.opacity = isManual ? \"0.4\" : \"1\";\n        document.getElementById('manual-volume-row').style.display = isManual ? \"grid\" : \"none\";\n        calculateVolume();\n    }\n\n    function calculateVolume() {\n        const isManual = document.getElementById('manual-checkbox').checked;\n        let rawVolume = 0;\n        let netVolume = 0;\n        if (isManual) {\n            const manualVal = parseFloat(document.getElementById('manual-volume-input').value) || 0;\n            const unit = document.getElementById('manual-volume-unit').value;\n            netVolume = (unit === 'gallons') ? manualVal * 3.78541 : manualVal;\n            rawVolume = NaN; \n        } else {\n            const L = parseFloat(document.getElementById('aq-length').value) || 0;\n            const W = parseFloat(document.getElementById('aq-width').value) || 0;\n            const H = parseFloat(document.getElementById('aq-height').value) || 0;\n            const fill = parseFloat(document.getElementById('aq-fill').value) || 0;\n            rawVolume = (L * W * H) \/ 1000;\n            netVolume = rawVolume * (fill \/ 100);\n        }\n        document.getElementById('raw-liters').innerText = isNaN(rawVolume) ? \"N\/A\" : rawVolume.toFixed(1);\n        document.getElementById('total-liters').innerText = netVolume.toFixed(1);\n        document.getElementById('total-kg').innerText = netVolume.toFixed(1);\n        updateDosage(); \n    }\n\n    function updateProductVariants() {\n        const productType = document.getElementById('calculator-select').value;\n        const variantContainer = document.getElementById('variant-select-container');\n        const variantSelect = document.getElementById('variant-select');\n        const customFields = document.getElementById('custom-fields');\n        const product = presets[productType];\n        customFields.style.display = (productType === 'custom') ? 'block' : 'none';\n        if (product && product.multi) {\n            variantSelect.innerHTML = \"\";\n            product.variants.forEach((v, i) => {\n                const opt = document.createElement('option');\n                opt.value = v.id;\n                opt.innerText = v.label;\n                variantSelect.appendChild(opt);\n            });\n            variantContainer.style.display = 'block';\n        } else {\n            variantContainer.style.display = 'none';\n        }\n        updateDosage();\n    }\n\n    function updateDosage() {\n        const productType = document.getElementById('calculator-select').value;\n        const variantId = document.getElementById('variant-select').value;\n        const netVolume = parseFloat(document.getElementById('total-liters').innerText) || 0;\n        const product = presets[productType];\n        let bottleMl = 0, bottleL = 1, displayUnit = \"ml\", ratioText = \"\";\n\n        if (productType === 'custom') {\n            bottleMl = parseFloat(document.getElementById('bottle-ml').value) || 0;\n            bottleL = parseFloat(document.getElementById('bottle-liters').value) || 1;\n            ratioText = `Custom (${bottleMl}ml\/${bottleL}L)`;\n        } else if (product && product.multi) {\n            displayUnit = product.unit;\n            const activeVariant = product.variants.find(v => v.id === variantId);\n            if (activeVariant) {\n                bottleMl = activeVariant.ml;\n                bottleL = activeVariant.liters;\n                ratioText = activeVariant.label;\n            }\n        } else if (product) {\n            bottleMl = product.ml;\n            bottleL = product.liters;\n            ratioText = product.label;\n            displayUnit = product.unit;\n        }\n\n        document.getElementById('fixed-info').style.display = productType ? 'block' : 'none';\n        if (productType !== 'custom') document.getElementById('product-ratio').innerText = ratioText;\n        document.getElementById('dose-unit').innerText = displayUnit;\n        const dose = bottleL > 0 ? (bottleMl \/ bottleL) * netVolume : 0;\n        document.getElementById('final-dose').innerText = dose.toFixed(1);\n        \n        const abbr = (displayUnit === \"Teaspoons\") ? \"tsp\" : \"ml\";\n        document.getElementById('dose-breakdown').innerHTML = productType ? `(${bottleMl}${abbr}\/${bottleL}L) &times; ${netVolume.toFixed(1)}L = ${dose.toFixed(1)}${abbr}` : \"\";\n        document.getElementById('fritzzyme-note').style.display = (productType === 'fritzzyme') ? 'block' : 'none';\n        if (productType === 'fritzzyme') document.getElementById('fritzzyme-10x').innerText = (dose * 10).toFixed(1);\n        document.getElementById('buffer-note').style.display = (productType === 'ph_buffer') ? 'block' : 'none';\n    }\n    window.onload = calculateVolume;\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Product Dosage Select Product: Calculate Your OwnFLUVAL Biological EnhancerFRITZ A.C.C.R.FRITZ ZymeSeaStar METHYL BLUETetra AquaSafeTetra Crystal WaterTetra EasyBalanceTropical ANTYCHLORWaterlife pH 6.5 BUFFER Usage Option: Bottle Dose (ml): Per (Liters): Your Required Dose: 58.8 ml * For a large livestock load, Dosage may be safely increased 10x (0.0 ml) * Check pH parameters every 30 mins after [&hellip;]<\/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-6","page","type-page","status-publish","hentry"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/holygaia.com\/index.php?rest_route=\/wp\/v2\/pages\/6","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/holygaia.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/holygaia.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/holygaia.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/holygaia.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6"}],"version-history":[{"count":4,"href":"https:\/\/holygaia.com\/index.php?rest_route=\/wp\/v2\/pages\/6\/revisions"}],"predecessor-version":[{"id":153,"href":"https:\/\/holygaia.com\/index.php?rest_route=\/wp\/v2\/pages\/6\/revisions\/153"}],"wp:attachment":[{"href":"https:\/\/holygaia.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}