{"id":440,"date":"2026-09-28T01:33:16","date_gmt":"2026-09-28T05:33:16","guid":{"rendered":"https:\/\/passcontractorexam.com\/articles\/?p=440"},"modified":"2026-09-28T01:40:31","modified_gmt":"2026-09-28T05:40:31","slug":"florida-contractor-license-lookup","status":"publish","type":"post","link":"https:\/\/passcontractorexam.com\/articles\/florida-contractor-license-lookup\/","title":{"rendered":"Florida Contractor License Lookup: How to Read the Record"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>A Florida contractor license lookup is free on the DBPR&#8217;s Verify a Licensee search at myfloridalicense.com, by name, license number, city or county, or license type. Read three things on the result: the letters in the number, where C means certified statewide and R means registered locally; a status of Current, Active; and the expiry date.<\/strong><\/p>\n\n\n\n<div class=\"msq-audio\" data-article=\"florida-contractor-license-lookup\" data-minutes=\"14\">\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-lookup\/#audio\",\"name\":\"Florida Contractor License Lookup: How to Read the Record, read aloud\",\"description\":\"Synthetic voice reading of the article, recorded 28 September 2026.\",\"contentUrl\":\"https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/09\/florida-contractor-license-lookup-audio-202609281110.mp3\",\"encodingFormat\":\"audio\/mpeg\",\"duration\":\"PT13M34S\",\"uploadDate\":\"2026-09-28\",\"inLanguage\":\"en-US\",\"isAccessibleForFree\":true,\"mainEntityOfPage\":\"https:\/\/passcontractorexam.com\/articles\/florida-contractor-license-lookup\/\",\"hasPart\":[{\"@type\":\"Clip\",\"name\":\"Florida Contractor License Lookup: How to Read the Record\",\"startOffset\":0,\"endOffset\":75},{\"@type\":\"Clip\",\"name\":\"Where do you look up a Florida contractor license?\",\"startOffset\":75,\"endOffset\":153,\"url\":\"https:\/\/passcontractorexam.com\/articles\/florida-contractor-license-lookup\/#where-do-you-look-up-a-florida-contractor-license\"},{\"@type\":\"Clip\",\"name\":\"What do the letters at the front of the license number mean?\",\"startOffset\":153,\"endOffset\":344,\"url\":\"https:\/\/passcontractorexam.com\/articles\/florida-contractor-license-lookup\/#what-do-the-letters-at-the-front-of-the-license-number-mean\"},{\"@type\":\"Clip\",\"name\":\"What does each license status on the record mean?\",\"startOffset\":344,\"endOffset\":482,\"url\":\"https:\/\/passcontractorexam.com\/articles\/florida-contractor-license-lookup\/#what-does-each-license-status-on-the-record-mean\"},{\"@type\":\"Clip\",\"name\":\"Is the license certified or registered, and why does it matter?\",\"startOffset\":482,\"endOffset\":555,\"url\":\"https:\/\/passcontractorexam.com\/articles\/florida-contractor-license-lookup\/#is-the-license-certified-or-registered-and-why-does-it-matte\"},{\"@type\":\"Clip\",\"name\":\"What does the DBPR record not tell you?\",\"startOffset\":555,\"endOffset\":707,\"url\":\"https:\/\/passcontractorexam.com\/articles\/florida-contractor-license-lookup\/#what-does-the-dbpr-record-not-tell-you\"},{\"@type\":\"Clip\",\"name\":\"What should you do when the record does not match?\",\"startOffset\":707,\"endOffset\":814,\"url\":\"https:\/\/passcontractorexam.com\/articles\/florida-contractor-license-lookup\/#what-should-you-do-when-the-record-does-not-match\"}],\"contentSize\":\"5.7 MB\"}<\/script>\n<p class=\"msq-audio-lead\"><strong>Listen to this article<\/strong>, about 14 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\/09\/florida-contractor-license-lookup-audio-202609281110.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 Lookup: How to Read the Record\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">0:00<\/span><a href=\"#top\">Florida Contractor License Lookup: How to Read the Record<\/a><\/li>\n<li data-start=\"74.66\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"74.66\" aria-label=\"Play from: Where do you look up a Florida contractor license?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">1:15<\/span><a href=\"#where-do-you-look-up-a-florida-contractor-license\">Where do you look up a Florida contractor license?<\/a><\/li>\n<li data-start=\"153.04\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"153.04\" aria-label=\"Play from: What do the letters at the front of the license number mean?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">2:33<\/span><a href=\"#what-do-the-letters-at-the-front-of-the-license-number-mean\">What do the letters at the front of the license number mean?<\/a><\/li>\n<li data-start=\"343.82\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"343.82\" aria-label=\"Play from: What does each license status on the record mean?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">5:44<\/span><a href=\"#what-does-each-license-status-on-the-record-mean\">What does each license status on the record mean?<\/a><\/li>\n<li data-start=\"481.88\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"481.88\" aria-label=\"Play from: Is the license certified or registered, and why does it matter?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">8:02<\/span><a href=\"#is-the-license-certified-or-registered-and-why-does-it-matte\">Is the license certified or registered, and why does it matter?<\/a><\/li>\n<li data-start=\"555.46\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"555.46\" aria-label=\"Play from: What does the DBPR record not tell you?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">9:15<\/span><a href=\"#what-does-the-dbpr-record-not-tell-you\">What does the DBPR record not tell you?<\/a><\/li>\n<li data-start=\"707.08\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"707.08\" aria-label=\"Play from: What should you do when the record does not match?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">11:47<\/span><a href=\"#what-should-you-do-when-the-record-does-not-match\">What should you do when the record does not match?<\/a><\/li>\n<\/ol><\/nav>\n<p class=\"msq-audio-note\">Recorded 28 September 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\",48],[3.36,\"p\",\"afloridacontractorlicens\",133],[16.8,\"p\",\"readthreethingsontheresu\",140],[28.88,\"p\",\"onthispageeverylicenseco\",189],[44.0,\"p\",\"awholecottageindustryofl\",139],[54.36,\"p\",\"thispagedoestheopposite\",23],[55.76,\"p\",\"itsendsyoutotheofficials\",163],[67.92,\"p\",\"thissiteisindependentoft\",80],[74.66,\"h\",\"wheredoyoulookupaflorida\",41],[77.02,\"p\",\"thesearchisthedepartment\",65],[82.5,\"p\",\"itoffersfourwaysinsearch\",75],[90.94,\"p\",\"nameistheonemostpeopleus\",118],[98.22,\"p\",\"thatisbydesign\",14],[99.46,\"p\",\"undersection489119ofthef\",84],[108.98,\"p\",\"itoperatesthroughaqualif\",127],[118.38,\"p\",\"soifasearchonthecompanyn\",98],[125.98,\"p\",\"thesamestatuterequiresth\",153],[136.1,\"p\",\"therecordalsocarriestwok\",34],[138.34,\"p\",\"thedepartmentsglossaryde\",150],[149.1,\"p\",\"atradingnamethatappearso\",48],[153.04,\"h\",\"whatdothelettersatthefro\",48],[156.16,\"p\",\"everyconstructionlicense\",84],[161.92,\"p\",\"thecodeisthefastestwayto\",83],[168.08,\"p\",\"thetablebelowiscompiledf\",163],[181.32,\"t\",\"cgc\",70],[188.56,\"t\",\"cbc\",71],[195.08,\"t\",\"crc\",74],[202.92,\"t\",\"ccc\",70],[209.32,\"t\",\"cac\",104],[221.44,\"t\",\"cmc\",73],[228.84,\"t\",\"cfc\",71],[237.04,\"t\",\"cpc\",100],[247.16,\"t\",\"cuc\",83],[254.92,\"t\",\"cvc\",68],[262.44,\"t\",\"rgrbrr\",123],[276.16,\"t\",\"rcrfrarm\",139],[293.24,\"t\",\"ecer\",138],[308.4,\"p\",\"twodetailstrippeopleup\",22],[309.96,\"p\",\"cccisroofingnotsomegener\",101],[317.8,\"p\",\"andrrisregisteredresiden\",163],[334.04,\"p\",\"electricalworksitsundera\",138],[343.82,\"h\",\"whatdoeseachlicensestatu\",40],[347.06,\"p\",\"thestatuslinejoinstwowor\",26],[349.3,\"p\",\"thedbprscodelistgivesthe\",105],[357.94,\"p\",\"theglossarythendefinesea\",30],[359.98,\"p\",\"theoneyouwanttoseewhenhi\",115],[367.58,\"t\",\"current\",116],[376.18,\"t\",\"active\",102],[386.94,\"t\",\"inactive\",111],[396.22,\"t\",\"delinquent\",99],[406.98,\"t\",\"nullandvoid\",93],[415.26,\"t\",\"probation\",130],[425.34,\"t\",\"suspended\",96],[435.1,\"t\",\"revoked\",104],[444.5,\"p\",\"thelawbehindthelastcolum\",32],[447.42,\"p\",\"section455271saysalicens\",188],[461.26,\"p\",\"constructionlicensesrene\",147],[472.1,\"p\",\"soarecordshowingdelinque\",110],[481.88,\"h\",\"isthelicensecertifiedorr\",51],[485.36,\"p\",\"thestatutedrawsthelinepl\",29],[487.16,\"p\",\"acertifiedcontractorunde\",169],[501.24,\"p\",\"aregisteredcontractorund\",154],[514.48,\"p\",\"inpracticethatmeansanrgl\",76],[520.24,\"p\",\"ifyourjobisintampaandthe\",174],[531.24,\"p\",\"thefullcomparisonincludi\",114],[538.32,\"p\",\"tradesthestatedoesnotlic\",126],[547.0,\"p\",\"ourpageonwhatyoucanlegal\",99],[555.46,\"h\",\"whatdoesthedbprrecordnot\",31],[557.86,\"p\",\"acleanrecordislessreassu\",54],[562.66,\"p\",\"firstcomplaintsstaypriva\",35],[564.98,\"p\",\"undersection45522510acom\",140],[577.38,\"p\",\"acontractorcanhavesevera\",115],[585.06,\"p\",\"whatyouseeisfinisheddisc\",44],[589.26,\"p\",\"secondtherecordisnotanin\",42],[592.58,\"p\",\"itshowsthelicensenotwhet\",57],[596.22,\"p\",\"askforthecertificateandc\",46],[599.7,\"p\",\"workerscompensationissep\",207],[614.02,\"p\",\"thirditdoesnotconfirmthe\",37],[617.58,\"p\",\"alicensetellsyouthecateg\",54],[621.82,\"p\",\"therecordwillnottellyout\",138],[630.86,\"p\",\"youhavetosetthecodeagain\",33],[633.06,\"t\",\"isthispersonlicensedandi\",101],[643.66,\"t\",\"cantheycontracttoday\",83],[652.22,\"t\",\"cantheyworkinmycounty\",129],[662.78,\"t\",\"aretherecomplaintsagains\",107],[673.58,\"t\",\"dotheycarryliabilityinsu\",114],[683.1,\"t\",\"dotheycarryworkerscompen\",115],[692.82,\"t\",\"ismyjobinsidetheirlicens\",117],[707.08,\"h\",\"whatshouldyoudowhenthere\",40],[709.4,\"p\",\"ifthenumberbelongstosome\",133],[720.64,\"p\",\"contractingwithoutalicen\",171],[733.32,\"p\",\"declaredemergenciesinflo\",86],[739.12,\"p\",\"youcanreportitthroughthe\",42],[742.24,\"p\",\"thereisalsoabackstopthat\",49],[745.52,\"p\",\"thefloridahomeownerscons\",119],[752.92,\"p\",\"section489143capseachcla\",147],[770.24,\"p\",\"thedepartmentsannualrepo\",85],[781.08,\"p\",\"thefundisbuiltaroundclai\",197],[792.76,\"p\",\"ifyouarereadingthisasane\",104],[801.08,\"p\",\"ourguidetowhattodoafterp\",98],[809.36,\"p\",\"nolookuptrickmakesthatfa\",55]];\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: every license code letter decoded from the DBPR&#8217;s own code list, each status word defined from the department&#8217;s glossary, a table of what the record does and does not answer, and a six point checklist to run before you sign.<\/p>\n\n\n\n<div class=\"msq\" id=\"ms-quiz\" data-slug=\"florida-contractor-license-lookup\" data-category=\"Florida contractor 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=\"Where do you look up a Florida contractor license?\" data-section=\"#where-do-you-look-up-a-florida-contractor-license\">\n<p class=\"msq-question\">1. Why can a search on a contracting company&#8217;s name come back empty even when the work is licensed?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 1 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">Company records are hidden until the first complaint<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">The business operates through a qualifying agent&#8217;s license, not a certificate of its own<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">Only electrical contractors are listed by business name<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>Under <a href=\"http:\/\/www.leg.state.fl.us\/statutes\/index.cfm?App_mode=Display_Statute&#038;URL=0400-0499\/0489\/Sections\/0489.119.html\" target=\"_blank\" rel=\"noopener\">section 489.119<\/a> a business organization operates through a qualifying agent who must be certified or registered, so search the qualifier&#8217;s name or the license number. <a class=\"msq-section\" href=\"#where-do-you-look-up-a-florida-contractor-license\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"2\" data-answer=\"a\" data-title=\"What do the letters at the front of the license number mean?\" data-section=\"#what-do-the-letters-at-the-front-of-the-license-number-mean\">\n<p class=\"msq-question\">2. On the DBPR&#8217;s code list, what is a CCC license?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 2 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">Certified Roofing Contractor<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">Certified Commercial Contractor<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">Certified Construction Consultant<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>The <a href=\"https:\/\/www2.myfloridalicense.com\/about-us\/understanding-dbpr-codes\/\" target=\"_blank\" rel=\"noopener\">DBPR code list<\/a> gives CCC as Certified Roofing Contractor, and RC as its registered equivalent. <a class=\"msq-section\" href=\"#what-do-the-letters-at-the-front-of-the-license-number-mean\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"3\" data-answer=\"b\" data-title=\"What does each license status on the record mean?\" data-section=\"#what-does-each-license-status-on-the-record-mean\">\n<p class=\"msq-question\">3. What does Current, Inactive mean on a contractor&#8217;s record?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 3 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">The license is under investigation<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">The holder has met the requirements but is not allowed to work under the license<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">The license has expired and must be reapplied for<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>The DBPR <a href=\"https:\/\/www.myfloridalicense.com\/glossary.asp\" target=\"_blank\" rel=\"noopener\">glossary<\/a> defines Inactive as having met the requirements but not being allowed to work under the license. <a class=\"msq-section\" href=\"#what-does-each-license-status-on-the-record-mean\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"4\" data-answer=\"b\" data-title=\"Is the license certified or registered, and why does it matter?\" data-section=\"#is-the-license-certified-or-registered-and-why-does-it-matte\">\n<p class=\"msq-question\">4. Where may a registered contractor, with a number starting R, contract?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 4 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 jurisdictions whose competency requirements they met<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">Only on residential jobs, anywhere in Florida<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span><a href=\"http:\/\/www.leg.state.fl.us\/statutes\/index.cfm?App_mode=Display_Statute&#038;URL=0400-0499\/0489\/Sections\/0489.105.html\" target=\"_blank\" rel=\"noopener\">Section 489.105(10)<\/a> says registered contractors may contract only in the jurisdictions for which the registration was issued. <a class=\"msq-section\" href=\"#is-the-license-certified-or-registered-and-why-does-it-matte\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"5\" data-answer=\"b\" data-title=\"What does the DBPR record not tell you?\" data-section=\"#what-does-the-dbpr-record-not-tell-you\">\n<p class=\"msq-question\">5. When does a complaint against a Florida contractor become a public record?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 5 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">As soon as it is filed<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">Ten days after probable cause has been found, unless the licensee waives confidentiality first<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">Only after the license is revoked<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span><a href=\"http:\/\/www.leg.state.fl.us\/statutes\/index.cfm?App_mode=Display_Statute&#038;URL=0400-0499\/0455\/Sections\/0455.225.html\" target=\"_blank\" rel=\"noopener\">Section 455.225(10)<\/a> keeps complaints confidential until 10 days after probable cause is found. <a class=\"msq-section\" href=\"#what-does-the-dbpr-record-not-tell-you\">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<p class=\"wp-block-paragraph\">A whole cottage industry of lookup sites now sits on top of that free state search, each one repackaging the same public data with more advertising and less explanation. This page does the opposite. It sends you to the official search and then explains what each field on the record means, using the department&#8217;s own code table and glossary and the statutes behind them, all read on 28 September 2026. This site is independent of the DBPR and has no access to anything the public search does not show.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"where-do-you-look-up-a-florida-contractor-license\">Where do you look up a Florida contractor license?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The search is the department&#8217;s <a href=\"https:\/\/www.myfloridalicense.com\/wl11.asp\" target=\"_blank\" rel=\"noopener\">Verify a Licensee page<\/a> on myfloridalicense.com. It offers four ways in: search by name, by license number, by city or county, and by license type. Name is the one most people use, and the one most likely to mislead, because the business on the truck is often not the person who holds the license.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That is by design. Under <a href=\"http:\/\/www.leg.state.fl.us\/statutes\/index.cfm?App_mode=Display_Statute&#038;URL=0400-0499\/0489\/Sections\/0489.119.html\" target=\"_blank\" rel=\"noopener\">section 489.119 of the Florida Statutes<\/a>, a company does not hold its own contractor certificate. It operates through a qualifying agent who must be certified or registered, which our guide to the <a href=\"https:\/\/passcontractorexam.com\/articles\/qualifying-agent-florida-contractor-license\/\">qualifying agent&#8217;s legal obligations<\/a> covers in detail. So if a search on the company name comes back empty, search the individual named on the contract, or use the number itself. The same statute requires the license number to appear on every offer of services, bid, contract and advertisement, so a contractor who cannot show you one has already told you something.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The record also carries two kinds of name. The department&#8217;s <a href=\"https:\/\/www.myfloridalicense.com\/glossary.asp\" target=\"_blank\" rel=\"noopener\">glossary<\/a> defines the primary name as the legal name on the license and the alternate name as an additional one the licensee has given, such as a doing business as name. A trading name that appears on neither is worth a question.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-do-the-letters-at-the-front-of-the-license-number-mean\">What do the letters at the front of the license number mean?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Every construction license number begins with a letter code for the license type, followed by digits. The code is the fastest way to tell what the person is licensed to do and whether that license travels. The table below is compiled from the occupation code list on the DBPR&#8217;s <a href=\"https:\/\/www2.myfloridalicense.com\/about-us\/understanding-dbpr-codes\/\" target=\"_blank\" rel=\"noopener\">Understanding DBPR Codes page<\/a>, as captured in May 2026, with the categories checked against the definitions in <a href=\"http:\/\/www.leg.state.fl.us\/statutes\/index.cfm?App_mode=Display_Statute&#038;URL=0400-0499\/0489\/Sections\/0489.105.html\" target=\"_blank\" rel=\"noopener\">section 489.105<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Code<\/th><th>What the DBPR code list says it is<\/th><th>Reach<\/th><\/tr><\/thead><tbody><tr><td>CGC<\/td><td>Certified General Contractor<\/td><td>Statewide<\/td><\/tr><tr><td>CBC<\/td><td>Certified Building Contractor<\/td><td>Statewide<\/td><\/tr><tr><td>CRC<\/td><td>Certified Residential Contractor<\/td><td>Statewide<\/td><\/tr><tr><td>CCC<\/td><td>Certified Roofing Contractor<\/td><td>Statewide<\/td><\/tr><tr><td>CAC<\/td><td>Certified Air Conditioning Contractor, with a class A, B or service class<\/td><td>Statewide<\/td><\/tr><tr><td>CMC<\/td><td>Certified Mechanical Contractor<\/td><td>Statewide<\/td><\/tr><tr><td>CFC<\/td><td>Certified Plumbing Contractor<\/td><td>Statewide<\/td><\/tr><tr><td>CPC<\/td><td>Certified Pool\/Spa Contractor, commercial, residential or service<\/td><td>Statewide<\/td><\/tr><tr><td>CUC<\/td><td>Certified Utility and Excavation Contractor<\/td><td>Statewide<\/td><\/tr><tr><td>CVC<\/td><td>Certified Solar Contractor<\/td><td>Statewide<\/td><\/tr><tr><td>RG, RB, RR<\/td><td>Registered General, Building and Residential Contractor<\/td><td>Only where the local competency was earned<\/td><\/tr><tr><td>RC, RF, RA, RM<\/td><td>Registered Roofing, Plumbing, Air Conditioning and Mechanical Contractor<\/td><td>Only where the local competency was earned<\/td><\/tr><tr><td>EC, ER<\/td><td>Electrical Contractor (certified) and Registered Electrical Contractor, under a separate board<\/td><td>Statewide, or local for ER<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">Compiled from the DBPR occupation code list for board 06, Construction Industry, and board 08, Electrical Contractors, captured May 2026 and read 28 September 2026.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Two details trip people up. CCC is roofing, not some general construction class, so a CCC holder quoting for a kitchen extension is outside the license. And RR is Registered Residential, not roofing: at least one third party lookup guide we read on 28 September 2026 lists RR as a roofing license, while the department&#8217;s own list gives roofing the code RC. Electrical work sits under a different board altogether, so an electrician&#8217;s number starts with E, as our guide to the <a href=\"https:\/\/passcontractorexam.com\/articles\/florida-electrical-contractor-license\/\">Florida electrical contractor license<\/a> explains.<\/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\/09\/studying-documents-for-florida-contractor-license-lookup-jpg.jpg\" alt=\"Weathered hands on a tabbed reference book beside a laptop, starting a florida contractor license lookup.\" class=\"wp-image-438\" srcset=\"https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/09\/studying-documents-for-florida-contractor-license-lookup-jpg.jpg 1376w, https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/09\/studying-documents-for-florida-contractor-license-lookup-jpg-300x167.jpg 300w, https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/09\/studying-documents-for-florida-contractor-license-lookup-jpg-1024x572.jpg 1024w, https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/09\/studying-documents-for-florida-contractor-license-lookup-jpg-768x429.jpg 768w\" sizes=\"auto, (max-width: 1376px) 100vw, 1376px\" \/><figcaption class=\"wp-block-image__caption\">The letters before the digits tell you the license category and how far it reaches.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-does-each-license-status-on-the-record-mean\">What does each license status on the record mean?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The status line joins two words. The DBPR&#8217;s code list gives the primary status as Current, Probation or Suspended, and the secondary status as Active or Inactive. The glossary then defines each word. The one you want to see when hiring is Current, Active: up to date with the department&#8217;s requirements and allowed to operate under the license.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Status word<\/th><th>What the DBPR glossary says<\/th><th>Can the holder contract?<\/th><\/tr><\/thead><tbody><tr><td>Current<\/td><td>Up to date with the department&#8217;s requirements for licensure<\/td><td>Only if also Active<\/td><\/tr><tr><td>Active<\/td><td>Allowed to operate under the associated license<\/td><td>Yes, if Current<\/td><\/tr><tr><td>Inactive<\/td><td>Has met the requirements but is not allowed to work under this license<\/td><td>No<\/td><\/tr><tr><td>Delinquent<\/td><td>Has not completed a timely renewal<\/td><td>No, not until renewed<\/td><\/tr><tr><td>Null and Void<\/td><td>Has failed to renew and would have to reapply<\/td><td>No<\/td><\/tr><tr><td>Probation<\/td><td>Placed on probation as part of discipline or as a condition of licensure<\/td><td>Yes, under conditions<\/td><\/tr><tr><td>Suspended<\/td><td>Work privileges suspended for a specified period<\/td><td>No<\/td><\/tr><tr><td>Revoked<\/td><td>No longer meets the requirements to operate under the license<\/td><td>No<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">Definitions from the DBPR licensing portal glossary, read 28 September 2026. The last column applies section 455.271(1): practice requires an active status license.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The law behind the last column is short. <a href=\"http:\/\/www.leg.state.fl.us\/statutes\/index.cfm?App_mode=Display_Statute&#038;URL=0400-0499\/0455\/Sections\/0455.271.html\" target=\"_blank\" rel=\"noopener\">Section 455.271<\/a> says a licensee may practice only with an active status license, and a delinquent license that is not made active or inactive before the end of the current licensure cycle becomes void without any further action. Construction licenses renew every two years on 31 August, even numbered years for certified and odd numbered years for registered, which our <a href=\"https:\/\/passcontractorexam.com\/articles\/florida-contractor-license-renewal\/\">renewal guide<\/a> sets out with the fees. So a record showing Delinquent in September is a renewal that slipped, and one showing Null and Void is a license that no longer exists.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"900\" src=\"https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/09\/florida-contractor-license-lookup-chart.png\" alt=\"Timeline of the statuses a florida contractor license lookup shows from issue through delinquent to void.\" class=\"wp-image-443\" srcset=\"https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/09\/florida-contractor-license-lookup-chart.png 1600w, https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/09\/florida-contractor-license-lookup-chart-300x169.png 300w, https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/09\/florida-contractor-license-lookup-chart-1024x576.png 1024w, https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/09\/florida-contractor-license-lookup-chart-768x432.png 768w, https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/09\/florida-contractor-license-lookup-chart-1536x864.png 1536w\" sizes=\"auto, (max-width: 1600px) 100vw, 1600px\" \/><figcaption class=\"wp-block-image__caption\">Status words from the DBPR glossary; the dates follow section 455.271, Florida Statutes, for a certified license that missed the 31 August 2026 renewal.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"is-the-license-certified-or-registered-and-why-does-it-matte\">Is the license certified or registered, and why does it matter?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The statute draws the line plainly. A certified contractor, under section 489.105(8), holds a state certificate of competency and may contract in any jurisdiction in Florida without meeting that jurisdiction&#8217;s own competency requirements. A registered contractor, under section 489.105(10), registered with the state after meeting a local jurisdiction&#8217;s competency requirements, and may contract only in those jurisdictions.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In practice that means an RG license from one county says nothing about the next county over. If your job is in Tampa and the number starts with R, check whether the competency was earned in Hillsborough, which our <a href=\"https:\/\/passcontractorexam.com\/articles\/hillsborough-county-contractor-license\/\">Hillsborough County contractor license<\/a> guide covers, or ask the local building department. The full comparison, including why someone would still choose the local route, is in <a href=\"https:\/\/passcontractorexam.com\/articles\/registered-vs-certified-contractor-florida\/\">registered versus certified contractors in Florida<\/a>.<\/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\/09\/inspector-framing-florida-contractor-license-lookup.jpg\" alt=\"Building inspector in a hard hat beside new timber framing, the local side of a florida contractor license lookup.\" class=\"wp-image-439\" srcset=\"https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/09\/inspector-framing-florida-contractor-license-lookup.jpg 1376w, https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/09\/inspector-framing-florida-contractor-license-lookup-300x167.jpg 300w, https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/09\/inspector-framing-florida-contractor-license-lookup-1024x572.jpg 1024w, https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/09\/inspector-framing-florida-contractor-license-lookup-768x429.jpg 768w\" sizes=\"auto, (max-width: 1376px) 100vw, 1376px\" \/><figcaption class=\"wp-block-image__caption\">A registered license only reaches as far as the local jurisdiction that tested its holder.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Trades the state does not license at all, such as painting or flooring in many places, will not appear in the state search, and that is not a red flag in itself. Our page on <a href=\"https:\/\/passcontractorexam.com\/articles\/florida-handyman-requirements\/\">what you can legally do without a contractor license<\/a> draws the line between that work and work that needs one.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-does-the-dbpr-record-not-tell-you\">What does the DBPR record not tell you?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A clean record is less reassuring than it looks, for three reasons.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">First, complaints stay private for a while. Under <a href=\"http:\/\/www.leg.state.fl.us\/statutes\/index.cfm?App_mode=Display_Statute&#038;URL=0400-0499\/0455\/Sections\/0455.225.html\" target=\"_blank\" rel=\"noopener\">section 455.225(10)<\/a>, a complaint and the investigation behind it are confidential until 10 days after probable cause has been found, unless the licensee waives that. A contractor can have several open complaints and a spotless record, and one dismissed without probable cause never becomes public at all. What you see is finished discipline, not accusations.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Second, the record is not an insurance certificate. It shows the license, not whether a liability policy is in force today. Ask for the certificate and confirm it with the insurer. Workers&#8217; compensation is separate again: the state keeps its own online search of policies and of the construction exemptions that corporate officers can elect under <a href=\"http:\/\/www.leg.state.fl.us\/statutes\/index.cfm?App_mode=Display_Statute&#038;URL=0400-0499\/0440\/Sections\/0440.05.html\" target=\"_blank\" rel=\"noopener\">section 440.05<\/a>, so an exemption is worth checking there rather than taking on trust.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Third, it does not confirm the scope of the job. A license tells you the category, and the category sets the limits. The record will not tell you that a residential contractor is quoting a four storey commercial building, or that a roofer is quoting the structural repair underneath. You have to set the code against the work.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Question you have<\/th><th>Does the DBPR record answer it?<\/th><th>Where the answer is<\/th><\/tr><\/thead><tbody><tr><td>Is this person licensed, and in what category?<\/td><td>Yes<\/td><td>License number and code<\/td><\/tr><tr><td>Can they contract today?<\/td><td>Yes<\/td><td>Status: Current, Active<\/td><\/tr><tr><td>Can they work in my county?<\/td><td>Yes for C codes; partly for R codes<\/td><td>Code prefix, then the local building department<\/td><\/tr><tr><td>Are there complaints against them?<\/td><td>Only after probable cause<\/td><td>Section 455.225(10)<\/td><\/tr><tr><td>Do they carry liability insurance now?<\/td><td>No<\/td><td>Their certificate, confirmed with the insurer<\/td><\/tr><tr><td>Do they carry workers&#8217; compensation?<\/td><td>No<\/td><td>The state&#8217;s workers&#8217; compensation coverage search<\/td><\/tr><tr><td>Is my job inside their license?<\/td><td>Only indirectly<\/td><td>The category definitions in section 489.105<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">What the public record covers and what it leaves out, compiled from the statutes and search pages linked above, 28 September 2026.<\/figcaption><\/figure>\n\n\n\n<div class=\"msq-tool msq-check\" data-id=\"pce-record-check\" data-verb=\" checked\">\n<h3>Six things to confirm on a DBPR record before you sign<\/h3>\n<p>Run these against the official search result, not a screenshot someone sends you. Each one comes from the statute or the department&#8217;s own glossary.<\/p>\n<label><input type=\"checkbox\">The license number on the quote or contract matches the number on the record<\/label>\n<label><input type=\"checkbox\">The name on the record, primary or alternate, matches the person or business you are dealing with<\/label>\n<label><input type=\"checkbox\">The status reads Current, Active, not Inactive, Delinquent, Suspended or Null and Void<\/label>\n<label><input type=\"checkbox\">The code letters cover the job: CCC is roofing only, CRC is residential only<\/label>\n<label><input type=\"checkbox\">A number starting R was earned in the county or city where your job is<\/label>\n<label><input type=\"checkbox\">Insurance and workers&#8217; compensation are confirmed separately, because the record shows neither<\/label>\n<p class=\"msq-check-count\"><\/p>\n<p class=\"msq-note\">A clean record means the license is valid today. It does not rate the contractor&#8217;s work, and complaints only appear after probable cause. Ticks are saved on this device only.<\/p>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-should-you-do-when-the-record-does-not-match\">What should you do when the record does not match?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If the number belongs to someone else, the name does not match, or the status is anything other than Current, Active, do not sign or pay a deposit until it is explained. Contracting without a license is a crime under <a href=\"http:\/\/www.leg.state.fl.us\/statutes\/index.cfm?App_mode=Display_Statute&#038;URL=0400-0499\/0489\/Sections\/0489.127.html\" target=\"_blank\" rel=\"noopener\">section 489.127<\/a>: a first offence is a first degree misdemeanor, and a further offence, or any offence during a declared state of emergency, is a third degree felony. Declared emergencies in Florida usually follow a hurricane, so that clause bites hardest after a storm.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You can report it through the DBPR&#8217;s <a href=\"https:\/\/www2.myfloridalicense.com\/file-a-complaint\/\" target=\"_blank\" rel=\"noopener\">complaint page<\/a>. There is also a backstop that only applies to licensed work. The Florida Homeowners&#8217; Construction Recovery Fund repays homeowners harmed by certain violations of a certified or registered contractor. <a href=\"http:\/\/www.leg.state.fl.us\/statutes\/index.cfm?App_mode=Display_Statute&#038;URL=0400-0499\/0489\/Sections\/0489.143.html\" target=\"_blank\" rel=\"noopener\">Section 489.143<\/a> caps each claim, for contracts entered into on or after 1 July 2024, at $100,000 for general, building and residential contractors and $30,000 for the other categories. The department&#8217;s <a href=\"https:\/\/www2.myfloridalicense.com\/os\/documents\/Division%20Annual%20Report%20FY%2023-24.pdf\" target=\"_blank\" rel=\"noopener\">annual report for 2023 to 2024<\/a> records 168 claims paid that year, totalling $3,219,606.86. The fund is built around claims against certified or registered contractors, so it is little comfort if the person you paid was never licensed, which is the strongest argument for running the search before the deposit rather than after it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you are reading this as an exam candidate: once you pass and your license issues, this is the record every customer will check. Our guide to <a href=\"https:\/\/passcontractorexam.com\/articles\/what-to-do-after-passing-the-florida-contractor-exam\/\">what to do after passing the Florida contractor exam<\/a> covers getting from a pass to a Current, Active status. No lookup trick makes that faster, and no prep course can promise it.<\/p>\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 \">Does the Florida contractor license lookup cost anything?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>No. The DBPR&#8217;s Verify a Licensee search on myfloridalicense.com is free and needs no account. Third party lookup sites draw on the same public data.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-2\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Can I look up a contractor by company name?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>You can search by name, but a business operates through a qualifying agent&#8217;s license under section 489.119, so the company name may not return the record you need. Search the qualifier&#8217;s name or the license number instead.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-3\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Why does a license I know exists not show up?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Check the spelling, try the license number, and check whether the trade is licensed by a county rather than the state. Locally licensed trades the state does not regulate will not appear in the state search at all.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-4\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">What does Current, Inactive mean on a contractor&#8217;s record?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>The holder has met the department&#8217;s requirements but is not allowed to work under that license. It is common for retired contractors and for people between employers, and it means they cannot contract on it right now.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-5\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">How long can a license stay Delinquent before it is void?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Under section 455.271(6)(a), a delinquent license that is not made active or inactive before the end of the current licensure cycle becomes void with no further action by the board. After that the holder has to apply again.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-6\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Does a license on the record mean the contractor is any good?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>No. It means the person met the state&#8217;s requirements, passed the exams and is up to date. It says nothing about workmanship, price or how they treat a customer, and complaints only become public after probable cause is found.<\/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>The official DBPR search, the license code letters decoded from the department&#8217;s own list, each status explained, and what a clean record does not prove.<\/p>\n","protected":false},"author":1,"featured_media":437,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","rank_math_title":"Florida Contractor License Lookup: How to Read the Record","rank_math_description":"A Florida contractor license lookup on the DBPR's free search: what the letter codes mean, which statuses let someone work, and what the record hides.","rank_math_focus_keyword":"florida contractor license lookup","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-440","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\/440","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=440"}],"version-history":[{"count":5,"href":"https:\/\/passcontractorexam.com\/articles\/wp-json\/wp\/v2\/posts\/440\/revisions"}],"predecessor-version":[{"id":447,"href":"https:\/\/passcontractorexam.com\/articles\/wp-json\/wp\/v2\/posts\/440\/revisions\/447"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/passcontractorexam.com\/articles\/wp-json\/wp\/v2\/media\/437"}],"wp:attachment":[{"href":"https:\/\/passcontractorexam.com\/articles\/wp-json\/wp\/v2\/media?parent=440"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/passcontractorexam.com\/articles\/wp-json\/wp\/v2\/categories?post=440"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/passcontractorexam.com\/articles\/wp-json\/wp\/v2\/tags?post=440"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}