{"id":476,"date":"2026-10-01T01:02:40","date_gmt":"2026-10-01T05:02:40","guid":{"rendered":"https:\/\/passcontractorexam.com\/articles\/?p=476"},"modified":"2026-10-03T03:33:07","modified_gmt":"2026-10-03T07:33:07","slug":"florida-contractor-license-types","status":"publish","type":"post","link":"https:\/\/passcontractorexam.com\/articles\/florida-contractor-license-types\/","title":{"rendered":"Florida Contractor License Types: Every Category Explained"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>Florida contractor license types split into two divisions under Florida Statute 489.105: Division I covers general, building and residential contractors, while Division II covers twelve trade categories plus a specialty contractor catch all with 21 narrower trades in its own rule. Electrical licensing sits under a separate board entirely.<\/strong><\/p>\n\n\n\n<div class=\"msq-audio\" data-article=\"florida-contractor-license-types\" data-minutes=\"11\">\n<style>.msq-audio{margin:1.25em 0 1.75em;padding:16px 18px;background:#F3F1EC;border:1px solid #D9D3C7;border-radius:12px}\n.msq-audio-lead{margin:0 0 8px;font-size:.95em}.msq-audio audio{width:100%;margin:0 0 12px;display:block}\n.msq-toc-title{margin:0 0 6px;font-weight:700}.msq-toc ol{margin:0;padding:0;list-style:none}\n.msq-toc li{display:flex;gap:10px;align-items:center;padding:6px 6px;border-bottom:1px solid #D9D3C7;border-radius:8px}\n.msq-toc li:last-child{border-bottom:0}.msq-toc li.is-active{background:#fff}\n.msq-toc-play{flex:0 0 auto;width:30px;height:30px;border-radius:50%;border:0;background:#24405E;color:#fff;font:inherit;font-size:.72em;line-height:30px;padding:0;cursor:pointer}\n.msq-toc-play.is-playing{background:#C4540E}\n.msq-toc-time{flex:0 0 auto;min-width:3.1em;font-variant-numeric:tabular-nums;color:#4C5561;font-size:.9em}\n.msq-toc a{color:#1B1F24;text-decoration:none;line-height:1.35}.msq-toc li.is-active a{font-weight:700;color:#24405E}\n.msq-audio-note{margin:10px 0 0;font-size:.82em;color:#4C5561}\nh2.wp-block-heading[id]{scroll-margin-top:24px}\n.msq-hplay{display:inline-block;vertical-align:middle;width:26px;height:26px;margin:0 0 0 10px;border-radius:50%;border:0;background:#24405E;cursor:pointer;padding:0;position:relative;top:-2px}\n.msq-hplay::before{content:'\u25b6\ufe0e';display:block;color:#fff;font-size:11px;line-height:26px;text-align:center}\n.msq-hplay.is-playing{background:#C4540E}.msq-hplay.is-playing::before{content:'\u2016';font-size:13px;font-weight:700}\n.msq-bar{position:fixed;left:0;right:0;bottom:0;z-index:9000;display:flex;align-items:center;gap:10px;padding:8px 12px;padding-bottom:calc(8px + env(safe-area-inset-bottom));background:#FFFFFF;border-top:1px solid #D9D3C7;box-shadow:0 -4px 16px rgba(0,0,0,.08);font-size:.92em;color:#1B1F24;transition:transform .2s ease}\n.msq-bar.is-hidden{transform:translateY(130%)}\n.msq-bar-play{display:inline-flex;align-items:center;gap:8px;border:0;border-radius:999px;background:#24405E;color:#fff;font:inherit;font-weight:700;padding:8px 14px 8px 12px;cursor:pointer;white-space:nowrap}\n.msq-bar-play.is-playing{background:#C4540E}\n.msq-bar-icon::before{content:'\u25b6\ufe0e';font-size:12px}.msq-bar-play.is-playing .msq-bar-icon::before{content:'\u2016';font-size:14px;font-weight:700}\n.msq-bar-chapter{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.msq-bar-time{flex:0 0 auto;font-variant-numeric:tabular-nums;color:#4C5561;font-size:.9em}\n.msq-bar-rate,.msq-bar-close{flex:0 0 auto;border:1px solid #D9D3C7;background:#fff;color:#1B1F24;font:inherit;font-size:.85em;line-height:1;border-radius:8px;padding:7px 9px;cursor:pointer}\n.msq-bar-close::before{content:'\u2715'}\n.msq-bar.msq-bar-pill{left:auto;right:14px;bottom:14px;padding:6px;padding-bottom:6px;border:1px solid #D9D3C7;border-radius:999px;box-shadow:0 6px 20px rgba(0,0,0,.15)}\n.msq-bar.msq-bar-pill .msq-bar-chapter,.msq-bar.msq-bar-pill .msq-bar-time,.msq-bar.msq-bar-pill .msq-bar-rate{display:none}\nbody.msq-has-bar{padding-bottom:76px}\n@media (max-width:600px){.msq-bar-time{display:none}.msq-bar{gap:8px;padding-left:10px;padding-right:10px}}\n.msq-s.msq-now{background:#F3F1EC;box-shadow:0 2px 0 #24405E;border-radius:2px}\ntr.msq-now td,tr.msq-now th{background:#F3F1EC;box-shadow:inset 0 -2px 0 #24405E}\n@media (hover:hover){.msq-s,tr[data-i]{cursor:pointer}.msq-s:hover{background:#F3F1EC}}<\/style>\n<script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@type\":\"AudioObject\",\"@id\":\"https:\/\/passcontractorexam.com\/articles\/florida-contractor-license-types\/#audio\",\"name\":\"Florida Contractor License Types: Every Category Explained, read aloud\",\"description\":\"Synthetic voice reading of the article, recorded 1 October 2026.\",\"contentUrl\":\"https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/10\/florida-contractor-license-types-audio-202610011038.mp3\",\"encodingFormat\":\"audio\/mpeg\",\"duration\":\"PT11M17S\",\"uploadDate\":\"2026-10-01\",\"inLanguage\":\"en-US\",\"isAccessibleForFree\":true,\"mainEntityOfPage\":\"https:\/\/passcontractorexam.com\/articles\/florida-contractor-license-types\/\",\"hasPart\":[{\"@type\":\"Clip\",\"name\":\"Florida Contractor License Types: Every Category Explained\",\"startOffset\":0,\"endOffset\":42},{\"@type\":\"Clip\",\"name\":\"What are the two divisions in Florida contractor licensing?\",\"startOffset\":42,\"endOffset\":154,\"url\":\"https:\/\/passcontractorexam.com\/articles\/florida-contractor-license-types\/#what-are-the-two-divisions-in-florida-contractor-licensing\"},{\"@type\":\"Clip\",\"name\":\"What is the difference between a certified and a registered license?\",\"startOffset\":154,\"endOffset\":214,\"url\":\"https:\/\/passcontractorexam.com\/articles\/florida-contractor-license-types\/#what-is-the-difference-between-a-certified-and-a-registered-license\"},{\"@type\":\"Clip\",\"name\":\"What are the Division II trade categories?\",\"startOffset\":214,\"endOffset\":386,\"url\":\"https:\/\/passcontractorexam.com\/articles\/florida-contractor-license-types\/#what-are-the-division-ii-trade-categories\"},{\"@type\":\"Clip\",\"name\":\"What is a specialty contractor license, and how many categories exist?\",\"startOffset\":386,\"endOffset\":545,\"url\":\"https:\/\/passcontractorexam.com\/articles\/florida-contractor-license-types\/#what-is-a-specialty-contractor-license-and-how-many-categories-exist\"},{\"@type\":\"Clip\",\"name\":\"Why isn't electrical contracting regulated by the same board?\",\"startOffset\":545,\"endOffset\":604,\"url\":\"https:\/\/passcontractorexam.com\/articles\/florida-contractor-license-types\/#why-isnt-electrical-contracting-regulated-by-the-same-board\"},{\"@type\":\"Clip\",\"name\":\"Which license should you actually apply for?\",\"startOffset\":604,\"endOffset\":677,\"url\":\"https:\/\/passcontractorexam.com\/articles\/florida-contractor-license-types\/#which-license-should-you-actually-apply-for\"}],\"contentSize\":\"4.7 MB\"}<\/script>\n<p class=\"msq-audio-lead\"><strong>Listen to this article<\/strong>, about 11 minutes. A synthetic voice reads the article and announces each section title as it begins; tables are read row by row and the questions at the end are left out.<\/p>\n<audio class=\"msq-audio-player\" controls preload=\"metadata\" src=\"https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/10\/florida-contractor-license-types-audio-202610011038.mp3\"><\/audio>\n<nav class=\"msq-toc\" aria-label=\"In this article\"><p class=\"msq-toc-title\">In this article<\/p>\n<ol>\n<li data-start=\"0.0\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"0.0\" aria-label=\"Play from: Florida Contractor License Types: Every Category Explained\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">0:00<\/span><a href=\"#top\">Florida Contractor License Types: Every Category Explained<\/a><\/li>\n<li data-start=\"41.94\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"41.94\" aria-label=\"Play from: What are the two divisions in Florida contractor licensing?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">0:42<\/span><a href=\"#what-are-the-two-divisions-in-florida-contractor-licensing\">What are the two divisions in Florida contractor licensing?<\/a><\/li>\n<li data-start=\"153.6\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"153.6\" aria-label=\"Play from: What is the difference between a certified and a registered license?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">2:34<\/span><a href=\"#what-is-the-difference-between-a-certified-and-a-registered-license\">What is the difference between a certified and a registered license?<\/a><\/li>\n<li data-start=\"213.9\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"213.9\" aria-label=\"Play from: What are the Division II trade categories?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">3:34<\/span><a href=\"#what-are-the-division-ii-trade-categories\">What are the Division II trade categories?<\/a><\/li>\n<li data-start=\"386.12\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"386.12\" aria-label=\"Play from: What is a specialty contractor license, and how many categories exist?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">6:26<\/span><a href=\"#what-is-a-specialty-contractor-license-and-how-many-categories-exist\">What is a specialty contractor license, and how many categories exist?<\/a><\/li>\n<li data-start=\"545.26\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"545.26\" aria-label=\"Play from: Why isn&#x27;t electrical contracting regulated by the same board?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">9:05<\/span><a href=\"#why-isnt-electrical-contracting-regulated-by-the-same-board\">Why isn&#x27;t electrical contracting regulated by the same board?<\/a><\/li>\n<li data-start=\"603.88\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"603.88\" aria-label=\"Play from: Which license should you actually apply for?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">10:04<\/span><a href=\"#which-license-should-you-actually-apply-for\">Which license should you actually apply for?<\/a><\/li>\n<\/ol><\/nav>\n<p class=\"msq-audio-note\">Recorded 1 October 2026 from the article as published that day. Press a chapter to jump there; the highlighted line is what is playing. A play button sits beside every section heading, and once you scroll past this player a bar at the bottom of the screen keeps the controls in reach. Tap or click any sentence to hear the reading start from there.<\/p>\n<script>var MSQ_SENT = [[0.0,\"h\",\"floridacontractorlicense\",51],[4.44,\"p\",\"floridacontractorlicense\",236],[25.48,\"p\",\"electricallicensingsitsu\",50],[28.96,\"p\",\"onthispagethefulldivisio\",172],[41.94,\"h\",\"whatarethetwodivisionsin\",50],[44.58,\"p\",\"everycontractorlicenseth\",127],[56.94,\"p\",\"divisioniisthethreelicen\",72],[63.34,\"p\",\"divisioniiiseverythingde\",181],[75.7,\"t\",\"generalcontractorcgc\",69],[90.94,\"t\",\"buildingcontractorcbc\",102],[105.38,\"t\",\"residentialcontractorcrc\",99],[126.34,\"p\",\"thethreedivisionilicense\",106],[134.74,\"p\",\"ifyouonlyeverbuildhouses\",203],[153.6,\"h\",\"whatisthedifferencebetwe\",57],[157.48,\"p\",\"divisionandtradedecidewh\",37],[160.08,\"p\",\"certifiedagainstregister\",38],[162.96,\"p\",\"acertifiedcontractorhold\",152],[172.6,\"p\",\"aregisteredcontractorist\",152],[184.2,\"p\",\"bothroutesexistateveryli\",73],[191.64,\"p\",\"thissplitmattersmorethan\",124],[200.2,\"p\",\"ourdedicatedcomparisonof\",198],[213.9,\"h\",\"whatarethedivisioniitrad\",35],[216.1,\"p\",\"divisioniicoversatradeor\",61],[220.74,\"p\",\"fourteencategoriesarenam\",160],[230.42,\"t\",\"sheetmetal\",93],[241.1,\"t\",\"roofing\",104],[250.9,\"t\",\"airconditioningclassa\",89],[259.14,\"t\",\"airconditioningclassb\",82],[269.78,\"t\",\"airconditioningclassc\",101],[279.34,\"t\",\"mechanical\",79],[290.54,\"t\",\"swimmingpoolspacommercia\",95],[300.46,\"t\",\"swimmingpoolsparesidenti\",91],[311.26,\"t\",\"swimmingpoolspaservicing\",90],[320.9,\"t\",\"plumbing\",85],[329.58,\"t\",\"undergroundutilityandexc\",98],[340.42,\"t\",\"solar\",78],[348.5,\"t\",\"pollutantstoragesystems\",82],[356.22,\"t\",\"specialtycontractor\",95],[366.46,\"p\",\"electricalisnotinthistab\",35],[369.58,\"p\",\"thenextsectionexplainswh\",25],[370.86,\"p\",\"airconditioningisalsothe\",189],[386.12,\"h\",\"whatisaspecialtycontract\",58],[390.48,\"p\",\"thefourteenthdivisioniic\",73],[396.08,\"p\",\"ithandsthecilbrulemaking\",114],[409.64,\"p\",\"thatiswhythecountofspeci\",121],[417.76,\"p\",\"aspecialtycontractormean\",136],[426.68,\"p\",\"onaugust282024thecilbcon\",191],[441.48,\"p\",\"rule61g415100certifiedsp\",403],[471.48,\"p\",\"twooldercategoriesundert\",192],[485.88,\"p\",\"sowhenapagesaysfloridaha\",117],[495.16,\"p\",\"thecurrentdatedcountunde\",112],[505.48,\"p\",\"theconfusionthiscreatesi\",40],[508.16,\"p\",\"onecontractorwith35years\",351],[532.92,\"p\",\"itisoneaccountnotarulebu\",167],[545.26,\"h\",\"whyisntelectricalcontrac\",51],[548.62,\"p\",\"electricalandalarmsystem\",194],[568.62,\"p\",\"theeclboperatesunderitso\",101],[577.9,\"p\",\"thetwoboardsappointajoin\",271],[597.26,\"p\",\"ourguidetothefloridaelec\",82],[603.88,\"h\",\"whichlicenseshouldyouact\",37],[606.08,\"p\",\"passcontractorexamcomisa\",49],[610.24,\"p\",\"itisnotaffiliatedwithand\",185],[626.0,\"p\",\"pickbythebroadestworkyou\",168],[636.24,\"p\",\"onceyouknowwhichcategory\",307],[660.92,\"p\",\"whichevercategoryyouhold\",73],[666.32,\"p\",\"buildingorcontractingout\",136]];\n(function(){\n  function init(){\n  var root = document.querySelector('.msq-audio'); if (!root) { return; }\n  var audio = root.querySelector('audio'), items = Array.prototype.slice.call(root.querySelectorAll('.msq-toc li'));\n  var starts = items.map(function(li){ return parseFloat(li.getAttribute('data-start')) || 0; });\n  var names = items.map(function(li){ return li.querySelector('a').textContent; });\n  var anchors = items.map(function(li){ var h = li.querySelector('a').getAttribute('href') || ''; return (h.charAt(0) === '#' && h !== '#top') ? document.getElementById(h.slice(1)) : null; });\n  var article = root.getAttribute('data-article') || location.pathname, minutes = root.getAttribute('data-minutes') || '';\n  var marks = {}, started = false, pausedAt = -1, closed = false, ended = false;\n  var RATES = [1, 1.25, 1.5], rate = 1;\n  try { var saved = parseFloat(localStorage.getItem('msq-audio-rate')); if (RATES.indexOf(saved) >= 0) { rate = saved; } } catch (e) {}\n  audio.playbackRate = rate;\n  function track(name, extra){ try { if (typeof gtag === 'function') { var p = { article: article }; for (var k in extra) { p[k] = extra[k]; } gtag('event', name, p); } } catch (e) {} }\n  function current(){ var t = audio.currentTime, idx = 0; for (var i = 0; starts.length > i; i += 1) { if (t + 0.25 >= starts[i]) { idx = i; } } return idx; }\n  function onScreen(){\n    var line = window.innerHeight \/ 3, idx = 0;\n    for (var i = 0; anchors.length > i; i += 1) { var el = anchors[i]; if (el && line >= el.getBoundingClientRect().top) { idx = i; } }\n    return idx;\n  }\n  function fmt(s){ s = Math.max(0, Math.round(s || 0)); var m = Math.floor(s \/ 60), r = s % 60; return m + ':' + (10 > r ? '0' : '') + r; }\n  function play(from, source){\n    if (from !== null) { audio.currentTime = from; }\n    var p = audio.play(); if (p && p.catch) { p.catch(function(){}); }\n    track(from === null ? 'audio_resume' : 'audio_chapter', { chapter: names[current()], start: Math.round(audio.currentTime), source: source });\n  }\n  var hbtns = anchors.map(function(el, i){\n    if (!el) { return null; }\n    var b = document.createElement('button'); b.type = 'button'; b.className = 'msq-hplay'; b.setAttribute('aria-label', 'Play this section: ' + names[i]);\n    b.addEventListener('click', function(){\n      if (!audio.paused && current() === i) { audio.pause(); track('audio_pause', { source: 'heading' }); return; }\n      play(starts[i], 'heading');\n    });\n    el.appendChild(b); return b;\n  });\n  var bar = document.createElement('div'); bar.className = 'msq-bar msq-bar-pill is-hidden'; bar.setAttribute('role', 'region'); bar.setAttribute('aria-label', 'Audio player');\n  var playBtn = document.createElement('button'); playBtn.type = 'button'; playBtn.className = 'msq-bar-play';\n  var icon = document.createElement('span'); icon.className = 'msq-bar-icon'; icon.setAttribute('aria-hidden', 'true');\n  var label = document.createElement('span'); label.className = 'msq-bar-label';\n  playBtn.appendChild(icon); playBtn.appendChild(label);\n  var chap = document.createElement('span'); chap.className = 'msq-bar-chapter';\n  var clock = document.createElement('span'); clock.className = 'msq-bar-time';\n  var rateBtn = document.createElement('button'); rateBtn.type = 'button'; rateBtn.className = 'msq-bar-rate'; rateBtn.setAttribute('aria-label', 'Playback speed');\n  var closeBtn = document.createElement('button'); closeBtn.type = 'button'; closeBtn.className = 'msq-bar-close'; closeBtn.setAttribute('aria-label', 'Close the audio bar');\n  bar.appendChild(playBtn); bar.appendChild(chap); bar.appendChild(clock); bar.appendChild(rateBtn); bar.appendChild(closeBtn);\n  document.body.appendChild(bar);\n  function showRate(){ rateBtn.textContent = (rate === 1 ? '1' : String(rate)) + 'x'; }\n  showRate();\n  rateBtn.addEventListener('click', function(){\n    rate = RATES[(RATES.indexOf(rate) + 1) % RATES.length]; audio.playbackRate = rate; showRate();\n    try { localStorage.setItem('msq-audio-rate', String(rate)); } catch (e) {}\n    track('audio_rate', { rate: rate });\n  });\n  closeBtn.addEventListener('click', function(){\n    closed = true; if (!audio.paused) { audio.pause(); } paint(); track('audio_bar_close', {});\n  });\n  function mode(){\n    if (!audio.paused) { return 'pause'; }\n    if (ended) { return 'again'; }\n    if (!started) { return 'listen'; }\n    return (pausedAt === onScreen()) ? 'resume' : 'section';\n  }\n  playBtn.addEventListener('click', function(){\n    var m = mode();\n    if (m === 'pause') { audio.pause(); track('audio_pause', { source: 'bar' }); return; }\n    if (m === 'again') { ended = false; play(0, 'bar'); return; }\n    if (m === 'resume') { play(null, 'bar'); return; }\n    play(starts[onScreen()], 'bar');\n  });\n  function paint(){\n    var idx = current(), playing = !audio.paused, m = mode();\n    items.forEach(function(li, i){\n      var on = (i === idx) && playing, b = li.querySelector('.msq-toc-play'), a = li.querySelector('a');\n      li.classList.toggle('is-active', on); b.classList.toggle('is-playing', on);\n      b.textContent = on ? '\u2016' : '\u25b6\ufe0e';\n      b.setAttribute('aria-label', (on ? 'Pause: ' : 'Play from: ') + a.textContent);\n    });\n    hbtns.forEach(function(b, i){ if (b) { var on = (i === idx) && playing; b.classList.toggle('is-playing', on); b.setAttribute('aria-label', (on ? 'Pause this section: ' : 'Play this section: ') + names[i]); } });\n    playBtn.classList.toggle('is-playing', playing);\n    label.textContent = m === 'pause' ? 'Pause' : m === 'again' ? 'Play again' : m === 'resume' ? 'Resume' : m === 'section' ? 'Play this section' : 'Listen, ' + minutes + ' min';\n    playBtn.setAttribute('aria-label', label.textContent);\n    chap.textContent = started ? names[(playing || m === 'resume') ? idx : onScreen()] : '';\n    clock.textContent = started ? fmt(audio.currentTime) + ' \/ ' + fmt(audio.duration) : '';\n    bar.classList.toggle('msq-bar-pill', !started);\n    var show = !closed && (started || 0 > root.getBoundingClientRect().bottom);\n    bar.classList.toggle('is-hidden', !show);\n    document.body.classList.toggle('msq-has-bar', show);\n  }\n  root.addEventListener('click', function(e){\n    var b = e.target.closest ? e.target.closest('.msq-toc-play') : null; if (!b) { return; }\n    var li = b.parentNode, s = parseFloat(b.getAttribute('data-start')) || 0;\n    if (!audio.paused && current() === items.indexOf(li)) { audio.pause(); track('audio_pause', { source: 'index' }); return; }\n    play(s, 'index');\n  });\n  audio.addEventListener('play', function(){ ended = false; closed = false; if (!started) { started = true; track('audio_play', { minutes: Math.round((audio.duration || 0) \/ 60) }); } paint(); });\n  audio.addEventListener('pause', function(){ pausedAt = current(); paint(); });\n  audio.addEventListener('timeupdate', function(){\n    paint();\n    if (audio.duration > 0) {\n      var pct = Math.floor(audio.currentTime \/ audio.duration * 100);\n      [25, 50, 75].forEach(function(m){ if (pct >= m && !marks[m]) { marks[m] = true; track('audio_progress', { percent: m }); } });\n    }\n  });\n  audio.addEventListener('ended', function(){ ended = true; track('audio_complete', {}); paint(); });\n  var ticking = false;\n  function onScroll(){ if (ticking) { return; } ticking = true; setTimeout(function(){ ticking = false; paint(); }, 80); }\n  window.addEventListener('scroll', onScroll, { passive: true }); window.addEventListener('resize', onScroll);\n  paint();\n  }\n  if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init); } else { init(); }\n})();\n\n(function(){\n  function start(){\n    var root = document.querySelector('.msq-audio'), audio = root ? root.querySelector('audio') : null;\n    var map = (typeof MSQ_SENT !== 'undefined') ? MSQ_SENT : [];\n    if (!root || !audio || !map.length) { return; }\n    var scope = root.closest('main') || root.closest('article') || root.closest('.entry-content') || document.body;\n    var SKIP = '.msq-audio,.msq,.msq-tool,.msq-end,.msq-bar,script,style,noscript,figcaption,#rank-math-faq,.rank-math-block,nav,header,footer';\n    function norm(s){ return s.toLowerCase().replace(\/[^a-z0-9]+\/g, ''); }\n    var nodes = [], stream = '', walker = document.createTreeWalker(scope, NodeFilter.SHOW_TEXT, null), n;\n    while ((n = walker.nextNode())) {\n      var el = n.parentElement; if (!el || el.closest(SKIP)) { continue; }\n      var raw = n.nodeValue, keep = [], norms = '';\n      for (var i = 0; raw.length > i; i += 1) { var c = raw.charAt(i).toLowerCase(); if (\/[a-z0-9]\/.test(c)) { keep.push(i); norms += c; } }\n      if (!norms) { continue; }\n      nodes.push({ node: n, a: stream.length, b: stream.length + norms.length, keep: keep });\n      stream += norms;\n    }\n    var segs = [], cursor = 0, lastRow = null;\n    map.forEach(function(m, idx){\n      var kind = m[1], f = m[2], len = m[3];\n      if (kind === 't') {\n        var rows = scope.querySelectorAll('tr'), after = !lastRow;\n        for (var r = 0; rows.length > r; r += 1) {\n          var tr = rows[r];\n          if (!after) { if (tr === lastRow) { after = true; } continue; }\n          var cell = tr.querySelector('td,th');\n          if (cell && norm(cell.textContent).indexOf(f) === 0) { tr.setAttribute('data-i', idx); lastRow = tr; break; }\n        }\n        return;\n      }\n      var p = stream.indexOf(f, cursor); if (0 > p) { return; }\n      segs.push({ i: idx, a: p, b: Math.min(p + len, stream.length) }); cursor = p + len;\n    });\n    var si = 0;\n    nodes.forEach(function(nd){\n      var frag = document.createDocumentFragment(), raw = nd.node.nodeValue, rawPos = 0, any = false;\n      for (var k = si; segs.length > k; k += 1) {\n        var sg = segs[k]; if (sg.a >= nd.b) { break; } if (nd.a >= sg.b) { continue; }\n        var s = Math.max(sg.a, nd.a), e = Math.min(sg.b, nd.b);\n        var rs = nd.keep[s - nd.a], re2 = nd.keep[e - nd.a - 1] + 1;\n        if (rs > rawPos) { frag.appendChild(document.createTextNode(raw.slice(rawPos, rs))); }\n        var span = document.createElement('span'); span.className = 'msq-s'; span.setAttribute('data-i', sg.i); span.textContent = raw.slice(rs, re2);\n        frag.appendChild(span); rawPos = re2; any = true;\n        if (sg.b > nd.b) { break; }\n      }\n      while (segs.length > si && nd.b >= segs[si].b) { si += 1; }\n      if (!any) { return; }\n      if (raw.length > rawPos) { frag.appendChild(document.createTextNode(raw.slice(rawPos))); }\n      nd.node.parentNode.replaceChild(frag, nd.node);\n    });\n    var starts = map.map(function(m){ return m[0]; }), curIdx = -1, lastUser = 0, timer = null, autoUntil = 0, dragging = false;\n    function idxAt(t){ var lo = 0, hi = starts.length; while (hi > lo + 1) { var mid = (lo + hi) >> 1; if (t + 0.15 >= starts[mid]) { lo = mid; } else { hi = mid; } } return (t + 0.15 >= starts[0]) ? lo : -1; }\n    function setNow(i){\n      if (i === curIdx) { return; }\n      Array.prototype.forEach.call(scope.querySelectorAll('.msq-now'), function(el){ el.classList.remove('msq-now'); });\n      curIdx = i; if (0 > i) { return; }\n      var els = scope.querySelectorAll('[data-i=\"' + i + '\"]'); if (!els.length) { return; }\n      Array.prototype.forEach.call(els, function(el){ el.classList.add('msq-now'); });\n      var r = els[0].getBoundingClientRect(), now = Date.now();\n      if (!dragging && now > lastUser + 2500 && (80 > r.top || r.bottom > window.innerHeight - 140)) {\n        var reduce = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n        autoUntil = now + (reduce ? 400 : 1600);\n        els[0].scrollIntoView({ block: 'center', behavior: reduce ? 'auto' : 'smooth' });\n      }\n    }\n    function tick(){ if (!audio.paused) { setNow(idxAt(audio.currentTime)); } }\n    function userScrolled(){ lastUser = Date.now(); }\n    ['wheel', 'touchmove', 'keydown'].forEach(function(ev){ window.addEventListener(ev, userScrolled, { passive: true }); });\n    window.addEventListener('scroll', function(){ if (Date.now() > autoUntil) { userScrolled(); } }, { passive: true });\n    window.addEventListener('mousedown', function(e){ if (e.clientX >= document.documentElement.clientWidth) { dragging = true; userScrolled(); } }, { passive: true });\n    window.addEventListener('mouseup', function(){ if (dragging) { dragging = false; userScrolled(); } }, { passive: true });\n    audio.addEventListener('play', function(){ if (timer) { clearInterval(timer); } timer = setInterval(tick, 150); tick(); });\n    audio.addEventListener('pause', function(){ if (timer) { clearInterval(timer); timer = null; } });\n    scope.addEventListener('click', function(e){\n      if (e.target.closest('a, button, input, select, textarea, label, summary, .msq, .msq-tool, .msq-end, .msq-audio, .msq-bar')) { return; }\n      var sel = window.getSelection ? String(window.getSelection()) : '';\n      if (sel && sel.trim()) { return; }\n      var el = e.target.closest('[data-i]'); if (!el) { return; }\n      var i = parseInt(el.getAttribute('data-i'), 10); if (isNaN(i)) { return; }\n      if (!audio.paused && i === curIdx) { return; }\n      lastUser = Date.now();\n      audio.currentTime = starts[i];\n      var p = audio.play(); if (p && p.catch) { p.catch(function(){}); }\n      try { if (typeof gtag === 'function') { gtag('event', 'audio_chapter', { article: location.pathname, source: 'sentence', start: Math.round(starts[i]) }); } } catch (err) {}\n    });\n    audio.addEventListener('seeked', tick);\n    audio.addEventListener('ended', function(){ setNow(-1); });\n  }\n  if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', start); } else { start(); }\n})();<\/script>\n<\/div>\n\n\n\n<p class=\"msq-hook wp-block-paragraph\">On this page: the full Division I and Division II category tables cited to the statute, the 2024 rule that actually sets the specialty contractor count, and why electrical sits under a different board entirely.<\/p>\n\n\n\n<div class=\"msq\" id=\"ms-quiz\" data-slug=\"florida-contractor-license-types\" data-category=\"licensing\" data-list=\"1\">\n<style>.msq,.msq-hook,.msq-box,.msq-end,.msq-tool{--msq-accent:#24405E;--msq-accent-text:#FFFFFF;--msq-line:#D9D3C7;--msq-warn:#C4540E;--msq-muted:#4C5561;--msq-tint:#F3F1EC;--msq-base:#FFFFFF}\n.msq{margin:1.25em 0 1.75em}\n.msq-hook{border-left:3px solid var(--msq-accent);padding:6px 14px;color:var(--msq-muted);font-size:.97em}\n.msq-box{background:var(--msq-tint);border:1px solid var(--msq-line);border-radius:12px;padding:0}\n.msq-box>summary{cursor:pointer;list-style:none;padding:14px 18px;font-weight:700;color:var(--msq-accent)}\n.msq-box>summary::-webkit-details-marker{display:none}\n.msq-box>summary::before{content:\"+\";display:inline-block;width:1.1em;font-weight:800}\n.msq-box[open]>summary::before{content:\"\\00d7\"}\n.msq-body{padding:2px 18px 18px}\n.msq-intro{margin:0 0 12px;font-size:.95em;color:var(--msq-muted)}\n.msq-list{margin:0;padding:0;list-style:none}\n.msq-q{margin:0 0 18px;padding:0}\n.msq-question{font-weight:700;margin:0 0 8px}\n.msq-options{display:flex;flex-direction:column;gap:8px}\n.msq-opt{text-align:left;background:var(--msq-base);border:1px solid var(--msq-line);border-radius:8px;padding:10px 12px;font:inherit;font-size:.95em;color:inherit;cursor:pointer;line-height:1.35}\n.msq-opt:hover{border-color:var(--msq-accent)}\n.msq-opt[disabled]{cursor:default}\n.msq-opt.is-right{border-color:var(--msq-accent);background:var(--msq-line);font-weight:700}\n.msq-opt.is-wrong{border-color:var(--msq-warn);color:var(--msq-warn)}\n.msq-explain{margin:8px 0 0;font-size:.92em;padding:10px 12px;border-left:3px solid var(--msq-accent);background:var(--msq-base);border-radius:0 8px 8px 0}\n.msq-explain[hidden]{display:none}\n.msq-verdict{font-weight:700}\n.msq-result{margin-top:14px;padding:14px 16px;background:var(--msq-base);border:1px solid var(--msq-line);border-radius:10px}\n.msq-result[hidden]{display:none}\n.msq-result h3{margin:0 0 6px;font-size:1.1em}\n.msq-result p{margin:0 0 8px}\n.msq-jump{margin:0 0 8px;padding-left:1.2em}\n.msq-form{margin-top:10px;display:flex;flex-wrap:wrap;gap:8px;align-items:center}\n.msq-form input[type=email]{flex:1 1 220px;padding:10px 12px;border:1px solid var(--msq-muted);border-radius:8px;font:inherit;background:#fff}\n.msq-btn{background:var(--msq-accent);color:var(--msq-accent-text);border:0;border-radius:8px;padding:11px 18px;font:inherit;font-weight:700;cursor:pointer}\n.msq-btn:hover{filter:brightness(.92)}\n.msq-btn[disabled]{opacity:.7;cursor:default}\n.msq-no{font-size:.9em;color:var(--msq-muted);margin-left:4px}\n.msq-privacy{margin:6px 0 0;font-size:.82em;color:var(--msq-muted);flex-basis:100%}\n.msq-hp{position:absolute;left:-5000px;width:1px;height:1px;overflow:hidden}\n.msq-msg{margin:8px 0 0;font-size:.92em}\n.msq-end{margin:1.5em 0;padding:18px;border:1px solid var(--msq-accent);border-radius:12px;text-align:center;background:var(--msq-tint)}\n.msq-end p{margin:0 0 12px}\n.msq-end .msq-body{text-align:left;padding:16px 0 0}\n.msq-end .msq-start-test[hidden]{display:none}\n.msq-tool{margin:1.5em 0;padding:18px 20px;background:var(--msq-tint);border:1px solid var(--msq-line);border-radius:12px}\n.msq-tool h3{margin:0 0 6px;font-size:1.15em}\n.msq-tool p{margin:0 0 10px}\n.msq-tool .msq-note{font-size:.85em;color:var(--msq-muted);margin:10px 0 0}\n.msq-check label{display:flex;gap:10px;align-items:flex-start;padding:9px 0;border-bottom:1px solid var(--msq-line);cursor:pointer;line-height:1.4}\n.msq-check label:last-of-type{border-bottom:0}\n.msq-check input{margin-top:5px;flex:0 0 auto;width:18px;height:18px;accent-color:var(--msq-accent)}\n.msq-check-count{font-weight:700;margin:10px 0 0}\n.msq-verdict-box{margin:12px 0 0;padding:10px 14px;border-radius:8px;background:var(--msq-base);border-left:3px solid var(--msq-warn)}\n.msq-verdict-box[hidden]{display:none}\n.msq-calc{display:grid;grid-template-columns:1fr 1fr;gap:10px 16px}\n.msq-calc label{display:flex;flex-direction:column;gap:4px;font-size:.92em}\n.msq-calc input,.msq-calc select{padding:8px 10px;border:1px solid var(--msq-muted);border-radius:8px;font:inherit;background:#fff}\n.msq-calc-out{grid-column:1 \/ -1;margin-top:6px;padding:12px 14px;background:var(--msq-base);border-radius:8px;border:1px solid var(--msq-line)}\n.msq-calc-out strong{font-size:1.15em}\n.msq-choose label{display:block;padding:9px 12px;margin:0 0 8px;background:var(--msq-base);border:1px solid var(--msq-line);border-radius:8px;cursor:pointer}\n.msq-choose input{margin-right:8px;accent-color:var(--msq-accent)}\n.msq-choice-result{margin-top:10px;padding:12px 14px;background:var(--msq-base);border-left:3px solid var(--msq-accent);border-radius:0 8px 8px 0}\n.msq-choice-result[hidden]{display:none}\n@media (max-width:600px){.msq-calc{grid-template-columns:1fr}}\nh2.wp-block-heading[id]{scroll-margin-top:24px}<\/style>\n<noscript><style>.msq-explain{display:block !important}<\/style><\/noscript>\n<details class=\"msq-box\">\n<summary>Think you already know this? Five questions, one minute.<\/summary>\n<div class=\"msq-body\">\n<p class=\"msq-intro\">Every answer is on this page. Answer from what you know now; the page fills in the rest.<\/p>\n<ol class=\"msq-list\">\n<li class=\"msq-q\" data-q=\"1\" data-answer=\"b\" data-title=\"What are the two divisions in Florida contractor licensing?\" data-section=\"#what-are-the-two-divisions-in-florida-contractor-licensing\">\n<p class=\"msq-question\">1. Which of these is a Division I license?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 1 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">Roofing Contractor<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">Residential Contractor<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">Plumbing Contractor<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>Residential, along with general and building, is one of the three Division I licenses under <a href=\"https:\/\/www.flsenate.gov\/laws\/statutes\/2025\/489.105\" target=\"_blank\" rel=\"noopener\">Florida Statutes 489.105<\/a>. Roofing and plumbing are both Division II trade categories. <a class=\"msq-section\" href=\"#what-are-the-two-divisions-in-florida-contractor-licensing\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"2\" data-answer=\"b\" data-title=\"What is the difference between a certified and a registered license?\" data-section=\"#what-is-the-difference-between-a-certified-and-a-registered-license\">\n<p class=\"msq-question\">2. A registered contractor&#8217;s license lets you legally work&#8230;<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 2 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">Anywhere in Florida<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">Only in the specific jurisdiction that issued it<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">In any county that has reciprocity<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>A registered license is tied to the local jurisdiction that issued it; only a certified license lets a contractor work statewide without meeting local competency requirements. <a href=\"https:\/\/www.flsenate.gov\/laws\/statutes\/2025\/489.105\" target=\"_blank\" rel=\"noopener\">Florida Statutes 489.105<\/a> <a class=\"msq-section\" href=\"#what-is-the-difference-between-a-certified-and-a-registered-license\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"3\" data-answer=\"b\" data-title=\"What are the Division II trade categories?\" data-section=\"#what-are-the-division-ii-trade-categories\">\n<p class=\"msq-question\">3. Which Division II category has not accepted a new applicant since 1988?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 3 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">Class A air conditioning<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">Class C air conditioning<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">Mechanical<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>Class C air conditioning closed to new certifications on October 1, 1988, and remains valid only for contractors who already held it. <a href=\"https:\/\/www.flsenate.gov\/laws\/statutes\/2025\/489.105\" target=\"_blank\" rel=\"noopener\">Florida Statutes 489.105<\/a> <a class=\"msq-section\" href=\"#what-are-the-division-ii-trade-categories\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"4\" data-answer=\"b\" data-title=\"What is a specialty contractor license, and how many categories exist?\" data-section=\"#what-is-a-specialty-contractor-license-and-how-many-categories-exist\">\n<p class=\"msq-question\">4. How many specialty categories does the current board rule list?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 4 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">15<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">21<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">22<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>Rule 61G4-15.100, effective August 28, 2024, lists 21 lettered specialty categories after consolidating about a dozen older separate rules; the 22 figure some pages still repeat does not match the current rule. <a href=\"https:\/\/flrules.org\/gateway\/ruleno.asp?id=61G4-15.100&#038;Section=0\" target=\"_blank\" rel=\"noopener\">Rule 61G4-15.100, Florida Administrative Code<\/a> <a class=\"msq-section\" href=\"#what-is-a-specialty-contractor-license-and-how-many-categories-exist\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"5\" data-answer=\"b\" data-title=\"Why isn&#x27;t electrical contracting regulated by the same board?\" data-section=\"#why-isnt-electrical-contracting-regulated-by-the-same-board\">\n<p class=\"msq-question\">5. Which board licenses electrical and alarm system contractors in Florida?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 5 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">The Construction Industry Licensing Board<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">The Electrical Contractors&#8217; Licensing Board<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">The local building department<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>Electrical and alarm contracting is licensed under Chapter 489, Part II by the Electrical Contractors&#8217; Licensing Board, a separate board from the CILB that issues every license named earlier on this page. <a href=\"https:\/\/www.flsenate.gov\/Laws\/Statutes\/2025\/Chapter489\/PART_II\" target=\"_blank\" rel=\"noopener\">Florida Statutes, Chapter 489 Part II<\/a> <a class=\"msq-section\" href=\"#why-isnt-electrical-contracting-regulated-by-the-same-board\">Read the section<\/a><\/p>\n<\/li>\n<\/ol>\n<div class=\"msq-result\" hidden><\/div>\n<\/div>\n<\/details>\n<script>(function(){\n  if (window.__msqInit) { return; }\n  window.__msqInit = true;\n  var root = document.getElementById('ms-quiz');\n  if (!root) { return; }\n  var meta = { slug: root.getAttribute('data-slug'), category: root.getAttribute('data-category'),\n               list: root.getAttribute('data-list') || '1' };\n  function qs(el, s){ return el.querySelector(s); }\n  function qsa(el, s){ return Array.prototype.slice.call(el.querySelectorAll(s)); }\n  function track(name, params){\n    try { if (typeof gtag === 'function') { var p = params || {}; p.article = meta.slug; gtag('event', name, p); } } catch (e) {}\n  }\n  function jumpList(missed){\n    if (!missed.length) { return ''; }\n    return '<ul class=\"msq-jump\">' + missed.map(function(q){\n      return '<li><a href=\"' + q.getAttribute('data-section') + '\">' + q.getAttribute('data-title') + '<\/a><\/li>';\n    }).join('') + '<\/ul>';\n  }\n  function emailForm(){\n    return '<div class=\"msq-sub\"><p><strong>Get the next one.<\/strong> We publish new articles on ' + meta.category\n      + ' most weeks and recheck this page on Sundays. Email me when a new article goes up or this page changes.<\/p>'\n      + '<form class=\"msq-form\" method=\"post\" action=\"\/mail\/form.php\" novalidate>'\n      + '<input type=\"hidden\" name=\"list\" value=\"' + meta.list + '\">'\n      + '<input type=\"hidden\" name=\"name\" value=\"\">'\n      + '<label class=\"msq-hp\" aria-hidden=\"true\">Leave this empty<input type=\"text\" name=\"website\" tabindex=\"-1\" autocomplete=\"off\"><\/label>'\n      + '<input type=\"email\" name=\"email\" placeholder=\"you@example.com\" required aria-label=\"Email address\" autocomplete=\"email\">'\n      + '<button type=\"submit\" class=\"msq-btn\">Email me the updates<\/button>'\n      + '<a href=\"#\" class=\"msq-no\">No thanks<\/a>'\n      + '<p class=\"msq-privacy\">We store your email and this page\\'s topic, nothing else. Unsubscribe any time.<\/p>'\n      + '<\/form><p class=\"msq-msg\" aria-live=\"polite\"><\/p><\/div>';\n  }\n  \/* The autoresponder always answers 200 with its own page. A \".msg.err\" box means the\n     address was rejected, \"You're subscribed\" means accepted, and a redirect only happens\n     after a successful subscribe. Same reading as the landing pages on the other sites. *\/\n  function sendForm(form){\n    return fetch(form.getAttribute('action'), { method: 'POST', body: new FormData(form), credentials: 'same-origin', redirect: 'manual' })\n      .then(function(res){\n        if (res.type === 'opaqueredirect') { return { status: 'ok' }; }\n        if (res.status === 404) { return { status: 'notlive' }; }\n        if (!res.ok) { throw new Error('HTTP ' + res.status); }\n        return res.text().then(function(t){\n          var doc = new DOMParser().parseFromString(t, 'text\/html');\n          var err = doc.querySelector('.msg.err');\n          if (err) {\n            var m = err.textContent.trim();\n            if (\/something went wrong\/i.test(m)) { throw new Error(m); }\n            return { status: 'rejected', message: m };\n          }\n          if (\/you.re subscribed\/i.test(doc.body.textContent)) { return { status: 'ok' }; }\n          return { status: 'unknown' };\n        });\n      });\n  }\n  function wireForm(sub){\n    var form = qs(sub, '.msq-form'), msg = qs(sub, '.msq-msg');\n    qs(form, '.msq-no').addEventListener('click', function(e){\n      e.preventDefault();\n      sub.innerHTML = '<p class=\"msq-msg\">No problem. The Sunday refresh keeps this page current either way.<\/p>';\n      track('quiz_email', { result: 'declined' });\n    });\n    form.addEventListener('submit', function(e){\n      e.preventDefault();\n      var input = qs(form, 'input[name=email]'), btn = qs(form, '.msq-btn');\n      var email = input.value.trim(); input.value = email;\n      if (!\/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(email)) { msg.textContent = 'That email does not look right.'; return; }\n      btn.disabled = true; btn.textContent = 'Sending';\n      function reset(){ btn.disabled = false; btn.textContent = 'Email me the updates'; }\n      sendForm(form).then(function(r){\n        if (r.status === 'ok' || r.status === 'unknown') {\n          sub.innerHTML = '<p class=\"msq-msg\"><strong>Done.<\/strong> We will email you when the next article on ' + meta.category\n            + ' goes up and when this page changes. If a confirmation email arrives, click it.<\/p>';\n          track('quiz_email', { result: r.status });\n          if (r.status === 'ok') { track('generate_lead', { method: 'quiz' }); }\n        } else if (r.status === 'notlive') {\n          msg.textContent = 'Sign up is not switched on yet for this site. Nothing was stored.'; reset();\n          track('quiz_email', { result: 'notlive' });\n        } else {\n          msg.textContent = r.message || 'Please check the email address and try again.'; reset();\n          track('quiz_email', { result: 'rejected' });\n        }\n      }).catch(function(){\n        msg.textContent = 'Could not reach the sign up service just now. Nothing was stored.'; reset();\n        track('quiz_email', { result: 'error' });\n      });\n    });\n  }\n  function finish(container, mode, score, total, missed){\n    var result = qs(container, '.msq-result');\n    track('quiz_complete', { mode: mode, score: score, total: total });\n    var h;\n    if (mode === 'pre') {\n      h = '<h3>You knew ' + score + ' of ' + total + ' before reading.<\/h3>';\n      h += (score === total) ? '<p>All of them. Read on anyway; the sections below carry the detail behind each answer.<\/p>'\n                             : '<p>The rest is below. Jump straight to what you missed:<\/p>' + jumpList(missed);\n      try { sessionStorage.setItem('msq-pre-' + meta.slug, String(score)); } catch (e) {}\n    } else {\n      var pre = null;\n      try { pre = sessionStorage.getItem('msq-pre-' + meta.slug); } catch (e) {}\n      h = '<h3>You got ' + score + ' of ' + total + '.<\/h3>';\n      if (pre !== null) { h += '<p>Before reading you had ' + pre + ' of ' + total + '.<\/p>'; }\n      if (missed.length) { h += '<p>Worth a second look:<\/p>' + jumpList(missed); }\n      h += emailForm();\n    }\n    result.innerHTML = h; result.hidden = false;\n    if (mode !== 'pre') { wireForm(qs(result, '.msq-sub')); }\n    result.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n  }\n  function setup(container, mode){\n    var qEls = qsa(container, '.msq-q'), answered = 0, score = 0, missed = [];\n    qEls.forEach(function(q){\n      var answer = q.getAttribute('data-answer'), opts = qsa(q, '.msq-opt'), explain = qs(q, '.msq-explain');\n      q.removeAttribute('data-done'); explain.hidden = true; qs(explain, '.msq-verdict').textContent = '';\n      opts.forEach(function(b){ b.disabled = false; b.classList.remove('is-right', 'is-wrong'); });\n      opts.forEach(function(b){\n        b.addEventListener('click', function(){\n          if (q.getAttribute('data-done')) { return; }\n          q.setAttribute('data-done', '1');\n          var ok = b.getAttribute('data-opt') === answer;\n          opts.forEach(function(o){ o.disabled = true; if (o.getAttribute('data-opt') === answer) { o.classList.add('is-right'); } });\n          if (ok) { score += 1; } else { b.classList.add('is-wrong'); missed.push(q); }\n          qs(explain, '.msq-verdict').textContent = ok ? 'Right. ' : 'Not quite. ';\n          explain.hidden = false;\n          answered += 1;\n          track('quiz_answer', { mode: mode, question: q.getAttribute('data-q'), correct: ok ? 1 : 0 });\n          if (answered === qEls.length) { finish(container, mode, score, qEls.length, missed); }\n        });\n      });\n    });\n  }\n  var box = qs(root, '.msq-box');\n  setup(root, 'pre');\n  if (box) { box.addEventListener('toggle', function(){ if (box.open) { track('quiz_open', { mode: 'pre' }); } }); }\n  \/* The end block sits far below this script, so it does not exist yet while this runs\n     during parsing. A delegated listener finds it at click time. *\/\n  document.addEventListener('click', function(e){\n    var startBtn = (e.target && e.target.closest) ? e.target.closest('.msq-start-test') : null;\n    if (!startBtn) { return; }\n    var end = startBtn.closest('.msq-end');\n    if (!end) { return; }\n    var mount = qs(end, '.msq-mount');\n    var clone = qs(root, '.msq-body').cloneNode(true);\n    var intro = qs(clone, '.msq-intro');\n    if (intro) { intro.textContent = 'The same five questions, now that you have read the page.'; }\n    var res = qs(clone, '.msq-result'); if (res) { res.hidden = true; res.innerHTML = ''; }\n    mount.innerHTML = ''; mount.appendChild(clone);\n    setup(mount, 'test');\n    startBtn.hidden = true;\n    track('quiz_open', { mode: 'test' });\n    mount.scrollIntoView({ behavior: 'smooth', block: 'start' });\n    var first = qs(mount, '.msq-opt'); if (first) { first.focus({ preventScroll: true }); }\n  });\n  \/* Shared tool behaviour: checklists remember their ticks on this device, and a chooser\n     shows the result for the option picked. Calculators carry their own small script. *\/\n  function initTools(){\n    qsa(document, '.msq-check').forEach(function(box){\n      var key = 'msq-check-' + meta.slug + '-' + (box.getAttribute('data-id') || 'x');\n      var boxes = qsa(box, 'input[type=checkbox]'), count = qs(box, '.msq-check-count');\n      var yes = qs(box, '.msq-verdict-yes'), no = qs(box, '.msq-verdict-no');\n      var saved = {};\n      try { saved = JSON.parse(localStorage.getItem(key) || '{}'); } catch (e) {}\n      boxes.forEach(function(cb, i){ if (saved[i]) { cb.checked = true; } });\n      function refresh(){\n        var n = boxes.filter(function(cb){ return cb.checked; }).length, state = {};\n        boxes.forEach(function(cb, i){ if (cb.checked) { state[i] = 1; } });\n        try { localStorage.setItem(key, JSON.stringify(state)); } catch (e) {}\n        if (count) { count.textContent = n + ' of ' + boxes.length + (box.getAttribute('data-verb') || ' done'); }\n        if (yes && no) { yes.hidden = n === 0; no.hidden = n !== 0; }\n      }\n      boxes.forEach(function(cb){ cb.addEventListener('change', function(){ refresh(); track('tool_check', { tool: box.getAttribute('data-id') }); }); });\n      refresh();\n    });\n    qsa(document, '.msq-choose').forEach(function(box){\n      var results = qsa(box, '.msq-choice-result');\n      qsa(box, 'input[type=radio]').forEach(function(r){\n        r.addEventListener('change', function(){\n          results.forEach(function(el){ el.hidden = el.getAttribute('data-for') !== r.value; });\n          track('tool_choose', { tool: box.getAttribute('data-id'), choice: r.value });\n        });\n      });\n    });\n  }\n  \/\/ read progress: how far down the article the reader has scrolled, fired once per quarter\n  (function(){\n    var art = root.closest('article') || root.parentNode, fired = {};\n    function check(){\n      var top = art.getBoundingClientRect().top + window.pageYOffset, h = art.offsetHeight || 1;\n      var seen = (window.pageYOffset + window.innerHeight - top) \/ h * 100;\n      [25, 50, 75, 100].forEach(function(m){ if (seen >= m && !fired[m]) { fired[m] = true; track('read_progress', { percent: m }); } });\n    }\n    window.addEventListener('scroll', check, { passive: true }); window.addEventListener('load', check);\n  })();\n  if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initTools); } else { initTools(); }\n})();<\/script>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-are-the-two-divisions-in-florida-contractor-licensing\">What are the two divisions in Florida contractor licensing?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Every contractor license the Construction Industry Licensing Board (CILB) issues falls into one of two divisions written into <a href=\"https:\/\/www.flsenate.gov\/laws\/statutes\/2025\/489.105\" target=\"_blank\" rel=\"noopener\">Florida Statutes 489.105<\/a>. Division I is the three licenses unlimited by trade: general, building and residential. Division II is everything defined by a single trade or scope of work, from sheet metal to pollutant storage tanks, fourteen named categories in all, the last of which is itself a catch all for board rule specialty licenses.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>License<\/th><th>Scope<\/th><th>Statute<\/th><\/tr><\/thead><tbody><tr><td>General Contractor (CGC)<\/td><td>Unlimited as to the type of work<\/td><td>s. 489.105(3)(a), F.S.<\/td><\/tr><tr><td>Building Contractor (CBC)<\/td><td>Commercial buildings and residential buildings up to three stories<\/td><td>s. 489.105(3)(b), F.S.<\/td><\/tr><tr><td>Residential Contractor (CRC)<\/td><td>One, two or three family residences up to two habitable stories<\/td><td>s. 489.105(3)(c), F.S.<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">Division I scope, quoted from <a href=\"https:\/\/www.flsenate.gov\/laws\/statutes\/2025\/489.105\" target=\"_blank\" rel=\"noopener\">Florida Statutes 489.105<\/a>, current 2025 edition.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The three Division I licenses sit the same three exams and pay close to the same fees, so the real decision is scope, not difficulty. If you only ever build houses, our full breakdown of <a href=\"https:\/\/passcontractorexam.com\/articles\/residential-contractor-license-florida\/\">the residential contractor license (CRC)<\/a> goes through the experience rules and the fee math in detail, and our guide to <a href=\"https:\/\/passcontractorexam.com\/articles\/florida-general-contractor-license\/\">getting a general contractors license in Florida<\/a> covers the CGC and CBC side. The papers are not identical, though: the department&#8217;s <a href=\"https:\/\/www2.myfloridalicense.com\/servop\/testing\/documents\/const_cib.pdf\" target=\"_blank\" rel=\"noopener\">candidate booklet<\/a> gives general contractors 60 scored questions on Contract Administration and on Project Management, building contractors 50 and residential contractors 45, all in 4.5 hours, and <a href=\"https:\/\/passcontractorexam.com\/articles\/florida-contractor-exam-format\/\">our breakdown of the Florida contractor exam format<\/a> sets that out part by part.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-is-the-difference-between-a-certified-and-a-registered-license\">What is the difference between a certified and a registered license?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Division and trade decide what you can build. Certified against registered decides where. A certified contractor holds a state issued certificate of competency and can work in any jurisdiction in Florida without meeting that county or city&#8217;s own competency requirements. A registered contractor is tied to the specific local jurisdiction where the registration was issued, and has to register again, or hold a local competency card, to work somewhere else. Both routes exist at every license type in this article, Division I and Division II alike.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This split matters more than most applicants expect, because it decides whether a single license travels with you across county lines or stops at one. Our dedicated comparison of <a href=\"https:\/\/passcontractorexam.com\/articles\/registered-vs-certified-contractor-florida\/\">registered against certified in Florida<\/a> covers the geographic scope, the exam difference and the conversion path between the two in full; this page only needs the distinction to make sense of the table below it.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1376\" height=\"768\" src=\"https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/10\/studying-for-florida-contractor-license-types.jpg\" alt=\"A contractor candidate studies code books at home to prepare for florida contractor license types exams.\" class=\"wp-image-474\" srcset=\"https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/10\/studying-for-florida-contractor-license-types.jpg 1376w, https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/10\/studying-for-florida-contractor-license-types-300x167.jpg 300w, https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/10\/studying-for-florida-contractor-license-types-1024x572.jpg 1024w, https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/10\/studying-for-florida-contractor-license-types-768x429.jpg 768w\" sizes=\"auto, (max-width: 1376px) 100vw, 1376px\" \/><figcaption class=\"wp-block-image__caption\">Candidates must study state regulations to earn their certified or registered license.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-are-the-division-ii-trade-categories\">What are the Division II trade categories?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Division II covers a trade or a scope of work rather than a type of building. Fourteen categories are named directly in the statute, and the last one, the generic &#8220;specialty contractor,&#8221; is explained in the next section because it works differently from the other thirteen.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Category<\/th><th>Scope<\/th><th>Statute<\/th><\/tr><\/thead><tbody><tr><td>Sheet metal<\/td><td>Metal fabrication, air handling systems, duct cleaning that requires disassembly<\/td><td>(3)(d)<\/td><\/tr><tr><td>Roofing<\/td><td>Roof installation, waterproofing, skylights, fascia and roof to wall connections during reroofing<\/td><td>(3)(e)<\/td><\/tr><tr><td>Air conditioning, Class A<\/td><td>Unlimited HVAC scope, including piping and low voltage controls<\/td><td>(3)(f)<\/td><\/tr><tr><td>Air conditioning, Class B<\/td><td>HVAC systems under 25 tons cooling or 500,000 BTU heating<\/td><td>(3)(g)<\/td><\/tr><tr><td>Air conditioning, Class C<\/td><td>Servicing existing systems only; closed to new applicants since October 1, 1988<\/td><td>(3)(h)<\/td><\/tr><tr><td>Mechanical<\/td><td>Unlimited HVAC, boilers, lift stations, fuel and medical gas piping<\/td><td>(3)(i)<\/td><\/tr><tr><td>Swimming pool\/spa, commercial<\/td><td>Public and private pool construction and equipment installation<\/td><td>(3)(j)<\/td><\/tr><tr><td>Swimming pool\/spa, residential<\/td><td>Residential pool construction and equipment installation<\/td><td>(3)(k)<\/td><\/tr><tr><td>Swimming pool\/spa servicing<\/td><td>Repair and servicing only, including draining for renovation<\/td><td>(3)(l)<\/td><\/tr><tr><td>Plumbing<\/td><td>Sanitary and storm drainage, water supply, gas lines, fire protection piping<\/td><td>(3)(m)<\/td><\/tr><tr><td>Underground utility and excavation<\/td><td>Sewer, water and storm systems by open cut or trenchless methods<\/td><td>(3)(n)<\/td><\/tr><tr><td>Solar<\/td><td>Solar water heating and photovoltaic system installation and repair<\/td><td>(3)(o)<\/td><\/tr><tr><td>Pollutant storage systems<\/td><td>Installing and maintaining regulated storage tanks<\/td><td>(3)(p)<\/td><\/tr><tr><td>Specialty contractor<\/td><td>One particular phase of construction, defined individually by board rule<\/td><td>(3)(q)<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">Division II categories, named and summarized from <a href=\"https:\/\/www.flsenate.gov\/laws\/statutes\/2025\/489.105\" target=\"_blank\" rel=\"noopener\">Florida Statutes 489.105(3)(d) through (q)<\/a>, current 2025 edition.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Electrical is not in this table on purpose. The next section explains why. Air conditioning is also the one trade with a visible generation gap built into the law: Class C has not accepted a new applicant since 1988, so every Class C holder working today has carried that license for well over three decades.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1376\" height=\"768\" src=\"https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/10\/division-two-tools-florida-contractor-license-types.jpg\" alt=\"A weathered tool belt with diverse trade tools represents different florida contractor license types in Division II.\" class=\"wp-image-475\" srcset=\"https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/10\/division-two-tools-florida-contractor-license-types.jpg 1376w, https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/10\/division-two-tools-florida-contractor-license-types-300x167.jpg 300w, https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/10\/division-two-tools-florida-contractor-license-types-1024x572.jpg 1024w, https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/10\/division-two-tools-florida-contractor-license-types-768x429.jpg 768w\" sizes=\"auto, (max-width: 1376px) 100vw, 1376px\" \/><figcaption class=\"wp-block-image__caption\">Division II encompasses specialized trade categories from roofing to mechanical contracting.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-is-a-specialty-contractor-license-and-how-many-categories-exist\">What is a specialty contractor license, and how many categories exist?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The fourteenth Division II category, &#8220;specialty contractor,&#8221; does not name a trade itself. It hands the CILB rulemaking authority, under <a href=\"https:\/\/www.flsenate.gov\/laws\/statutes\/2025\/489.105\" target=\"_blank\" rel=\"noopener\">489.105(3)(q)<\/a> and 489.113(6), to define narrower specialty categories by rule as the trades come up. That is why the count of &#8220;specialty licenses&#8221; is the number prep pages disagree on most, and why several still quote a figure that is simply out of date.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>A specialty contractor means a contractor whose scope of work is limited to a particular phase of construction through which the specialty contractor qualifies.<\/p><cite><a href=\"https:\/\/www.flsenate.gov\/laws\/statutes\/2025\/489.105\" target=\"_blank\" rel=\"noopener\">Section 489.105(3)(q), Florida Statutes<\/a><\/cite><\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">On August 28, 2024, the CILB consolidated roughly a dozen separate specialty rules, including the ones that used to certify residential pool and spa servicing, industrial facility work and irrigation on their own, into a single rule. <a href=\"https:\/\/flrules.org\/gateway\/ruleno.asp?id=61G4-15.100&#038;Section=0\" target=\"_blank\" rel=\"noopener\">Rule 61G4-15.100, Certified Specialty Contractors<\/a>, now lists 21 lettered categories, among them structural aluminum or screen enclosures, marine construction, structural masonry, structural steel, structural pre-stressed precast concrete, structural carpentry, window and door installation, garage door installation, plaster and lath, gypsum drywall, glass and glazing, building demolition, irrigation, tower construction, gas line work and residential swimming pool\/spa servicing. Two older categories under their own separate rules, solar water heating and pollutant storage tank testing, sit outside this consolidated rule because they implement different letters of the statute, (3)(o) and (3)(p), not the (3)(q) catch all.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So when a page says Florida has &#8220;22&#8221; specialty contractor licenses without naming a rule or a date, treat it as an estimate rather than a citation. The current, dated count under the rule that actually defines the catch all category is 21, not 22, and it changed inside the last two years.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The confusion this creates is not just academic. One contractor with 35 years in the sign industry described on the trade forum <a href=\"https:\/\/www.contractortalk.com\/threads\/what-type-of-license-for-florida.455596\/\" target=\"_blank\" rel=\"noopener\">Contractor Talk<\/a> in May 2024 being told he would need either a General Contractor license or a Specialty Structure certification to install certain signage statewide, and that his decades of sign industry experience would not count toward either because the board wants that experience to come from work performed under a general contractor. It is one account, not a rule, but it shows how a trade that straddles two categories can leave an experienced tradesperson qualified for the work and still short of the license the board recognizes for it.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"why-isnt-electrical-contracting-regulated-by-the-same-board\">Why isn&#8217;t electrical contracting regulated by the same board?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Electrical and alarm system contracting are licensed under an entirely different part of the same chapter, <a href=\"https:\/\/www.flsenate.gov\/Laws\/Statutes\/2025\/Chapter489\/PART_II\" target=\"_blank\" rel=\"noopener\">Chapter 489, Part II<\/a>, sections 489.501 through 489.538, by the Electrical Contractors&#8217; Licensing Board (ECLB) rather than the CILB. The ECLB operates under its own administrative code chapter, 61G6, not the 61G4 chapter that governs every category above. The two boards appoint a joint committee that meets at least twice a year, and a contractor who already holds a current certified CILB license is not required to retake the Business and Finance exam to add an ECLB license, but the two credentials remain separate applications under separate boards, not one license covering both. Our guide to the <a href=\"https:\/\/passcontractorexam.com\/articles\/florida-electrical-contractor-license\/\">Florida electrical contractor license<\/a> covers that board&#8217;s own categories in full.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"which-license-should-you-actually-apply-for\">Which license should you actually apply for?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">passcontractorexam.com is an independent study resource. It is not affiliated with, and does not speak for, the Florida DBPR, the CILB or the ECLB; the categories above are summarized from the statute and the board&#8217;s own rules so you can read the primary source yourself before you decide. Pick by the broadest work you actually plan to do, not the narrowest job on your schedule this month, because moving to a broader category later means qualifying and testing again rather than filing a form.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Once you know which category fits, <a href=\"https:\/\/passcontractorexam.com\/articles\/florida-contractor-license-requirements\/\">the full Florida contractor license requirements checklist<\/a> covers the experience, credit, insurance and background check steps that apply whichever license you choose, and <a href=\"https:\/\/passcontractorexam.com\/articles\/florida-contractor-license-lookup\/\">how to look up a Florida contractor license<\/a> explains how to decode the specific license type code, CGC, CBC, CRC or a Division II abbreviation, on an existing record.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Whichever category you hold, the board enforces the category, not the quality of the work. Building or contracting outside your license&#8217;s statutory scope is treated as <a href=\"https:\/\/www2.myfloridalicense.com\/construction-industry\/\" target=\"_blank\" rel=\"noopener\">unlicensed activity<\/a> for that job even when the license itself is genuine and current.<\/p>\n\n\n\n<div class=\"msq-tool msq-choose\" data-id=\"license-type-fit\">\n<h3>Which license category fits your work?<\/h3>\n<p>Pick the description closest to what you actually do. This reads the statute&#8217;s own category tests; it does not assess your experience, your finances or your eligibility to apply.<\/p>\n<label><input type=\"radio\" name=\"license-type-fit\" value=\"any-building\">I build or plan to build any size building, residential or commercial<\/label>\n<label><input type=\"radio\" name=\"license-type-fit\" value=\"mid-building\">I build or remodel buildings up to three stories, residential or small commercial<\/label>\n<label><input type=\"radio\" name=\"license-type-fit\" value=\"homes\">I build or remodel one, two or three family homes up to two habitable stories<\/label>\n<label><input type=\"radio\" name=\"license-type-fit\" value=\"single-trade\">I work within one named trade, such as roofing, plumbing, air conditioning or pool construction<\/label>\n<label><input type=\"radio\" name=\"license-type-fit\" value=\"narrow-trade\">I do specialized work not named as its own Division II trade, such as marine construction, structural steel or irrigation<\/label>\n<label><input type=\"radio\" name=\"license-type-fit\" value=\"electrical\">I do electrical or alarm system work<\/label>\n<div class=\"msq-choice-result\" data-for=\"any-building\" hidden><strong>General Contractor (CGC).<\/strong> Section 489.105(3)(a) is unlimited as to the type of work, the only Division I license with no height or unit cap.<\/div>\n<div class=\"msq-choice-result\" data-for=\"mid-building\" hidden><strong>Building Contractor (CBC).<\/strong> Section 489.105(3)(b) covers commercial and residential buildings up to three stories.<\/div>\n<div class=\"msq-choice-result\" data-for=\"homes\" hidden><strong>Residential Contractor (CRC).<\/strong> Section 489.105(3)(c) covers this directly; the site&#8217;s CRC guide goes through the experience rules in full.<\/div>\n<div class=\"msq-choice-result\" data-for=\"single-trade\" hidden>A <strong>Division II trade category<\/strong> fits, named directly in section 489.105(3)(d) through (p). Check the trade table above for the exact letter and scope.<\/div>\n<div class=\"msq-choice-result\" data-for=\"narrow-trade\" hidden>Likely a <strong>specialty contractor certification<\/strong> under Rule 61G4-15.100, the board rule that implements the section 489.105(3)(q) catch all.<\/div>\n<div class=\"msq-choice-result\" data-for=\"electrical\" hidden>Not a CILB license at all. Electrical and alarm contracting is licensed separately by the <strong>Electrical Contractors&#8217; Licensing Board<\/strong> under Chapter 489, Part II.<\/div>\n<p class=\"msq-note\">This chooser reads the statute&#8217;s own category definitions. It does not predict approval or promise eligibility.<\/p>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"frequently-asked-questions\">Frequently asked questions<\/h2>\n\n\n<div id=\"rank-math-faq\" class=\"rank-math-block\">\n<div class=\"rank-math-list \">\n<div id=\"faq-q-1\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">How many contractor license types does Florida have?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>It depends what is being counted. Florida Statutes 489.105(3) names 17 letters, three Division I licenses and fourteen Division II categories, the last of which is a specialty contractor catch all. That catch all is further divided by board rule into 21 specialty categories as of August 28, 2024, under Rule 61G4-15.100.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-2\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">What is the difference between a certified and a registered contractor in Florida?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>A certified contractor can work anywhere in the state on a single state issued license. A registered contractor is tied to the specific local jurisdiction where the registration was issued and needs a separate registration or a local competency card to work elsewhere.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-3\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Can an electrical contractor get a CILB license?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>No. Electrical and alarm system contracting is licensed under Chapter 489, Part II by the Electrical Contractors&#8217; Licensing Board, a separate board operating under its own administrative code chapter, not the Construction Industry Licensing Board that issues the categories in this article.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-4\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Is a Class C air conditioning license still available in Florida?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>No new Class C certifications have been issued since October 1, 1988. It remains a valid, grandfathered category limited to servicing existing systems for contractors who already held it before that date.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-5\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Does passcontractorexam.com decide which license category I need?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>No. This site is independent of the Florida DBPR and does not make that determination. The categories here are summarized from the statute and board rules so you can confirm the fit against your own work before applying.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-6\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">What happens if I hold the wrong license type for a job?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Working outside your license&#8217;s statutory scope is treated as unlicensed activity for that specific job, even though the license itself is genuine and current, and it carries the same enforcement exposure as having no license at all for that piece of work.<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n<div class=\"msq-end\" id=\"ms-quiz-end\">\n<p><strong>Finished the page?<\/strong> The same five questions from the top, to see what stuck.<\/p>\n<button type=\"button\" class=\"msq-btn msq-start-test\">Test Your Understanding of This Article<\/button>\n<div class=\"msq-mount\"><\/div>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Rules and fees change without notice. This page was verified on the date shown and is rechecked on the weekly refresh. If you hit something different, tell us in the comments.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Florida contractor license types split into two divisions under Florida Statute 489.105: Division I covers general, building and residential contractors, while Division II covers twelve trade categories plus a specialty contractor catch all with 21 narrower trades in its own rule. Electrical licensing sits under a separate board entirely.<\/p>\n","protected":false},"author":1,"featured_media":473,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","rank_math_title":"Florida Contractor License Types: Every Category Explained","rank_math_description":"Florida contractor license types split into two divisions and 21 specialty categories, each with its own statutory scope and board rule.","rank_math_focus_keyword":"florida contractor license types","rank_math_canonical_url":"","rank_math_breadcrumb_title":"","rank_math_facebook_title":"","rank_math_facebook_description":"","rank_math_facebook_image":"","rank_math_twitter_title":"","rank_math_twitter_description":"","rank_math_twitter_image":"","rank_math_pillar_content":"","rank_math_robots":[],"rank_math_advanced_robots":[]},"categories":[4],"tags":[],"class_list":["post-476","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-licensing"],"_links":{"self":[{"href":"https:\/\/passcontractorexam.com\/articles\/wp-json\/wp\/v2\/posts\/476","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/passcontractorexam.com\/articles\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/passcontractorexam.com\/articles\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/passcontractorexam.com\/articles\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/passcontractorexam.com\/articles\/wp-json\/wp\/v2\/comments?post=476"}],"version-history":[{"count":5,"href":"https:\/\/passcontractorexam.com\/articles\/wp-json\/wp\/v2\/posts\/476\/revisions"}],"predecessor-version":[{"id":502,"href":"https:\/\/passcontractorexam.com\/articles\/wp-json\/wp\/v2\/posts\/476\/revisions\/502"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/passcontractorexam.com\/articles\/wp-json\/wp\/v2\/media\/473"}],"wp:attachment":[{"href":"https:\/\/passcontractorexam.com\/articles\/wp-json\/wp\/v2\/media?parent=476"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/passcontractorexam.com\/articles\/wp-json\/wp\/v2\/categories?post=476"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/passcontractorexam.com\/articles\/wp-json\/wp\/v2\/tags?post=476"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}