{"id":141,"date":"2026-05-30T02:52:07","date_gmt":"2026-05-30T02:52:07","guid":{"rendered":"https:\/\/toolibee.com\/?page_id=141"},"modified":"2026-05-30T22:50:20","modified_gmt":"2026-05-30T22:50:20","slug":"gpa-calculator-2","status":"publish","type":"page","link":"https:\/\/toolibee.com\/?page_id=141","title":{"rendered":"GPA Calculator"},"content":{"rendered":"\n<div class=\"toolibee-page-menu\">\n  <a class=\"toolibee-page-logo\" href=\"\/toolibee\/\">\n    <img decoding=\"async\" src=\"https:\/\/toolibee.com\/wp-content\/uploads\/2026\/02\/toolibee-logo.png\" alt=\"Toolibee\">\n  <\/a>\n\n  <div class=\"toolibee-page-links\">\n    <a href=\"\/toolibee\/\">Home<\/a>\n    <a href=\"\/tools\/\">Tools<\/a>\n    <a href=\"\/my-account\/\">Login<\/a>\n  <\/div>\n<\/div>\n\n<div class=\"toolibee-back-tools\">\n  <a href=\"\/tools\/\">\u2190 Back to All Tools<\/a>\n<\/div>\n\n<style>\n.toolibee-page-menu {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  max-width: 1050px;\n  margin: 0 auto 10px;\n  padding: 12px 18px;\n  border-bottom: 1px solid #e6eef0;\n}\n\n.toolibee-page-logo img {\n  height: 48px;\n  width: auto;\n  display: block;\n}\n\n.toolibee-page-links {\n  display: flex;\n  gap: 22px;\n}\n\n.toolibee-page-links a,\n.toolibee-back-tools a {\n  color: #00587C;\n  font-weight: 700;\n  text-decoration: none;\n}\n\n.toolibee-page-links a:hover,\n.toolibee-back-tools a:hover {\n  text-decoration: underline;\n}\n\n.toolibee-back-tools {\n  max-width: 1050px;\n  margin: 0 auto 18px;\n  padding: 0 18px;\n}\n\n@media (max-width: 600px) {\n  .toolibee-page-menu {\n    padding: 10px 14px;\n  }\n\n  .toolibee-page-logo img {\n    height: 38px;\n  }\n\n  .toolibee-page-links {\n    gap: 14px;\n    font-size: 14px;\n  }\n}\n<\/style>\n\n\n\n    <div id=\"toolibee-gpa-8261\" class=\"toolibee-tool\">\n        <div class=\"toolibee-card\">\n            <div class=\"toolibee-head\">\n                <div class=\"toolibee-bee\">\ud83d\udc1d<\/div>\n                <div>\n                    <h2>GPA Calculator<\/h2>\n                    <p>Calculate your semester GPA.<\/p>\n                <\/div>\n            <\/div>\n\n            <div class=\"toolibee-body\">\n                <div class=\"tb-rows\"><\/div>\n\n                <div class=\"toolibee-buttonrow\">\n                    <button type=\"button\" class=\"toolibee-btn secondary tb-add\">Add Course<\/button>\n                    <button type=\"button\" class=\"toolibee-btn tb-calc\">Calculate GPA<\/button>\n                    <button type=\"button\" class=\"toolibee-btn secondary tb-clear\">Clear<\/button>\n                <\/div>\n\n                <div class=\"toolibee-output\">Your GPA result will appear here.<\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <style>\n        .toolibee-tool {\n            font-family: Inter, Arial, sans-serif;\n            color: #1f2937;\n            max-width: 980px;\n            margin: 24px auto;\n            padding: 0 14px;\n        }\n\n        .toolibee-card {\n            background: linear-gradient(180deg,#fff,#fbfdff);\n            border: 1px solid #dbe7f3;\n            border-radius: 22px;\n            box-shadow: 0 14px 35px rgba(24,50,74,.10);\n            overflow: hidden;\n        }\n\n        .toolibee-head {\n            display: flex;\n            gap: 14px;\n            align-items: center;\n            background: linear-gradient(135deg,#18324a,#24577c);\n            color: #fff;\n            padding: 22px 24px;\n        }\n\n        .toolibee-bee {\n            width: 46px;\n            height: 46px;\n            border-radius: 50%;\n            display: grid;\n            place-items: center;\n            background: #f6b93b;\n            color: #1f2937;\n            font-size: 25px;\n            flex: 0 0 auto;\n        }\n\n        .toolibee-head h2 {\n            margin: 0;\n            font-size: 25px;\n            line-height: 1.2;\n        }\n\n        .toolibee-head p {\n            margin: 5px 0 0;\n            color: #e8f5ff;\n        }\n\n        .toolibee-body {\n            padding: 24px;\n        }\n\n        .tb-row {\n            display: grid;\n            grid-template-columns: 2fr 1fr 1fr auto;\n            gap: 10px;\n            align-items: center;\n            margin-bottom: 12px;\n            background: #eaf6ff;\n            border: 1px solid #dbe7f3;\n            border-radius: 16px;\n            padding: 12px;\n        }\n\n        .tb-row-labels {\n            display: grid;\n            grid-template-columns: 2fr 1fr 1fr auto;\n            gap: 10px;\n            margin-bottom: 6px;\n            font-weight: 800;\n            color: #18324a;\n        }\n\n        .toolibee-input,\n        .toolibee-select {\n            width: 100%;\n            box-sizing: border-box;\n            border: 1px solid #dbe7f3;\n            border-radius: 14px;\n            padding: 12px 13px;\n            font-size: 15px;\n            background: #fff;\n            color: #1f2937;\n        }\n\n        .toolibee-buttonrow {\n            display: flex;\n            flex-wrap: wrap;\n            gap: 10px;\n            margin: 14px 0;\n        }\n\n        .toolibee-btn {\n            border: 0;\n            border-radius: 999px;\n            padding: 11px 18px;\n            font-weight: 800;\n            cursor: pointer;\n            background: #2f80ed;\n            color: #fff;\n            box-shadow: 0 7px 18px rgba(47,128,237,.22);\n        }\n\n        .toolibee-btn.secondary {\n            background: #fff;\n            color: #18324a;\n            border: 1px solid #dbe7f3;\n            box-shadow: none;\n        }\n\n        .tb-remove {\n            border: 1px solid #f3b4ae;\n            background: #fff;\n            color: #b42318;\n            border-radius: 999px;\n            padding: 10px 13px;\n            font-weight: 800;\n            cursor: pointer;\n        }\n\n        .toolibee-output {\n            background: #eaf6ff;\n            border: 1px solid #dbe7f3;\n            border-radius: 16px;\n            padding: 16px;\n            min-height: 100px;\n            white-space: pre-wrap;\n            line-height: 1.5;\n        }\n\n        @media(max-width:760px) {\n            .tb-row,\n            .tb-row-labels {\n                grid-template-columns: 1fr;\n            }\n\n            .tb-row-labels {\n                display: none;\n            }\n\n            .toolibee-head {\n                align-items: flex-start;\n            }\n        }\n    <\/style>\n\n    <script>\n        document.addEventListener('DOMContentLoaded', function () {\n            const root = document.getElementById('toolibee-gpa-8261');\n            if (!root) return;\n\n            const rowsBox = root.querySelector('.tb-rows');\n            const output = root.querySelector('.toolibee-output');\n\n            const grades = {\n                'A+': 4.0,\n                'A': 4.0,\n                'A-': 3.7,\n                'B+': 3.3,\n                'B': 3.0,\n                'B-': 2.7,\n                'C+': 2.3,\n                'C': 2.0,\n                'C-': 1.7,\n                'D+': 1.3,\n                'D': 1.0,\n                'F': 0\n            };\n\n            function gradeOptions() {\n                return Object.keys(grades).map(function (grade) {\n                    return '<option value=\"' + grade + '\">' + grade + '<\/option>';\n                }).join('');\n            }\n\n            function ensureLabels() {\n                if (rowsBox.querySelector('.tb-row-labels')) return;\n\n                const labels = document.createElement('div');\n                labels.className = 'tb-row-labels';\n                labels.innerHTML =\n                    '<div>Course<\/div>' +\n                    '<div>Credits<\/div>' +\n                    '<div>Grade<\/div>' +\n                    '<div><\/div>';\n\n                rowsBox.appendChild(labels);\n            }\n\n            function addCourse(courseName = '', credits = '', grade = 'A') {\n                ensureLabels();\n\n                const row = document.createElement('div');\n                row.className = 'tb-row';\n\n                row.innerHTML =\n                    '<input class=\"toolibee-input tb-course\" type=\"text\" placeholder=\"Course name\" value=\"' + courseName + '\">' +\n                    '<input class=\"toolibee-input tb-credits\" type=\"number\" min=\"0\" step=\"0.5\" placeholder=\"Credits\" value=\"' + credits + '\">' +\n                    '<select class=\"toolibee-select tb-grade\">' + gradeOptions() + '<\/select>' +\n                    '<button type=\"button\" class=\"tb-remove\">Remove<\/button>';\n\n                row.querySelector('.tb-grade').value = grade;\n\n                row.querySelector('.tb-remove').addEventListener('click', function () {\n                    row.remove();\n                    calculateGPA();\n                });\n\n                rowsBox.appendChild(row);\n            }\n\n            function calculateGPA() {\n                let totalCredits = 0;\n                let totalPoints = 0;\n                let countedCourses = 0;\n\n                root.querySelectorAll('.tb-row').forEach(function (row) {\n                    const credits = parseFloat(row.querySelector('.tb-credits').value);\n                    const grade = row.querySelector('.tb-grade').value;\n\n                    if (!isNaN(credits) && credits > 0 && grades.hasOwnProperty(grade)) {\n                        totalCredits += credits;\n                        totalPoints += credits * grades[grade];\n                        countedCourses++;\n                    }\n                });\n\n                if (totalCredits <= 0) {\n                    output.textContent = 'Enter credits for at least one course.';\n                    return;\n                }\n\n                const gpa = totalPoints \/ totalCredits;\n\n                output.textContent =\n                    'Semester GPA: ' + gpa.toFixed(2) + '\\n' +\n                    'Credits counted: ' + totalCredits + '\\n' +\n                    'Courses counted: ' + countedCourses;\n            }\n\n            root.querySelector('.tb-add').addEventListener('click', function () {\n                addCourse();\n            });\n\n            root.querySelector('.tb-calc').addEventListener('click', calculateGPA);\n\n            root.querySelector('.tb-clear').addEventListener('click', function () {\n                rowsBox.innerHTML = '';\n                output.textContent = 'Your GPA result will appear here.';\n                addCourse();\n                addCourse();\n                addCourse();\n            });\n\n            addCourse('', '', 'A');\n            addCourse('', '', 'A');\n            addCourse('', '', 'A');\n        });\n    <\/script>\n\n    \n","protected":false},"excerpt":{"rendered":"<p>Home Tools Login \u2190 Back to All Tools<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-no-title","meta":{"footnotes":""},"class_list":["post-141","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/toolibee.com\/index.php?rest_route=\/wp\/v2\/pages\/141","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/toolibee.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/toolibee.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/toolibee.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/toolibee.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=141"}],"version-history":[{"count":3,"href":"https:\/\/toolibee.com\/index.php?rest_route=\/wp\/v2\/pages\/141\/revisions"}],"predecessor-version":[{"id":487,"href":"https:\/\/toolibee.com\/index.php?rest_route=\/wp\/v2\/pages\/141\/revisions\/487"}],"wp:attachment":[{"href":"https:\/\/toolibee.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=141"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}