SPRS Scoring Method (v1.2.1)

The score is not a black box. This page shows the public method the calculator implements, the full weight table, the two partial-credit rules, and the exact export format — enough to reproduce any score by hand.

NIST SP 800-171 DoD Assessment Methodology v1.2.1 · Sources checked 2026-10-30

The method in one paragraph

Start at 110. Every requirement marked not met subtracts its weight — 5, 3 or 1. Two requirements subtract 3 instead of 5 when their defined partial condition applies. The 110 requirements carry 313 points in total, so a contractor with every requirement met or justified N/A scores 110 and a contractor with every requirement not met scores -203. The calculator uses the same arithmetic: score = points earned − 203.

score = 110 − Σ(deduction for each unmet requirement)
score = earned points − 203

See the 44 five-point controls listed in one table, grouped by family.

The only difference between the two lines is bookkeeping. The total weight is 313, so earned − 203 and 110 − deductions always produce the same number.

Version, scope and the two legal instruments

FieldValue
MethodNIST SP 800-171 DoD Assessment Methodology
Version1.2.1, dated June 24, 2020
Scoring sectionsSection 5 (scoring methodology) and Annex A (scoring template)
Assessment types coveredBasic (contractor self-assessment), Medium and High — the methodology says scoring is the same for all three
Standard behind the 110NIST SP 800-171 Rev 2: 110 security requirements in 14 families
CMMC Level 2 scoring32 CFR 170.24 uses the same 110-requirement, 5/3/1 scale and the same two partial-credit requirements

The DoD methodology is the document the DFARS assessment clauses link to. CMMC Level 2 scoring is a separate legal instrument at 32 CFR 170.24. The arithmetic is the same; the governance is not. A SPRS summary score and a CMMC Level 2 assessment status are different things, even when the number behind them is calculated the same way.

Where 313 comes from

BucketItemsPoints eachSubtotal
Fixed 5-point requirements (23 basic + 19 derived)425210
Partial-capable requirements, counted at the full 5-point deduction: 3.5.3 and 3.13.112510
3-point requirements (7 basic + 7 derived)14342
1-point requirements (remaining derived requirements)51151
3.12.4 System Security Plan (not scored)100
Total110313

42 or 44? The fixed 5-point lists contain 42 requirements. Two more requirements, 3.5.3 and 3.13.11, deduct 5 points when they are not implemented at all and 3 points when their partial condition applies. That makes 44 requirements capable of a 5-point deduction, while only 42 sit on the fixed lists. The arithmetic is 42 × 5 + 2 × 5 + 14 × 3 + 51 × 1 = 313.

This is a common place a copied score goes wrong: folding the two partial-capable requirements into the 1-point bucket gives 42 × 5 + 14 × 3 + 54 × 1 = 306 and a floor of -196, not 313 and -203.

The 3.12.4 row is not a 1-point item. The methodology marks it NA and says its absence would result in a finding that an assessment could not be completed. That is a different failure mode from losing a point.

The two partial-credit rules, exactly

RequirementFully metPartial deductionFull deduction
3.5.3 Multifactor authentication03 when MFA is implemented for remote and privileged users but not the general user5 when MFA is not implemented for any users
3.13.11 FIPS-validated cryptography03 when encryption is employed but is not FIPS-validated5 when encryption is not employed

The methodology is not designed to credit partial implementation except in these built-in cases (Section 5(a) and 5(e)). 32 CFR 170.24(c)(2)(i)(B)(4) names the same two requirements. Every other requirement is met or not met; the calculator disables the Partial button on the other 108 rows for that reason.

A rollout percentage is not a partial finding by itself. The methodology's own example: if the initial rollout of 3.5.3 is 75% complete and a plan of action is still being implemented, 3.5.3 is considered not implemented. The 3-point condition is about which users have MFA, not what percentage of a project is finished.

N/A, and the one requirement that can stop an assessment

An N/A finding is not automatically a way to keep the points. The methodology's Annex A names five cases where its comment says not to subtract points:

For CMMC scoring, 32 CFR 170.24(b)(3) states that an N/A finding is equivalent to the same objective being MET. Other N/A claims need a documented justification; they are not a way to skip a requirement you have not implemented. The calculator's N/A button is available on every row, but only those five rows carry the N/A ok marker.

3.12.4 (System Security Plan) has no point value in Annex A. Its absence does not cost 1, 3 or 5 points; it produces a finding that "an assessment could not be completed due to incomplete information and noncompliance with DFARS clause 252.204-7012." A missing SSP is therefore a gate, not a deduction.

How to reproduce a score by hand

  1. Take the 110 requirement IDs and their weights from the table below.
  2. Give each requirement one finding: met, not met, N/A, or — only for 3.5.3 and 3.13.11 — partial.
  3. Deduct 0 for met or justified N/A, 3 for the two partial cases, and the full weight for not met.
  4. Subtract the deductions from 110.
  5. Cross-check: earned points minus 203 must equal the same score.
RequirementWeightFindingDeduction
3.1.1 Limit system access to authorized users5Not met5
3.5.3 Multifactor authentication5Partial (remote and privileged users only)3
3.8.7 Control the use of removable media5Not met5
3.1.3 Control the flow of CUI1Not met1
All other 106 requirements—Met or justified N/A0
Total14

Score: 110 − 14 = 96. Cross-check: earned points = 313 − 14 = 299; 299 − 203 = 96. Both routes agree.

What the CSV and JSON exports contain

The calculator has two data exports. They carry the same findings but not the same fields: the CSV includes a weight on every row, while the JSON does not. Here is the exact schema, taken from the export code the site runs.

CSV

Header: Requirement,Family,Weight,Status, followed by 110 data rows.

ColumnExampleNotes
Requirement3.5.3 Multifactor authentication (partial=3)The requirement ID, a space, then the calculator's title. Commas inside the title are replaced with semicolons; fields are not quoted. The two partial-capable rows carry a (partial=3) suffix in the data title.
FamilyIdentification and AuthenticationThe family name, not the two-letter code.
Weight50 for 3.12.4.
StatuspartialOne of met, partial, not, na, or unassessed.

The CSV always has 110 data rows. An unanswered requirement is written as unassessed, which earns 0 points — the same arithmetic effect as not met, but a different label. There is no score, date, or method-version column; the score must be recomputed from Weight and Status.

JSON

Shape of a real export after four clicks, with every other requirement still unassessed:

{
  "score": -200,
  "assessed": 4,
  "answers": {
    "3.1.1": "not",
    "3.1.3": "not",
    "3.5.3": "partial",
    "3.8.7": "not"
  }
}
FieldTypeMeaning
scorenumberThe score the calculator displayed when the file was written.
assessednumberHow many requirements have any status. The four-click example has 4.
answersobjectRequirement ID → status. Only answered IDs appear; unanswered requirements are absent, not unassessed.

There is no weight, title, family, evidence, timestamp, or schema-version field. The JSON is a snapshot of answers, not a self-contained report: to recompute the score you need /assets/data.js.

Recompute the exported score

Run this from a directory containing assets/data.js and the exported cmmc-sprs-assessment.json:

const fs = require('fs');
global.window = {};
eval(fs.readFileSync('assets/data.js', 'utf8'));
const exp = JSON.parse(fs.readFileSync('cmmc-sprs-assessment.json', 'utf8'));

const earned = window.CMMC_DATA.reduce((n, it) => {
  const s = exp.answers[it.id];
  return n + (s === 'met' || s === 'na' ? it.w
            : s === 'partial' ? it.partial.value : 0);
}, 0);

console.log(earned - window.CMMC_SUM + 110, exp.score); // both numbers must match

The same check works by hand on the CSV: add the Weight of every row whose Status is not or unassessed, add 3 for partial on 3.5.3 or 3.13.11, then subtract the total from 110. Because the CSV includes all 110 rows, the total is complete without consulting the JSON.

Points by family

This is the same 313 points grouped by the 14 NIST SP 800-171 families. The 5-pt count includes 3.5.3 and 3.13.11, the two partial-capable requirements.

FamilyRequirementsPoints5-pt3-pt1-pt0-pt
ACAccess Control225472130
ATAwareness and Training3112010
AUAudit and Accountability9192160
CMConfiguration Management9336030
IAIdentification and Authentication11274070
IRIncident Response3112010
MAMaintenance6182220
MPMedia Protection9232340
PSPersonnel Security281100
PEPhysical Protection6142040
RARisk Assessment391110
CASecurity Assessment4132101
SCSystem and Communications Protection16426190
SISystem and Information Integrity7315200
Total1103134414511

All 110 requirements, weights and special rules

The titles below are the calculator's labels; the weights are the values in the methodology's Annex A. 3.12.4 is the only non-scored row. The five rows marked with an N/A note are the cases Annex A names explicitly.

All 110 requirements and weights
IDRequirementFamilyWeightRule
3.1.1Limit system access to authorized users, processes, devicesAC5
3.1.2Limit access to permitted transactions and functionsAC5
3.1.3Control the flow of CUIAC1
3.1.4Separate duties of individualsAC1
3.1.5Employ least privilegeAC3
3.1.6Use non-privileged accounts for nonsecurity functionsAC1
3.1.7Prevent non-privileged users from executing privileged functions; audit themAC1
3.1.8Limit unsuccessful logon attemptsAC1
3.1.9Provide privacy and security noticesAC1
3.1.10Session lock with pattern-hiding displaysAC1
3.1.11Terminate user sessions after defined conditionAC1
3.1.12Monitor and control remote access sessionsAC5N/A permitted in the circumstance named in Annex A.
3.1.13Cryptographic protection of remote access sessionsAC5N/A permitted in the circumstance named in Annex A.
3.1.14Route remote access via managed access control pointsAC1
3.1.15Authorize remote execution of privileged commandsAC1
3.1.16Authorize wireless access prior to connectionAC5N/A permitted in the circumstance named in Annex A.
3.1.17Protect wireless access using authentication and encryptionAC5N/A permitted in the circumstance named in Annex A.
3.1.18Control connection of mobile devicesAC5N/A permitted in the circumstance named in Annex A.
3.1.19Encrypt CUI on mobile devicesAC3
3.1.20Verify and control connections to external systemsAC1
3.1.21Limit use of portable storage on external systemsAC1
3.1.22Control CUI posted on publicly accessible systemsAC1
3.2.1Security awareness of risksAT5
3.2.2Role-based security trainingAT5
3.2.3Insider threat awareness trainingAT1
3.3.1Create and retain system audit logsAU5
3.3.2Ensure actions traceable to individual usersAU3
3.3.3Review and update logged eventsAU1
3.3.4Alert on audit logging process failureAU1
3.3.5Correlate audit review, analysis and reportingAU5
3.3.6Audit record reduction and report generationAU1
3.3.7Authoritative time source for timestampsAU1
3.3.8Protect audit information and toolsAU1
3.3.9Limit management of audit logging to privileged subsetAU1
3.4.1Establish baseline configurations and inventoriesCM5
3.4.2Establish and enforce security configuration settingsCM5
3.4.3Track, review, approve, log changesCM1
3.4.4Analyze security impact of changesCM1
3.4.5Access restrictions for changesCM5
3.4.6Least functionalityCM5
3.4.7Restrict nonessential programs, ports, protocols, servicesCM5
3.4.8Application blacklisting/whitelisting policyCM5
3.4.9Control and monitor user-installed softwareCM1
3.5.1Identify users, processes, devicesIA5
3.5.2Authenticate users, processes, devicesIA5
3.5.3Multifactor authenticationIA5Partial deduction 3 (MFA for remote and privileged users only).
3.5.4Replay-resistant authenticationIA1
3.5.5Prevent reuse of identifiersIA1
3.5.6Disable identifiers after inactivityIA1
3.5.7Password complexityIA1
3.5.8Prohibit password reuseIA1
3.5.9Temporary passwords with immediate changeIA1
3.5.10Store and transmit only protected passwordsIA5
3.5.11Obscure authentication feedbackIA1
3.6.1Operational incident-handling capabilityIR5
3.6.2Track, document, report incidentsIR5
3.6.3Test incident response capabilityIR1
3.7.1Perform maintenanceMA3
3.7.2Controls on maintenance tools and personnelMA5
3.7.3Sanitize equipment removed for off-site maintenanceMA1
3.7.4Check diagnostic media for malicious codeMA3
3.7.5MFA for nonlocal maintenance; terminate when doneMA5
3.7.6Supervise maintenance personnel without authorizationMA1
3.8.1Protect system media containing CUIMP3
3.8.2Limit access to CUI on mediaMP3
3.8.3Sanitize or destroy media before disposal/reuseMP5
3.8.4Mark media with CUI markingsMP1
3.8.5Control access and accountability for media in transportMP1
3.8.6Crypto for CUI on digital media in transportMP1
3.8.7Control use of removable mediaMP5
3.8.8Prohibit portable storage without identifiable ownerMP3
3.8.9Protect confidentiality of backup CUIMP1
3.9.1Screen individuals prior to accessPS3
3.9.2Protect CUI during personnel actions (termination/transfer)PS5
3.10.1Limit physical accessPE5
3.10.2Protect and monitor physical facilityPE5
3.10.3Escort and monitor visitorsPE1
3.10.4Maintain audit logs of physical accessPE1
3.10.5Control physical access devicesPE1
3.10.6Safeguarding at alternate work sitesPE1
3.11.1Periodically assess riskRA3
3.11.2Scan for vulnerabilitiesRA5
3.11.3Remediate vulnerabilitiesRA1
3.12.1Periodically assess security controlsCA5
3.12.2Develop and implement plans of action (POA&M)CA3
3.12.3Monitor security controls continuouslyCA5
3.12.4System Security Plan (no score; absence = assessment cannot proceed)CA0Not scored; the SSP must exist for an assessment to proceed.
3.13.1Monitor, control, protect communications at boundariesSC5
3.13.2Secure architecture and engineering principlesSC5
3.13.3Separate user functionality from system managementSC1
3.13.4Prevent unauthorized information transfer via shared resourcesSC1
3.13.5Subnetworks for publicly accessible componentsSC5
3.13.6Deny network traffic by defaultSC5
3.13.7Prevent split tunnelingSC1
3.13.8Crypto to protect CUI in transitSC3
3.13.9Terminate network connections after inactivitySC1
3.13.10Establish and manage cryptographic keysSC1
3.13.11FIPS-validated cryptographySC5Partial deduction 3 (encryption used but not FIPS-validated).
3.13.12Prohibit remote activation of collaborative devicesSC1
3.13.13Control and monitor mobile codeSC1
3.13.14Control and monitor VoIPSC1
3.13.15Protect authenticity of communications sessionsSC5
3.13.16Protect CUI at restSC1
3.14.1Identify, report, correct system flaws timelySI5
3.14.2Protection from malicious codeSI5
3.14.3Monitor security alerts and advisoriesSI5
3.14.4Update malicious code protectionSI5
3.14.5Periodic and real-time scansSI3
3.14.6Monitor systems to detect attacksSI5
3.14.7Identify unauthorized useSI3

What the method does and does not determine

It determinesIt does not determine
The arithmetic deduction for each findingWhether your evidence would survive a C3PAO assessment
The score range: 110 down to -203Whether an N/A claim is legitimate; that needs documentation
The effect of the two partial-credit conditionsWhether a requirement can go on a POA&M — that is 32 CFR 170.21
The relationship between a score and the 313-point totalWhether you hold a CMMC Level 2 status

The next two pages apply the same weights to planning: the target-score planner finds the fewest unmet requirements to close, and the POA&M planner separates today's score from the score after listed items close.

Common scoring errors

Why do some sources say 42 weight-5 requirements while the total implies 44?

The fixed 5-point lists contain 42 requirements. Two more, 3.5.3 and 3.13.11, deduct 5 points when they are not implemented at all and 3 points when the defined partial condition applies. That gives 44 requirements capable of a 5-point deduction: 42 × 5 + 2 × 5 + 14 × 3 + 51 × 1 = 313. Folding the two partial-capable requirements into the 1-point bucket gives 42 × 5 + 14 × 3 + 54 × 1 = 306 and a floor of -196, which does not match the 313-point arithmetic or the -203 floor.

Can any requirement other than 3.5.3 and 3.13.11 get partial credit?

No. The DoD methodology defines partial deduction for only those two requirements, and 32 CFR 170.24(c)(2)(i)(B)(4) names the same two. A 75% rollout is not partial credit unless it matches the defined condition.

Does marking a requirement N/A keep its points?

Under 32 CFR 170.24(b)(3), an N/A finding is equivalent to MET in the CMMC scoring methodology. Annex A of the DoD methodology says not to subtract points for 3.1.12 and 3.1.13 when remote access is not permitted, 3.1.16 and 3.1.17 when wireless access is not permitted, and 3.1.18 when mobile device connections are not permitted. Other N/A claims need a documented justification.

Does putting a requirement on a POA&M stop the deduction?

No. The score reflects what is NOT MET on the assessment date. 32 CFR 170.24(c)(2)(i)(B)(6) says a POA&M is not a substitute for a completed requirement. POA&M completion changes the later score, not the score at assessment.

Does 3.12.4 reduce the score?

3.12.4 has no point value in Annex A. It is marked NA, not 5, 3 or 1. Its absence instead produces a finding that an assessment could not be completed due to incomplete information and noncompliance with DFARS clause 252.204-7012.

A 75% MFA rollout is in progress. Is that partial credit?

Not by itself. 3.5.3 gets the 3-point partial deduction when MFA is implemented for remote and privileged users but not the general user. The methodology's own example says a 75% rollout with a plan of action still in progress is assessed as not implemented.

Sources

All external sources above were opened on 2026-10-30. The weights in the table match assets/data.js and the arithmetic in VERIFICATION.md: 110 items, 313 points, floor -203.

Related: target-score planner · POA&M planner · what the score range means · how to run the assessment