{"id":23356,"date":"2026-08-25T19:32:33","date_gmt":"2026-08-25T16:02:33","guid":{"rendered":"https:\/\/avalvisa.com\/clb-converter-2\/"},"modified":"2026-08-25T19:32:33","modified_gmt":"2026-08-25T16:02:33","slug":"clb-converter","status":"publish","type":"page","link":"https:\/\/avalvisa.com\/en\/clb-converter\/","title":{"rendered":"IELTS, CELPIP &#038; PTE to CLB Converter"},"content":{"rendered":"<p>Convert your language test scores to <strong>CLB<\/strong> (English) or <strong>NCLC<\/strong> (French) instantly and for free \u2014 built on the official IRCC equivalency charts. This converter covers all five tests Canada accepts: <strong>IELTS General Training, CELPIP-General, PTE Core, TEF Canada and TCF Canada<\/strong>. Important: Canada ignores your overall band \u2014 each of the four skills converts separately, and <strong>your lowest skill is your CLB level<\/strong>.<\/p>\n<div id=\"av-clb\" dir=\"ltr\">\n<style>\n#av-clb{--red:#b4443c;--ink:#26262b;--grey:#6d675e;--line:#e2dccf;font-size:15.5px;line-height:1.8}\n#av-clb .clb-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:22px 24px;margin-bottom:18px}\n#av-clb select,#av-clb input{width:100%;padding:9px 12px;border:1px solid var(--line);border-radius:8px;font-size:14.5px;font-family:inherit;background:#fff;color:var(--ink)}\n#av-clb .clb-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-top:12px}\n#av-clb label{display:block;font-size:13px;font-weight:600;margin-bottom:4px}\n#av-clb .clb-badge{display:block;text-align:center;font-size:13px;font-weight:700;background:#f7f4ee;border:1px solid var(--line);border-radius:7px;padding:3px;margin-top:6px;color:var(--grey)}\n#av-clb .clb-badge.on{color:#3f7a55;border-color:#3f7a55}\n#av-clb .clb-result{text-align:center;margin-top:18px;padding:16px;background:#f7f4ee;border-radius:10px;display:none}\n#av-clb .clb-result .n{font-size:52px;font-weight:800;color:var(--red);line-height:1;font-variant-numeric:tabular-nums}\n#av-clb .clb-result .lbl{font-size:14px;color:var(--grey)}\n#av-clb .clb-result .note{font-size:13px;color:var(--grey);margin-top:6px}\n#av-clb .clb-cta{display:block;text-align:center;margin-top:14px;padding:12px;background:var(--red);color:#fff;border-radius:9px;font-weight:700;text-decoration:none;font-size:15px}\n#av-clb table{width:100%;border-collapse:collapse;font-size:14px;background:#fff;margin:8px 0 22px}\n#av-clb th{background:#26262b;color:#f2efe8;padding:8px 10px;font-size:12.5px;text-align:center}\n#av-clb td{border:1px solid var(--line);padding:7px 10px;text-align:center;font-variant-numeric:tabular-nums}\n#av-clb td:first-child{font-weight:700}\n#av-clb .tblwrap{overflow-x:auto}\n#av-clb h2{font-size:20px;margin:26px 0 6px}\n<\/style>\n<div class=\"clb-card\">\n  <label for=\"clb-test\">Your language test<\/label>\n  <select id=\"clb-test\">\n    <option value=\"ielts\" selected>IELTS General Training<\/option>\n    <option value=\"celpip\">CELPIP-General<\/option>\n    <option value=\"pte\">PTE Core<\/option>\n    <option value=\"tef\">TEF Canada<\/option>\n    <option value=\"tcf\">TCF Canada<\/option>\n  <\/select>\n  <div class=\"clb-row\" id=\"clb-inputs\"><\/div>\n  <div class=\"clb-result\" id=\"clb-result\">\n    <div class=\"lbl\">Your CLB level<\/div>\n    <div class=\"n\" id=\"clb-overall\">\u2014<\/div>\n    <div class=\"note\">Canada uses your LOWEST skill \u2014 the overall band does not count.<\/div>\n  <\/div>\n  <a class=\"clb-cta\" href=\"\/en\/crs-calculator\/\">Now calculate your full CRS score with these levels<\/a>\n<\/div>\n\n<h2>IELTS General Training<\/h2>\n<div class=\"tblwrap\"><table>\n<thead><tr><th>CLB<\/th><th>Speaking<\/th><th>Listening<\/th><th>Reading<\/th><th>Writing<\/th><\/tr><\/thead>\n<tbody>\n<tr><td>10+<\/td><td>7.5<\/td><td>8.5<\/td><td>8.0<\/td><td>7.5<\/td><\/tr>\n<tr><td>9<\/td><td>7.0<\/td><td>8.0<\/td><td>7.0<\/td><td>7.0<\/td><\/tr>\n<tr><td>8<\/td><td>6.5<\/td><td>7.5<\/td><td>6.5<\/td><td>6.5<\/td><\/tr>\n<tr><td>7<\/td><td>6.0<\/td><td>6.0<\/td><td>6.0<\/td><td>6.0<\/td><\/tr>\n<tr><td>6<\/td><td>5.5<\/td><td>5.5<\/td><td>5.0<\/td><td>5.5<\/td><\/tr>\n<tr><td>5<\/td><td>5.0<\/td><td>5.0<\/td><td>4.0<\/td><td>5.0<\/td><\/tr>\n<tr><td>4<\/td><td>4.0<\/td><td>4.5<\/td><td>3.5<\/td><td>4.0<\/td><\/tr>\n<\/tbody>\n<\/table><\/div>\n<h2>CELPIP-General<\/h2>\n<div class=\"tblwrap\"><table>\n<thead><tr><th>CLB<\/th><th>Speaking<\/th><th>Listening<\/th><th>Reading<\/th><th>Writing<\/th><\/tr><\/thead>\n<tbody>\n<tr><td>10+<\/td><td>10+<\/td><td>10+<\/td><td>10+<\/td><td>10+<\/td><\/tr>\n<tr><td>9<\/td><td>9<\/td><td>9<\/td><td>9<\/td><td>9<\/td><\/tr>\n<tr><td>8<\/td><td>8<\/td><td>8<\/td><td>8<\/td><td>8<\/td><\/tr>\n<tr><td>7<\/td><td>7<\/td><td>7<\/td><td>7<\/td><td>7<\/td><\/tr>\n<tr><td>6<\/td><td>6<\/td><td>6<\/td><td>6<\/td><td>6<\/td><\/tr>\n<tr><td>5<\/td><td>5<\/td><td>5<\/td><td>5<\/td><td>5<\/td><\/tr>\n<tr><td>4<\/td><td>4<\/td><td>4<\/td><td>4<\/td><td>4<\/td><\/tr>\n<\/tbody>\n<\/table><\/div>\n<h2>PTE Core<\/h2>\n<div class=\"tblwrap\"><table>\n<thead><tr><th>CLB<\/th><th>Speaking<\/th><th>Listening<\/th><th>Reading<\/th><th>Writing<\/th><\/tr><\/thead>\n<tbody>\n<tr><td>10+<\/td><td>89+<\/td><td>89+<\/td><td>88+<\/td><td>90+<\/td><\/tr>\n<tr><td>9<\/td><td>84\u201388<\/td><td>82\u201388<\/td><td>78\u201387<\/td><td>88\u201389<\/td><\/tr>\n<tr><td>8<\/td><td>76\u201383<\/td><td>71\u201381<\/td><td>69\u201377<\/td><td>79\u201387<\/td><\/tr>\n<tr><td>7<\/td><td>68\u201375<\/td><td>60\u201370<\/td><td>60\u201368<\/td><td>69\u201378<\/td><\/tr>\n<tr><td>6<\/td><td>59\u201367<\/td><td>50\u201359<\/td><td>51\u201359<\/td><td>60\u201368<\/td><\/tr>\n<tr><td>5<\/td><td>51\u201358<\/td><td>39\u201349<\/td><td>42\u201350<\/td><td>51\u201359<\/td><\/tr>\n<tr><td>4<\/td><td>42\u201350<\/td><td>28\u201338<\/td><td>33\u201341<\/td><td>41\u201350<\/td><\/tr>\n<\/tbody>\n<\/table><\/div>\n<h2>TEF Canada \u2014 NCLC<\/h2>\n<div class=\"tblwrap\"><table>\n<thead><tr><th>CLB<\/th><th>Speaking<\/th><th>Listening<\/th><th>Reading<\/th><th>Writing<\/th><\/tr><\/thead>\n<tbody>\n<tr><td>10+<\/td><td>393\u2013450<\/td><td>316\u2013360<\/td><td>263\u2013300<\/td><td>393\u2013450<\/td><\/tr>\n<tr><td>9<\/td><td>371\u2013392<\/td><td>298\u2013315<\/td><td>248\u2013262<\/td><td>371\u2013392<\/td><\/tr>\n<tr><td>8<\/td><td>349\u2013370<\/td><td>280\u2013297<\/td><td>233\u2013247<\/td><td>349\u2013370<\/td><\/tr>\n<tr><td>7<\/td><td>310\u2013348<\/td><td>249\u2013279<\/td><td>207\u2013232<\/td><td>310\u2013348<\/td><\/tr>\n<tr><td>6<\/td><td>271\u2013309<\/td><td>217\u2013248<\/td><td>181\u2013206<\/td><td>271\u2013309<\/td><\/tr>\n<tr><td>5<\/td><td>226\u2013270<\/td><td>181\u2013216<\/td><td>151\u2013180<\/td><td>226\u2013270<\/td><\/tr>\n<tr><td>4<\/td><td>181\u2013225<\/td><td>145\u2013180<\/td><td>121\u2013150<\/td><td>181\u2013225<\/td><\/tr>\n<\/tbody>\n<\/table><\/div>\n<h2>TCF Canada \u2014 NCLC<\/h2>\n<div class=\"tblwrap\"><table>\n<thead><tr><th>CLB<\/th><th>Speaking<\/th><th>Listening<\/th><th>Reading<\/th><th>Writing<\/th><\/tr><\/thead>\n<tbody>\n<tr><td>10+<\/td><td>16\u201320<\/td><td>549\u2013699<\/td><td>549\u2013699<\/td><td>16\u201320<\/td><\/tr>\n<tr><td>9<\/td><td>14\u201315<\/td><td>523\u2013548<\/td><td>524\u2013548<\/td><td>14\u201315<\/td><\/tr>\n<tr><td>8<\/td><td>12\u201313<\/td><td>503\u2013522<\/td><td>499\u2013523<\/td><td>12\u201313<\/td><\/tr>\n<tr><td>7<\/td><td>10\u201311<\/td><td>458\u2013502<\/td><td>453\u2013498<\/td><td>10\u201311<\/td><\/tr>\n<tr><td>6<\/td><td>7\u20139<\/td><td>398\u2013457<\/td><td>406\u2013452<\/td><td>7\u20139<\/td><\/tr>\n<tr><td>5<\/td><td>6<\/td><td>369\u2013397<\/td><td>375\u2013405<\/td><td>6<\/td><\/tr>\n<tr><td>4<\/td><td>4\u20135<\/td><td>331\u2013368<\/td><td>342\u2013374<\/td><td>4\u20135<\/td><\/tr>\n<\/tbody>\n<\/table><\/div>\n\n<script>\/* Avalvisa CRS engine \u2014 implements the official IRCC Comprehensive Ranking System grid\n * as published on canada.ca (page dated 2026-06-22; job-offer points removed 2025-03-25).\n * Pure functions, no DOM. Loaded by the [avalvisa_crs] shortcode; testable with node.\n *\/\nvar AvalCRS = (function () {\n  'use strict';\n\n  \/* ---------- test score -> CLB\/NCLC (official equivalency charts) ---------- *\/\n  \/\/ thresholds[clb] = minimum score for that level, per ability key s\/l\/r\/w\n  var EQUIV = {\n    ielts: {\n      s: { 10: 7.5, 9: 7.0, 8: 6.5, 7: 6.0, 6: 5.5, 5: 5.0, 4: 4.0 },\n      l: { 10: 8.5, 9: 8.0, 8: 7.5, 7: 6.0, 6: 5.5, 5: 5.0, 4: 4.5 },\n      r: { 10: 8.0, 9: 7.0, 8: 6.5, 7: 6.0, 6: 5.0, 5: 4.0, 4: 3.5 },\n      w: { 10: 7.5, 9: 7.0, 8: 6.5, 7: 6.0, 6: 5.5, 5: 5.0, 4: 4.0 }\n    },\n    pte: {\n      s: { 10: 89, 9: 84, 8: 76, 7: 68, 6: 59, 5: 51, 4: 42 },\n      l: { 10: 89, 9: 82, 8: 71, 7: 60, 6: 50, 5: 39, 4: 28 },\n      r: { 10: 88, 9: 78, 8: 69, 7: 60, 6: 51, 5: 42, 4: 33 },\n      w: { 10: 90, 9: 88, 8: 79, 7: 69, 6: 60, 5: 51, 4: 41 }\n    },\n    tef: {\n      s: { 10: 393, 9: 371, 8: 349, 7: 310, 6: 271, 5: 226, 4: 181 },\n      l: { 10: 316, 9: 298, 8: 280, 7: 249, 6: 217, 5: 181, 4: 145 },\n      r: { 10: 263, 9: 248, 8: 233, 7: 207, 6: 181, 5: 151, 4: 121 },\n      w: { 10: 393, 9: 371, 8: 349, 7: 310, 6: 271, 5: 226, 4: 181 }\n    },\n    tcf: {\n      s: { 10: 16, 9: 14, 8: 12, 7: 10, 6: 7, 5: 6, 4: 4 },\n      l: { 10: 549, 9: 523, 8: 503, 7: 458, 6: 398, 5: 369, 4: 331 },\n      r: { 10: 549, 9: 524, 8: 499, 7: 453, 6: 406, 5: 375, 4: 342 },\n      w: { 10: 16, 9: 14, 8: 12, 7: 10, 6: 7, 5: 6, 4: 4 }\n    }\n  };\n\n  function toCLB(test, ability, score) {\n    if (test === 'celpip') {\n      var v = Math.floor(Number(score));\n      if (isNaN(v) || v < 4) return 0;\n      return Math.min(v, 10);\n    }\n    if (test === 'clb' || test === 'nclc') {\n      var d = Math.floor(Number(score));\n      if (isNaN(d) || d < 4) return 0;\n      return Math.min(d, 10);\n    }\n    var tab = EQUIV[test];\n    if (!tab) return 0;\n    var th = tab[ability];\n    var n = Number(score);\n    if (isNaN(n)) return 0;\n    for (var clb = 10; clb >= 4; clb--) {\n      if (n >= th[clb]) return clb;\n    }\n    return 0;\n  }\n\n  \/* ---------- core\/human capital ---------- *\/\n  \/\/ age -> [with spouse, without spouse]\n  var AGE = { 18: [90, 99], 19: [95, 105], 30: [95, 105], 31: [90, 99], 32: [85, 94], 33: [80, 88], 34: [75, 83], 35: [70, 77], 36: [65, 72], 37: [60, 66], 38: [55, 61], 39: [50, 55], 40: [45, 50], 41: [35, 39], 42: [25, 28], 43: [15, 17], 44: [5, 6] };\n  function agePoints(age, married) {\n    var a = Math.floor(Number(age));\n    if (isNaN(a) || a <= 17 || a >= 45) return 0;\n    var row = (a >= 20 && a <= 29) ? [100, 110] : AGE[a];\n    if (!row) return 0;\n    return married ? row[0] : row[1];\n  }\n\n  \/\/ education keys and [with, without] points\n  var EDU = {\n    none:       [0, 0],\n    secondary:  [28, 30],\n    oneyear:    [84, 90],\n    twoyear:    [91, 98],\n    bachelor:   [112, 120],\n    twoplus:    [119, 128],\n    masters:    [126, 135],\n    phd:        [140, 150]\n  };\n  function eduPoints(edu, married) {\n    var row = EDU[edu] || [0, 0];\n    return married ? row[0] : row[1];\n  }\n\n  \/\/ first official language, per ability CLB -> [with, without]\n  function firstLangAbility(clb, married) {\n    var p;\n    if (clb < 4) p = [0, 0];\n    else if (clb <= 5) p = [6, 6];\n    else if (clb === 6) p = [8, 9];\n    else if (clb === 7) p = [16, 17];\n    else if (clb === 8) p = [22, 23];\n    else if (clb === 9) p = [29, 31];\n    else p = [32, 34];\n    return married ? p[0] : p[1];\n  }\n\n  \/\/ second official language, per ability (cap applied by caller)\n  function secondLangAbility(clb) {\n    if (clb <= 4) return 0;\n    if (clb <= 6) return 1;\n    if (clb <= 8) return 3;\n    return 6;\n  }\n\n  \/\/ Canadian work experience years -> [with, without]\n  var CANEXP = { 0: [0, 0], 1: [35, 40], 2: [46, 53], 3: [56, 64], 4: [63, 72], 5: [70, 80] };\n  function canExpPoints(years, married) {\n    var y = Math.min(Math.max(Math.floor(Number(years) || 0), 0), 5);\n    var row = CANEXP[y];\n    return married ? row[0] : row[1];\n  }\n\n  \/* ---------- spouse factors ---------- *\/\n  var SPOUSE_EDU = { none: 0, secondary: 2, oneyear: 6, twoyear: 7, bachelor: 8, twoplus: 9, masters: 10, phd: 10 };\n  function spouseLangAbility(clb) {\n    if (clb <= 4) return 0;\n    if (clb <= 6) return 1;\n    if (clb <= 8) return 3;\n    return 5;\n  }\n  var SPOUSE_CANEXP = { 0: 0, 1: 5, 2: 7, 3: 8, 4: 9, 5: 10 };\n\n  \/* ---------- skill transferability ---------- *\/\n  \/\/ education row group: 0 = secondary or less, 1 = one-year+ credential, 2 = two-or-more \/ masters \/ phd\n  function eduTransferRow(edu) {\n    if (edu === 'none' || edu === 'secondary') return 0;\n    if (edu === 'oneyear' || edu === 'twoyear' || edu === 'bachelor') return 1;\n    return 2; \/\/ twoplus, masters, phd\n  }\n  \/\/ lang tier from first-language CLBs: 2 = all >= 9, 1 = all >= 7, 0 = otherwise\n  function langTier(clbs) {\n    var min = Math.min(clbs.s, clbs.l, clbs.r, clbs.w);\n    if (min >= 9) return 2;\n    if (min >= 7) return 1;\n    return 0;\n  }\n  var TRANSFER_PTS = [[0, 0], [13, 25], [25, 50]]; \/\/ [row][tierIndex] where tierIndex 0 = colA, 1 = colB\n\n  \/* ---------- main ----------\n   * profile = {\n   *   married: bool (spouse accompanying and not citizen\/PR),\n   *   age: number,\n   *   edu: key of EDU,\n   *   canadianEdu: 'none'|'short'|'long'   (1-2yr \/ 3+yr Canadian credential),\n   *   eng: {s,l,r,w} CLB numbers or null,\n   *   fr:  {s,l,r,w} NCLC numbers or null,\n   *   canExpYears: 0..5,\n   *   foreignExpYears: 0 | 1 | 3   (0 none, 1 = 1-2yrs, 3 = 3+yrs),\n   *   cert: bool (certificate of qualification),\n   *   pnp: bool, sibling: bool,\n   *   spouse: { edu: key, lang: {s,l,r,w} CLB or null, canExpYears: 0..5 } | null\n   * }\n   *\/\n  function scoreWithAssignment(p, first, second) {\n    var married = !!p.married;\n    var b = {};\n\n    b.age = agePoints(p.age, married);\n    b.edu = eduPoints(p.edu, married);\n\n    b.lang1 = 0;\n    ['s', 'l', 'r', 'w'].forEach(function (k) { b.lang1 += firstLangAbility(first[k], married); });\n\n    b.lang2 = 0;\n    if (second) {\n      ['s', 'l', 'r', 'w'].forEach(function (k) { b.lang2 += secondLangAbility(second[k]); });\n      b.lang2 = Math.min(b.lang2, married ? 22 : 24);\n    }\n\n    b.canExp = canExpPoints(p.canExpYears, married);\n    b.core = b.age + b.edu + b.lang1 + b.lang2 + b.canExp;\n\n    \/\/ spouse\n    b.spouse = 0;\n    if (married && p.spouse) {\n      var sp = p.spouse;\n      var se = SPOUSE_EDU[sp.edu] || 0;\n      var sl = 0;\n      if (sp.lang) { ['s', 'l', 'r', 'w'].forEach(function (k) { sl += spouseLangAbility(sp.lang[k]); }); }\n      sl = Math.min(sl, 20);\n      var sc = SPOUSE_CANEXP[Math.min(Math.max(Math.floor(Number(sp.canExpYears) || 0), 0), 5)] || 0;\n      b.spouse = Math.min(se + sl + sc, 40);\n    }\n\n    \/\/ transferability \u2014 language conditions use the FIRST official language\n    var tier = langTier(first);\n    var eduRow = eduTransferRow(p.edu);\n    var c1 = tier > 0 ? TRANSFER_PTS[eduRow][tier - 1] : 0;\n    var canY = Math.floor(Number(p.canExpYears) || 0);\n    var c2 = 0;\n    if (canY >= 2) c2 = TRANSFER_PTS[eduRow][1];\n    else if (canY === 1) c2 = TRANSFER_PTS[eduRow][0];\n    var eduTransfer = Math.min(c1 + c2, 50);\n\n    var fRow = p.foreignExpYears >= 3 ? 2 : (p.foreignExpYears >= 1 ? 1 : 0);\n    var c3 = tier > 0 ? TRANSFER_PTS[fRow][tier - 1] : 0;\n    var c4 = 0;\n    if (canY >= 2) c4 = TRANSFER_PTS[fRow][1];\n    else if (canY === 1) c4 = TRANSFER_PTS[fRow][0];\n    var foreignTransfer = Math.min(c3 + c4, 50);\n\n    var c5 = 0;\n    if (p.cert) {\n      var min = Math.min(first.s, first.l, first.r, first.w);\n      if (min >= 7) c5 = 50;\n      else if (min >= 5) c5 = 25;\n    }\n    b.transfer = Math.min(eduTransfer + foreignTransfer + c5, 100);\n\n    \/\/ additional\n    b.additional = 0;\n    var det = [];\n    if (p.sibling) { b.additional += 15; det.push('sibling'); }\n    \/\/ French bonus is based on the FRENCH abilities regardless of assignment\n    if (p.fr) {\n      var fmin = Math.min(p.fr.s, p.fr.l, p.fr.r, p.fr.w);\n      if (fmin >= 7) {\n        var emin = p.eng ? Math.min(p.eng.s, p.eng.l, p.eng.r, p.eng.w) : 0;\n        if (emin >= 5) { b.additional += 50; det.push('french50'); }\n        else { b.additional += 25; det.push('french25'); }\n      }\n    }\n    if (p.canadianEdu === 'short') { b.additional += 15; det.push('canEdu15'); }\n    else if (p.canadianEdu === 'long') { b.additional += 30; det.push('canEdu30'); }\n    if (p.pnp) { b.additional += 600; det.push('pnp'); }\n    b.additional = Math.min(b.additional, 600);\n    b.additionalDetail = det;\n\n    b.total = Math.min(b.core + b.spouse + b.transfer + b.additional, 1200);\n    return b;\n  }\n\n  function calculate(p) {\n    var zero = { s: 0, l: 0, r: 0, w: 0 };\n    var eng = p.eng || null;\n    var fr = p.fr || null;\n    if (!eng && !fr) {\n      var bb = scoreWithAssignment(p, zero, null);\n      bb.firstLang = 'none';\n      return bb;\n    }\n    if (eng && !fr) { var r1 = scoreWithAssignment(p, eng, null); r1.firstLang = 'en'; return r1; }\n    if (fr && !eng) { var r2 = scoreWithAssignment(p, fr, null); r2.firstLang = 'fr'; return r2; }\n    var asEn = scoreWithAssignment(p, eng, fr);\n    var asFr = scoreWithAssignment(p, fr, eng);\n    if (asFr.total > asEn.total) { asFr.firstLang = 'fr'; return asFr; }\n    asEn.firstLang = 'en';\n    return asEn;\n  }\n\n  return { calculate: calculate, toCLB: toCLB, EQUIV: EQUIV };\n})();\nif (typeof module !== 'undefined' && module.exports) { module.exports = AvalCRS; }\n<\/script>\n<script>\n(function () {\n  var T = {\"pick\":\"Your language test\",\"s\":\"Speaking\",\"l\":\"Listening\",\"r\":\"Reading\",\"w\":\"Writing\",\"overall\":\"Your CLB level\",\"overall_note\":\"Canada uses your LOWEST skill \u2014 the overall band does not count.\",\"per\":\"Per skill\",\"calc_link\":\"Now calculate your full CRS score with these levels\",\"th\":[\"CLB\",\"Speaking\",\"Listening\",\"Reading\",\"Writing\"]};\n  var $ = function (id) { return document.getElementById(id); };\n  var AB = ['s', 'l', 'r', 'w'];\n  function build(test) {\n    var host = $('clb-inputs');\n    var html = '';\n    AB.forEach(function (ab) {\n      var input;\n      if (test === 'ielts') {\n        var o = '<option value=\"\">\u2014<\/option>';\n        for (var v = 9; v >= 3; v -= 0.5) { o += '<option value=\"' + v.toFixed(1) + '\">' + v.toFixed(1) + '<\/option>'; }\n        input = '<select id=\"clb-' + ab + '\">' + o + '<\/select>';\n      } else if (test === 'celpip') {\n        var o2 = '<option value=\"\">\u2014<\/option>';\n        for (var c = 12; c >= 3; c--) { o2 += '<option value=\"' + c + '\">' + c + '<\/option>'; }\n        input = '<select id=\"clb-' + ab + '\">' + o2 + '<\/select>';\n      } else {\n        input = '<input type=\"number\" id=\"clb-' + ab + '\" min=\"0\" max=\"999\">';\n      }\n      html += '<div><label for=\"clb-' + ab + '\">' + T[ab] + '<\/label>' + input + '<span class=\"clb-badge\" id=\"clb-' + ab + '-b\">\u2014<\/span><\/div>';\n    });\n    host.innerHTML = html;\n    AB.forEach(function (ab) {\n      var el = $('clb-' + ab);\n      ['input', 'change'].forEach(function (ev) { el.addEventListener(ev, update); });\n    });\n    update();\n  }\n  function update() {\n    var test = $('clb-test').value;\n    var isFr = (test === 'tef' || test === 'tcf');\n    var lbl = isFr ? 'NCLC' : 'CLB';\n    var vals = [], all = true;\n    AB.forEach(function (ab) {\n      var v = $('clb-' + ab).value;\n      var b = $('clb-' + ab + '-b');\n      if (v === '') { b.textContent = '\u2014'; b.classList.remove('on'); all = false; return; }\n      var clb = AvalCRS.toCLB(test, ab, v);\n      b.textContent = lbl + ' ' + (clb || '<4');\n      b.classList.toggle('on', clb >= 7);\n      vals.push(clb);\n    });\n    var res = $('clb-result');\n    if (all && vals.length === 4) {\n      var overall = Math.min.apply(null, vals);\n      $('clb-overall').textContent = lbl + ' ' + (overall || '<4');\n      window.avClbLevel = lbl + ' ' + (overall || '<4');\n      res.style.display = 'block';\n    } else { res.style.display = 'none'; }\n  }\n  $('clb-test').addEventListener('change', function () { build(this.value); });\n  build('ielts');\n})();\n<\/script>\n<div class=\"avc-note\" style=\"background:#f5f1e9;border:1px solid #e2d9c8;border-radius:10px;padding:16px 18px;margin-top:16px\">\n  <div style=\"font-weight:700;font-size:15px;margin-bottom:6px\">Email me my CLB result and the next steps<\/div>\n  <div style=\"display:flex;gap:8px;flex-wrap:wrap\">\n    <input type=\"email\" id=\"avclb-email\" placeholder=\"Your email\" style=\"flex:1;min-width:200px;padding:10px 12px;border:1px solid #cfc5b2;border-radius:8px;font-size:14px\" dir=\"ltr\">\n    <button type=\"button\" id=\"avclb-go\" style=\"padding:10px 24px;background:#b4443c;color:#fff;border:0;border-radius:8px;font-weight:700;cursor:pointer;font-family:inherit\">Send<\/button>\n  <\/div>\n  <div id=\"avclb-msg\" style=\"margin-top:8px;font-size:13.5px;color:#3f7a55;min-height:1em\"><\/div>\n<\/div>\n<script>\n(function(){\n  var b = document.getElementById('avclb-go');\n  if (!b) return;\n  b.addEventListener('click', function(){\n    var em = document.getElementById('avclb-email').value;\n    var m  = document.getElementById('avclb-msg');\n    fetch(\"https:\\\/\\\/avalvisa.com\\\/en\\\/wp-json\\\/avalvisa\\\/v1\\\/subscribe\", {\n      method:'POST', headers:{'Content-Type':'application\/json'},\n      body: JSON.stringify({ email: em, lang: \"en\", source: 'clb-tool', note: (window.avClbLevel || 'CLB'), website: '' })\n    }).then(function(r){ return r.json(); }).then(function(d){\n      m.textContent = d.msg || '';\n      m.style.color = d.ok ? '#3f7a55' : '#b4443c';\n    }).catch(function(){ m.textContent = '\u2026'; m.style.color = '#b4443c'; });\n  });\n})();\n<\/script>\n<\/div>\n\n<h2>Minimum CLB by immigration program<\/h2>\n<ul>\n<li><strong>Express Entry \u2014 Federal Skilled Worker (FSW):<\/strong> CLB 7 minimum in all four skills.<\/li>\n<li><strong>Canadian Experience Class (CEC):<\/strong> CLB 7 for TEER 0 and 1 occupations; CLB 5 for TEER 2 and 3.<\/li>\n<li><strong>Federal Skilled Trades (FST):<\/strong> CLB 5 in speaking and listening; CLB 4 in reading and writing.<\/li>\n<li><strong>French-language Express Entry rounds:<\/strong> NCLC 7 in all four French skills \u2014 recently the lowest cut-offs in the pool.<\/li>\n<\/ul>\n<p>Once you know your CLB, calculate your full score with our <a href=\"https:\/\/avalvisa.com\/en\/crs-calculator\/\">Express Entry CRS calculator<\/a> and compare it against the <a href=\"https:\/\/avalvisa.com\/en\/express-entry-draws\/\">latest draw cut-offs<\/a>.<\/p>\n<h2>What is CLB?<\/h2>\n<p>The Canadian Language Benchmark is Canada&#8217;s official standard for measuring immigrants&#8217; English ability; its French equivalent is the NCLC. Every immigration program defines its language requirements in CLB\/NCLC levels, not raw test scores.<\/p>\n<h2>Does the overall IELTS band count?<\/h2>\n<p>No. IRCC converts each skill separately and your lowest skill sets your level. With 7.0\/7.0\/7.0\/6.0 you are not CLB 8 \u2014 and CLB 9 requires listening 8.0, not 7.0.<\/p>\n<h2>Is IELTS Academic accepted for immigration?<\/h2>\n<p>No \u2014 for immigration programs including Express Entry, only <strong>IELTS General Training<\/strong> is accepted. The Academic module is for study admissions only.<\/p>\n<p><em>Source: official IRCC language test equivalency charts \u2014 2026 update.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Convert your language test scores to CLB (English) or NCLC (French) instantly and for free \u2014 built on the official IRCC equivalency charts. This converter covers all five tests Canada accepts: IELTS General Training, CELPIP-General, PTE Core, TEF Canada and TCF Canada. Important: Canada ignores your overall band \u2014 each of the four skills converts [&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-23356","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/avalvisa.com\/en\/wp-json\/wp\/v2\/pages\/23356","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/avalvisa.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/avalvisa.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/avalvisa.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/avalvisa.com\/en\/wp-json\/wp\/v2\/comments?post=23356"}],"version-history":[{"count":0,"href":"https:\/\/avalvisa.com\/en\/wp-json\/wp\/v2\/pages\/23356\/revisions"}],"wp:attachment":[{"href":"https:\/\/avalvisa.com\/en\/wp-json\/wp\/v2\/media?parent=23356"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}