Navy Rate ASVAB Calculator
.navy-calculator-container {
font-family: 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
max-width: 800px;
margin: 0 auto;
background: #f9f9f9;
padding: 30px;
border-radius: 8px;
box-shadow: 0 4px 15px rgba(0,0,0,0.1);
}
.navy-header {
text-align: center;
margin-bottom: 30px;
border-bottom: 3px solid #003366;
padding-bottom: 15px;
}
.navy-header h2 {
color: #003366;
margin: 0;
font-size: 28px;
text-transform: uppercase;
}
.input-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 20px;
margin-bottom: 25px;
}
@media (max-width: 600px) {
.input-grid {
grid-template-columns: 1fr;
}
}
.input-group {
display: flex;
flex-direction: column;
}
.input-group label {
font-weight: 600;
margin-bottom: 5px;
color: #333;
font-size: 14px;
}
.input-group input {
padding: 10px;
border: 1px solid #ccc;
border-radius: 4px;
font-size: 16px;
transition: border-color 0.3s;
}
.input-group input:focus {
border-color: #003366;
outline: none;
}
.input-hint {
font-size: 11px;
color: #666;
margin-top: 2px;
}
.btn-container {
text-align: center;
margin-top: 20px;
}
button.calculate-btn {
background-color: #003366;
color: white;
border: none;
padding: 12px 30px;
font-size: 18px;
border-radius: 4px;
cursor: pointer;
text-transform: uppercase;
font-weight: bold;
transition: background 0.3s;
}
button.calculate-btn:hover {
background-color: #002244;
}
#resultsArea {
margin-top: 30px;
display: none;
background: #fff;
padding: 20px;
border: 1px solid #ddd;
border-radius: 5px;
}
.result-header {
background: #f0f4f8;
padding: 10px;
color: #003366;
font-weight: bold;
border-left: 5px solid #c5b358; /* Navy Goldish */
margin-bottom: 15px;
}
.job-list {
list-style: none;
padding: 0;
margin: 0;
max-height: 400px;
overflow-y: auto;
}
.job-item {
padding: 10px;
border-bottom: 1px solid #eee;
display: flex;
justify-content: space-between;
align-items: center;
}
.job-item:last-child {
border-bottom: none;
}
.job-code {
font-weight: bold;
color: #003366;
min-width: 50px;
}
.job-name {
flex-grow: 1;
padding-left: 15px;
}
.job-req {
font-size: 12px;
color: #777;
text-align: right;
}
.error-msg {
color: #d9534f;
text-align: center;
margin-top: 10px;
font-weight: bold;
}
.content-section {
margin-top: 50px;
line-height: 1.6;
color: #333;
}
.content-section h3 {
color: #003366;
border-bottom: 1px solid #ddd;
padding-bottom: 10px;
}
.info-box {
background: #eef4fa;
border-left: 4px solid #003366;
padding: 15px;
margin: 20px 0;
}
Note: Calculated VE Score: . Requirements are subject to change by Navy Recruiting Command.
Understanding Your Navy Line Scores
When you take the ASVAB for the US Navy, your eligibility for specific jobs (Rates) is not determined by your overall AFQT percentile (the score between 1 and 99 that determines enlistment eligibility). Instead, the Navy uses Line Scores. These are the standard scores from the individual subtests of the ASVAB.
Different ratings require different aptitudes. For example, a Nuclear Field engineer needs high scores in Math and Science, while a Builder needs high scores in Arithmetic and Mechanical Comprehension.
The Subtests Defined:
- GS: General Science
- AR: Arithmetic Reasoning
- WK: Word Knowledge
- PC: Paragraph Comprehension
- MK: Mathematics Knowledge
- EI: Electronics Information
- AS: Auto and Shop Information
- MC: Mechanical Comprehension
- AO: Assembling Objects
- VE: Verbal Expression (Calculated from WK and PC)
How This Calculator Works
This tool aggregates your raw line scores and applies the specific summation formulas required for various Navy ratings. For example, to become a Hospital Corpsman (HM), you typically need a combined score of VE + MK + GS >= 156.
Disclaimer: Navy recruiting standards fluctuate based on the needs of the service. Some ratings may offer waivers for scores slightly below the requirement, while others may be closed due to being overmanned. Always consult with a local Navy Recruiter for the most current official data.
function calculateNavyJobs() {
// Clear previous results and errors
document.getElementById('errorDisplay').innerHTML = "";
document.getElementById('jobList').innerHTML = "";
document.getElementById('resultsArea').style.display = "none";
// Get Input Values
var gs = parseFloat(document.getElementById('scoreGS').value) || 0;
var ar = parseFloat(document.getElementById('scoreAR').value) || 0;
var wk = parseFloat(document.getElementById('scoreWK').value) || 0;
var pc = parseFloat(document.getElementById('scorePC').value) || 0;
var mk = parseFloat(document.getElementById('scoreMK').value) || 0;
var ei = parseFloat(document.getElementById('scoreEI').value) || 0;
var as = parseFloat(document.getElementById('scoreAS').value) || 0;
var mc = parseFloat(document.getElementById('scoreMC').value) || 0;
var ao = parseFloat(document.getElementById('scoreAO').value) || 0;
var veOverride = parseFloat(document.getElementById('scoreVE').value) || 0;
// Validation: Ensure at least some scores are entered
if (gs === 0 && ar === 0 && mk === 0) {
document.getElementById('errorDisplay').innerHTML = "Please enter your ASVAB line scores.";
return;
}
// Calculate VE
// Note: Officially VE is a table lookup. For estimation, VE = WK + PC is often used in basic tools,
// but the Navy actually uses a scaled VE. If user provides VE override, use it.
// Otherwise, approximation: Scaled VE roughly equals (WK + PC).
var ve = veOverride;
if (ve === 0) {
ve = wk + pc;
}
document.getElementById('displayVE').innerText = ve;
// Define Job Database (Sample of popular ratings and their formulas)
// Formulas based on common instruction COMNAVCRUITCOMINST 1130.8 series approximations
var navyJobs = [
{
code: "AC",
name: "Air Traffic Controller",
req: function() { return (ve + mk + mc) >= 220; },
formula: "VE + MK + MC >= 220"
},
{
code: "AD",
name: "Aviation Machinist's Mate",
req: function() { return (ve + ar + mk + as) >= 210; },
formula: "VE + AR + MK + AS >= 210"
},
{
code: "AE",
name: "Aviation Electrician's Mate",
req: function() { return (ar + mk + ei + gs) >= 210; },
formula: "AR + MK + EI + GS >= 210"
},
{
code: "AM",
name: "Aviation Structural Mechanic",
req: function() { return (ve + ar + mk + as) >= 210; },
formula: "VE + AR + MK + AS >= 210"
},
{
code: "AO",
name: "Aviation Ordnanceman",
req: function() { return (ve + ar + mk + as) >= 185; },
formula: "VE + AR + MK + AS >= 185"
},
{
code: "BM",
name: "Boatswain's Mate",
req: function() { return (ve + ar + as + mc) >= 175; },
formula: "VE + AR + AS + MC >= 175"
},
{
code: "BU",
name: "Builder (Seabees)",
req: function() { return (ar + mc + as) >= 145; },
formula: "AR + MC + AS >= 145"
},
{
code: "CE",
name: "Construction Electrician (Seabees)",
req: function() { return (ar + mk + ei + gs) >= 201; },
formula: "AR + MK + EI + GS >= 201"
},
{
code: "CM",
name: "Construction Mechanic (Seabees)",
req: function() { return (ar + mc + as) >= 160; },
formula: "AR + MC + AS >= 160"
},
{
code: "CS",
name: "Culinary Specialist",
req: function() { return (ve + ar) >= 88; },
formula: "VE + AR >= 88"
},
{
code: "CTI",
name: "Cryptologic Technician Interpretive",
req: function() { return (ve + mk) >= 126; },
formula: "VE + MK >= 126"
},
{
code: "CTN/CWT",
name: "Cyber Warfare Technician",
req: function() { return (ar + 2 * mk + gs) >= 235 || (ve + ar + mk + mc) >= 235; },
formula: "AR + 2*MK + GS >= 235"
},
{
code: "DC",
name: "Damage Controlman",
req: function() { return (ve + ar + mk + as) >= 200; },
formula: "VE + AR + MK + AS >= 200"
},
{
code: "EA",
name: "Engineering Aid",
req: function() { return (ar + mk + ei + gs) >= 220; },
formula: "AR + MK + EI + GS >= 220"
},
{
code: "EM",
name: "Electrician's Mate",
req: function() { return (ve + ar + mk + mc) >= 210; },
formula: "VE + AR + MK + MC >= 210"
},
{
code: "ET",
name: "Electronics Technician",
req: function() { return (ar + mk + ei + gs) >= 223; },
formula: "AR + MK + EI + GS >= 223"
},
{
code: "FC",
name: "Fire Controlman",
req: function() { return (ar + mk + ei + gs) >= 225; },
formula: "AR + MK + EI + GS >= 225"
},
{
code: "GM",
name: "Gunner's Mate",
req: function() { return (ar + mk + ei + gs) >= 204; },
formula: "AR + MK + EI + GS >= 204"
},
{
code: "HM",
name: "Hospital Corpsman",
req: function() { return (ve + mk + gs) >= 156; },
formula: "VE + MK + GS >= 156"
},
{
code: "IS",
name: "Intelligence Specialist",
req: function() { return (ve + ar + mk + gs) >= 215; },
formula: "VE + AR + MK + GS >= 215"
},
{
code: "IT",
name: "Information Systems Technician",
req: function() { return (ar + ve + mk + gs) >= 222; },
formula: "AR + VE + MK + GS >= 222"
},
{
code: "LN",
name: "Legalman",
req: function() { return (ve + mk) >= 105; }, // Actually requires conversion, this is estimate
formula: "VE + MK >= 105"
},
{
code: "LS",
name: "Logistics Specialist",
req: function() { return (ve + ar) >= 100; },
formula: "VE + AR >= 100"
},
{
code: "MA",
name: "Master-at-Arms",
req: function() { return (ve + mk + mc) >= 188; }, // Often requires word count waivers
formula: "VE + MK + MC >= 188"
},
{
code: "MC",
name: "Mass Communication Specialist",
req: function() { return (ve + ar) >= 115; },
formula: "VE + AR >= 115"
},
{
code: "MM",
name: "Machinist's Mate",
req: function() { return (ve + ar + mk + as) >= 200; },
formula: "VE + AR + MK + AS >= 200"
},
{
code: "MN",
name: "Mineman",
req: function() { return (ve + ar + mc + as) >= 210; },
formula: "VE + AR + MC + AS >= 210"
},
{
code: "MR",
name: "Machinery Repairman",
req: function() { return (ve + ar + mk + as) >= 195; },
formula: "VE + AR + MK + AS >= 195"
},
{
code: "ND",
name: "Navy Diver",
req: function() { return (ve + ar + mc + as) >= 203 || (gs + mc + ei) >= 165; },
formula: "VE + AR + MC + AS >= 203"
},
{
code: "NF",
name: "Nuclear Field",
req: function() { return (ar + mk + ei + gs) >= 252 || (ar + mk + mc) >= 235; },
formula: "AR+MK+EI+GS >= 252"
},
{
code: "OS",
name: "Operations Specialist",
req: function() { return (ve + ar + mk + gs) >= 210; }, // Simplified
formula: "VE + AR + MK + GS >= 210"
},
{
code: "QM",
name: "Quartermaster",
req: function() { return (ve + ar) >= 97; },
formula: "VE + AR >= 97"
},
{
code: "RP",
name: "Religious Program Specialist",
req: function() { return (ve + mk) >= 105; },
formula: "VE + MK >= 105"
},
{
code: "SB",
name: "Special Warfare Boat Operator",
req: function() { return (ar + ve + mc + as) >= 200 || (gs + mc + ei) >= 160; },
formula: "AR + VE + MC + AS >= 200"
},
{
code: "SECF",
name: "Submarine Electronics / Computer Field",
req: function() { return (ar + mk + ei + gs) >= 222; },
formula: "AR + MK + EI + GS >= 222"
},
{
code: "SO",
name: "Special Warfare Operator (SEAL)",
req: function() { return (gs + mc + ei) >= 170 || (gs + mc + ei + ar) >= 220; },
formula: "GS + MC + EI >= 170"
},
{
code: "STG",
name: "Sonar Technician (Surface)",
req: function() { return (ar + mk + ei + gs) >= 223; },
formula: "AR + MK + EI + GS >= 223"
},
{
code: "UT",
name: "Utilitiesman",
req: function() { return (ar + mk + ei + gs) >= 201; },
formula: "AR + MK + EI + GS >= 201"
},
{
code: "YN",
name: "Yeoman",
req: function() { return (ve + mk) >= 105; },
formula: "VE + MK >= 105"
}
];
// Process List
var qualifiedCount = 0;
var jobListHtml = "";
// Sort alphabetically by name
navyJobs.sort(function(a, b) {
return a.name.localeCompare(b.name);
});
for (var i = 0; i < navyJobs.length; i++) {
if (navyJobs[i].req()) {
qualifiedCount++;
jobListHtml += '
';
jobListHtml += '' + navyJobs[i].code + '
';
jobListHtml += '' + navyJobs[i].name + '
';
jobListHtml += '' + navyJobs[i].formula + '
';
jobListHtml += '';
}
}
// Display Results
document.getElementById('jobCount').innerText = qualifiedCount;
if (qualifiedCount > 0) {
document.getElementById('jobList').innerHTML = jobListHtml;
} else {
document.getElementById('jobList').innerHTML = '
No ratings found matching these scores. Check input ranges.';
}
document.getElementById('resultsArea').style.display = "block";
document.getElementById('resultsArea').scrollIntoView({ behavior: 'smooth' });
}