The Comprehensive Ranking System (CRS) is a points-based system used by Immigration, Refugees and Citizenship Canada (IRCC) to assess and score eligible candidates in the Express Entry pool. This calculator helps you estimate your CRS score based on various factors such as age, education, language proficiency, and work experience.
A higher CRS score increases your chances of receiving an Invitation to Apply (ITA) for permanent residence in Canada.
Applicant's Profile
17 or less
18 years old
19 years old
20-29 years old
30 years old
31 years old
32 years old
33 years old
34 years old
35 years old
36 years old
37 years old
38 years old
39 years old
40 years old
41 years old
42 years old
43 years old
44 years old
45 years or more
Less than secondary school
Secondary diploma (high school)
One-year post-secondary degree/diploma
Two-year post-secondary degree/diploma
Bachelor's degree OR 3+ year post-secondary degree/diploma
Two or more post-secondary degrees/diplomas (one must be 3+ years)
Master's degree OR professional degree
Doctoral degree (PhD)
Your First Official Language (English or French) – CLB Level:
Enter your scores for each ability (e.g., from IELTS or CELPIP). Select N/A if not applicable.
CLB 4 or less
CLB 5
CLB 6
CLB 7
CLB 8
CLB 9
CLB 10 or more
CLB 4 or less
CLB 5
CLB 6
CLB 7
CLB 8
CLB 9
CLB 10 or more
CLB 4 or less
CLB 5
CLB 6
CLB 7
CLB 8
CLB 9
CLB 10 or more
CLB 4 or less
CLB 5
CLB 6
CLB 7
CLB 8
CLB 9
CLB 10 or more
Your Second Official Language (French or English) – CLB Level:
Select N/A if you do not have a second official language test.
N/A (CLB 4 or less)
CLB 5
CLB 6
CLB 7
CLB 8
CLB 9
CLB 10 or more
N/A (CLB 4 or less)
CLB 5
CLB 6
CLB 7
CLB 8
CLB 9
CLB 10 or more
N/A (CLB 4 or less)
CLB 5
CLB 6
CLB 7
CLB 8
CLB 9
CLB 10 or more
N/A (CLB 4 or less)
CLB 5
CLB 6
CLB 7
CLB 8
CLB 9
CLB 10 or more
None or less than 1 year
1 year
2 years
3 years
4 years
5 or more years
None
1 year
2 years
3 or more years
None
1-2 years
3 or more years
Spouse/Partner's Profile
Less than secondary school
Secondary diploma (high school)
One-year post-secondary degree/diploma
Two-year post-secondary degree/diploma
Bachelor's degree OR 3+ year post-secondary degree/diploma
Two or more post-secondary degrees/diplomas (one must be 3+ years)
Master's degree OR professional degree
Doctoral degree (PhD)
Spouse's Official Language (English or French) – CLB Level:
CLB 4 or less
CLB 5
CLB 6
CLB 7
CLB 8
CLB 9
CLB 10 or more
CLB 4 or less
CLB 5
CLB 6
CLB 7
CLB 8
CLB 9
CLB 10 or more
CLB 4 or less
CLB 5
CLB 6
CLB 7
CLB 8
CLB 9
CLB 10 or more
CLB 4 or less
CLB 5
CLB 6
CLB 7
CLB 8
CLB 9
CLB 10 or more
None or less than 1 year
1 year
2 or more years
Additional Points
No Arranged Employment
Arranged Employment (NOC 0, A, B)
Arranged Employment (NOC 00)
Your Estimated CRS Score: 0
Disclaimer: This calculator provides an estimate of your Comprehensive Ranking System (CRS) score for Canada's Express Entry program. It is based on publicly available information from IRCC and is for informational purposes only. Actual scores may vary, and this calculator does not guarantee eligibility or an Invitation to Apply (ITA). Consult official IRCC resources or a licensed immigration professional for accurate advice.
function toggleSpouseSection() {
var spouseSection = document.getElementById('spouseSection');
var hasSpouse = document.getElementById('hasSpouse').checked;
spouseSection.style.display = hasSpouse ? 'block' : 'none';
}
function getAgePoints(ageValue, hasSpouse) {
var points = 0;
if (hasSpouse) { // With spouse
if (ageValue === "18") points = 90;
else if (ageValue === "19") points = 95;
else if (ageValue === "20-29") points = 100;
else if (ageValue === "30") points = 95;
else if (ageValue === "31") points = 90;
else if (ageValue === "32") points = 85;
else if (ageValue === "33") points = 80;
else if (ageValue === "34") points = 75;
else if (ageValue === "35") points = 70;
else if (ageValue === "36") points = 65;
else if (ageValue === "37") points = 60;
else if (ageValue === "38") points = 55;
else if (ageValue === "39") points = 50;
else if (ageValue === "40") points = 45;
else if (ageValue === "41") points = 35;
else if (ageValue === "42") points = 25;
else if (ageValue === "43") points = 15;
else if (ageValue === "44") points = 5;
else points = 0; // 17 or less, 45+
} else { // Single
if (ageValue === "18") points = 99;
else if (ageValue === "19") points = 105;
else if (ageValue === "20-29") points = 110;
else if (ageValue === "30") points = 105;
else if (ageValue === "31") points = 100;
else if (ageValue === "32") points = 95;
else if (ageValue === "33") points = 90;
else if (ageValue === "34") points = 85;
else if (ageValue === "35") points = 80;
else if (ageValue === "36") points = 75;
else if (ageValue === "37") points = 70;
else if (ageValue === "38") points = 65;
else if (ageValue === "39") points = 60;
else if (ageValue === "40") points = 55;
else if (ageValue === "41") points = 50;
else if (ageValue === "42") points = 45;
else if (ageValue === "43") points = 35;
else if (ageValue === "44") points = 25;
else points = 0; // 17 or less, 45+
}
return points;
}
function getEducationPoints(educationLevel, hasSpouse) {
var points = 0;
var level = parseInt(educationLevel);
if (hasSpouse) { // With spouse
if (level === 1) points = 28; // Secondary diploma
else if (level === 2) points = 84; // One-year post-secondary
else if (level === 3) points = 86; // Two-year post-secondary
else if (level === 4) points = 112; // Bachelor's or 3+ year
else if (level === 5) points = 119; // Two or more post-secondary
else if (level === 6) points = 126; // Master's or professional
else if (level === 7) points = 140; // PhD
} else { // Single
if (level === 1) points = 30;
else if (level === 2) points = 90;
else if (level === 3) points = 92;
else if (level === 4) points = 120;
else if (level === 5) points = 128;
else if (level === 6) points = 135;
else if (level === 7) points = 150;
}
return points;
}
function getLanguageSkillPoints(clbLevel, hasSpouse, isSecondLanguage) {
var points = 0;
var clb = parseInt(clbLevel);
if (isSecondLanguage) { // Second official language
if (clb >= 9) points = 6;
else if (clb >= 7) points = 3;
else if (clb >= 5) points = 1;
else points = 0;
} else { // First official language
if (hasSpouse) { // With spouse
if (clb >= 10) points = 32;
else if (clb === 9) points = 29;
else if (clb === 8) points = 22;
else if (clb === 7) points = 16;
else if (clb === 6) points = 9;
else if (clb === 5) points = 6;
else points = 0;
} else { // Single
if (clb >= 10) points = 34;
else if (clb === 9) points = 31;
else if (clb === 8) points = 23;
else if (clb === 7) points = 17;
else if (clb === 6) points = 9;
else if (clb === 5) points = 6;
else points = 0;
}
}
return points;
}
function getCanadianWorkExpPoints(years, hasSpouse) {
var points = 0;
var expYears = parseInt(years);
if (hasSpouse) { // With spouse
if (expYears === 1) points = 35;
else if (expYears === 2) points = 46;
else if (expYears === 3) points = 56;
else if (expYears === 4) points = 64;
else if (expYears >= 5) points = 70;
} else { // Single
if (expYears === 1) points = 40;
else if (expYears === 2) points = 53;
else if (expYears === 3) points = 64;
else if (expYears === 4) points = 72;
else if (expYears >= 5) points = 80;
}
return points;
}
function getSpouseEducationPoints(educationLevel) {
var points = 0;
var level = parseInt(educationLevel);
if (level === 1) points = 2; // Secondary diploma
else if (level === 2) points = 6; // One-year post-secondary
else if (level === 3) points = 7; // Two-year post-secondary
else if (level === 4) points = 8; // Bachelor's or 3+ year
else if (level === 5) points = 9; // Two or more post-secondary
else if (level === 6 || level === 7) points = 10; // Master's, professional, or PhD
return points;
}
function getSpouseLanguageSkillPoints(clbLevel) {
var points = 0;
var clb = parseInt(clbLevel);
if (clb >= 9) points = 5;
else if (clb >= 7) points = 5;
else if (clb >= 5) points = 1;
else points = 0;
return points;
}
function getSpouseCanadianWorkExpPoints(years) {
var points = 0;
var expYears = parseInt(years);
if (expYears === 1) points = 5;
else if (expYears >= 2) points = 10;
return points;
}
function getForeignWorkExpPoints(years) {
var expYears = parseInt(years);
if (expYears === 1) return 1;
if (expYears === 2) return 2;
if (expYears >= 3) return 3;
return 0;
}
function calculateCRS() {
var totalCRS = 0;
var hasSpouse = document.getElementById('hasSpouse').checked;
// — Applicant's Core Human Capital —
var applicantAge = document.getElementById('applicantAge').value;
var applicantEducation = document.getElementById('applicantEducation').value;
var applicantCanadianWorkExp = document.getElementById('applicantCanadianWorkExp').value;
var applicantEnglishListeningCLB = parseInt(document.getElementById('applicantEnglishListening').value);
var applicantEnglishSpeakingCLB = parseInt(document.getElementById('applicantEnglishSpeaking').value);
var applicantEnglishReadingCLB = parseInt(document.getElementById('applicantEnglishReading').value);
var applicantEnglishWritingCLB = parseInt(document.getElementById('applicantEnglishWriting').value);
var applicantFrenchListeningCLB = parseInt(document.getElementById('applicantFrenchListening').value);
var applicantFrenchSpeakingCLB = parseInt(document.getElementById('applicantFrenchSpeaking').value);
var applicantFrenchReadingCLB = parseInt(document.getElementById('applicantFrenchReading').value);
var applicantFrenchWritingCLB = parseInt(document.getElementById('applicantFrenchWriting').value);
var foreignWorkExp = document.getElementById('foreignWorkExp').value;
var canadianStudy = document.getElementById('canadianStudy').value;
var coreHumanCapitalPoints = 0;
var languagePointsFirstOfficial = 0;
var languagePointsSecondOfficial = 0;
// Age points
coreHumanCapitalPoints += getAgePoints(applicantAge, hasSpouse);
// Education points
coreHumanCapitalPoints += getEducationPoints(applicantEducation, hasSpouse);
// First Official Language points (English assumed as first if French is N/A)
languagePointsFirstOfficial += getLanguageSkillPoints(applicantEnglishListeningCLB, hasSpouse, false);
languagePointsFirstOfficial += getLanguageSkillPoints(applicantEnglishSpeakingCLB, hasSpouse, false);
languagePointsFirstOfficial += getLanguageSkillPoints(applicantEnglishReadingCLB, hasSpouse, false);
languagePointsFirstOfficial += getLanguageSkillPoints(applicantEnglishWritingCLB, hasSpouse, false);
coreHumanCapitalPoints += languagePointsFirstOfficial;
// Second Official Language points (French)
languagePointsSecondOfficial += getLanguageSkillPoints(applicantFrenchListeningCLB, hasSpouse, true);
languagePointsSecondOfficial += getLanguageSkillPoints(applicantFrenchSpeakingCLB, hasSpouse, true);
languagePointsSecondOfficial += getLanguageSkillPoints(applicantFrenchReadingCLB, hasSpouse, true);
languagePointsSecondOfficial += getLanguageSkillPoints(applicantFrenchWritingCLB, hasSpouse, true);
coreHumanCapitalPoints += languagePointsSecondOfficial;
// Canadian Work Experience points
coreHumanCapitalPoints += getCanadianWorkExpPoints(applicantCanadianWorkExp, hasSpouse);
totalCRS += coreHumanCapitalPoints;
// — Spouse or Common-law Partner Factors (Max 40 points) —
var spousePoints = 0;
if (hasSpouse) {
var spouseEducation = document.getElementById('spouseEducation').value;
var spouseCanadianWorkExp = document.getElementById('spouseCanadianWorkExp').value;
var spouseLanguageListeningCLB = parseInt(document.getElementById('spouseLanguageListening').value);
var spouseLanguageSpeakingCLB = parseInt(document.getElementById('spouseLanguageSpeaking').value);
var spouseLanguageReadingCLB = parseInt(document.getElementById('spouseLanguageReading').value);
var spouseLanguageWritingCLB = parseInt(document.getElementById('spouseLanguageWriting').value);
spousePoints += getSpouseEducationPoints(spouseEducation);
spousePoints += getSpouseCanadianWorkExpPoints(spouseCanadianWorkExp);
spousePoints += getSpouseLanguageSkillPoints(spouseLanguageListeningCLB);
spousePoints += getSpouseLanguageSkillPoints(spouseLanguageSpeakingCLB);
spousePoints += getSpouseLanguageSkillPoints(spouseLanguageReadingCLB);
spousePoints += getSpouseLanguageSkillPoints(spouseLanguageWritingCLB);
}
totalCRS += spousePoints;
// — Skill Transferability Factors (Max 100 points) —
var skillTransferabilityPoints = 0;
var applicantEducationLevel = parseInt(applicantEducation);
var applicantCanadianWorkExpYears = parseInt(applicantCanadianWorkExp);
var foreignWorkExpYears = getForeignWorkExpPoints(foreignWorkExp); // 0, 1, 2, 3
var firstLanguageCLB = Math.max(applicantEnglishListeningCLB, applicantEnglishSpeakingCLB, applicantEnglishReadingCLB, applicantEnglishWritingCLB);
var secondLanguageCLB = Math.max(applicantFrenchListeningCLB, applicantFrenchSpeakingCLB, applicantFrenchReadingCLB, applicantFrenchWritingCLB);
var overallLanguageCLB = Math.max(firstLanguageCLB, secondLanguageCLB); // Use the higher CLB for transferability
// Education + Language (Max 50)
if (applicantEducationLevel >= 2 && applicantEducationLevel = 7 && overallLanguageCLB = 9) skillTransferabilityPoints += 25;
} else if (applicantEducationLevel >= 4) { // Bachelor's or higher
if (overallLanguageCLB >= 7 && overallLanguageCLB = 9) skillTransferabilityPoints += 50;
}
// Education + Canadian Work Experience (Max 50)
if (applicantEducationLevel >= 2 && applicantEducationLevel = 1 && applicantCanadianWorkExpYears = 3) skillTransferabilityPoints += 25;
} else if (applicantEducationLevel >= 4) { // Bachelor's or higher
if (applicantCanadianWorkExpYears >= 1 && applicantCanadianWorkExpYears = 3) skillTransferabilityPoints += 50;
}
// Foreign Work Experience + Language (Max 50)
if (foreignWorkExpYears >= 1 && foreignWorkExpYears = 7 && overallLanguageCLB = 9) skillTransferabilityPoints += 25;
} else if (foreignWorkExpYears >= 3) {
if (overallLanguageCLB >= 7 && overallLanguageCLB = 9) skillTransferabilityPoints += 50;
}
// Foreign Work Experience + Canadian Work Experience (Max 50)
if (foreignWorkExpYears >= 1 && foreignWorkExpYears = 1) skillTransferabilityPoints += 13;
else if (applicantCanadianWorkExpYears >= 2) skillTransferabilityPoints += 25;
} else if (foreignWorkExpYears >= 3) {
if (applicantCanadianWorkExpYears >= 1) skillTransferabilityPoints += 25;
else if (applicantCanadianWorkExpYears >= 2) skillTransferabilityPoints += 50;
}
// Cap skill transferability points at 100
skillTransferabilityPoints = Math.min(skillTransferabilityPoints, 100);
totalCRS += skillTransferabilityPoints;
// — Additional Points (Max 600 points) —
var additionalPoints = 0;
// PNP Nomination
if (document.getElementById('pnpNomination').checked) {
additionalPoints += 600;
}
// Arranged Employment
additionalPoints += parseInt(document.getElementById('arrangedEmployment').value);
// Canadian Post-Secondary Study
var canadianStudyYears = parseInt(canadianStudy);
if (canadianStudyYears === 1) additionalPoints += 15;
else if (canadianStudyYears === 2) additionalPoints += 30;
// Strong French Language Proficiency (CLB 7+ in all 4 French skills AND CLB 5+ in English)
var isFrenchCLB7Plus = (applicantFrenchListeningCLB >= 7 && applicantFrenchSpeakingCLB >= 7 && applicantFrenchReadingCLB >= 7 && applicantFrenchWritingCLB >= 7);
var isEnglishCLB5Plus = (applicantEnglishListeningCLB >= 5 && applicantEnglishSpeakingCLB >= 5 && applicantEnglishReadingCLB >= 5 && applicantEnglishWritingCLB >= 5);
var isEnglishCLB9Plus = (applicantEnglishListeningCLB >= 9 && applicantEnglishSpeakingCLB >= 9 && applicantEnglishReadingCLB >= 9 && applicantEnglishWritingCLB >= 9);
if (isFrenchCLB7Plus && isEnglishCLB5Plus) {
if (isEnglishCLB9Plus) {
additionalPoints += 50;
} else {
additionalPoints += 25;
}
}
totalCRS += additionalPoints;
// Display result
document.getElementById('crsScore').innerText = totalCRS;
document.getElementById('result').style.display = 'block';
}
// Initial call to set spouse section visibility
toggleSpouseSection();
Understanding Your CRS Score
Your Comprehensive Ranking System (CRS) score is a crucial factor in your journey to immigrate to Canada through Express Entry. It's calculated based on a combination of factors that reflect your human capital, skill transferability, and additional points.
Key Factors Influencing Your Score:
Core Human Capital: This includes your age, education level, official language proficiency (English and/or French), and Canadian work experience. These factors are highly weighted as they indicate your potential to integrate into the Canadian workforce and society.
Spouse or Common-law Partner Factors: If you apply with a spouse or common-law partner, their education, language proficiency, and Canadian work experience can also contribute to your overall score.
Skill Transferability Factors: These points are awarded for combinations of your education, foreign work experience, and language proficiency. They recognize how well your skills can be transferred to the Canadian job market.
Additional Points: Significant points can be gained through a Provincial Nominee Program (PNP) nomination (600 points), a valid job offer (arranged employment), Canadian post-secondary study, or strong French language proficiency.
What is a Good CRS Score?
The minimum CRS score required to receive an Invitation to Apply (ITA) varies with each Express Entry draw. Historically, scores have ranged from the low 400s to over 700 (especially for PNP-specific draws). While there's no "guaranteed" score, aiming for a score above 450-470 is generally considered competitive for Federal Skilled Worker Program draws without a PNP.
How to Improve Your CRS Score:
Improve Language Scores: Re-taking language tests (IELTS, CELPIP, TEF, TCF) to achieve higher CLB levels, especially CLB 9 or higher, can significantly boost your score.
Gain More Education: Pursuing another degree or diploma, particularly in Canada, can add points.
Gain More Work Experience: Accumulating more skilled work experience, especially Canadian work experience, is beneficial.
Provincial Nominee Programs (PNP): Research and apply for PNPs. A nomination guarantees 600 additional CRS points.
Job Offer: Securing a valid job offer from a Canadian employer can add 50 or 200 points.
French Language Proficiency: If you have strong French skills (CLB 7+ in all four abilities) and at least CLB 5 in English, you can gain additional points.
Regularly checking the official IRCC website for the latest draw results and program updates is recommended to stay informed about the competitive landscape.