- Order of trades. The usual active-match share across cities: new home 88.5%, roofing 86.0%, remodel 84.0%, plumbing 84.0%, electrical 81.3%, solar 79.1%, HVAC 78.2%.
- Of 156 city-and-trade markets, 42 match 90% or more of their firms to an active license and 9 match under 60%. The low ones are mostly cities matched by business name alone (see the Matched by column).
- License problems: in 39 of the 123 markets where the license file records expired or suspended licenses, 5% or more of the firms on permits match one.
- Current-license lists only: Arlington, VA; Bend, OR; Boulder, CO; Columbus, OH; Medford, OR; Miami, FL publish only licenses in force, so a lapsed license shows up there as no match, not as a problem.
Each figure is the share of contractors who filed a home permit in the trade, in the city's data window, whose name (or license number, where the city records one) matched a license record that was active when we read the license file. A firm counts once per trade however many permits it filed. Owner-builder entries are left out.
The short version: each trade across cities
"Usual active match" is the middle of the city figures, so a big city counts the same as a small one. The license-problem share is the share of firms matched to an expired, suspended or revoked license, in cities whose license file records those statuses at all. City names link to that city's compare page for the trade, where each firm's license status is shown.
| Trade | Cities | Usual active match | Highest | Lowest | Usual license-problem share (cities) |
|---|---|---|---|---|---|
| Electrical | 26 | 81.3% | Cape Coral, FL (96.5%) | Nashville, TN (55.2%) | 3.1% (20) |
| Plumbing | 23 | 84.0% | New York City, NY (96.5%) | Nashville, TN (48.8%) | 2.9% (18) |
| HVAC | 28 | 78.2% | Cape Coral, FL (97.8%) | Nashville, TN (44.2%) | 2.3% (22) |
| Roofing | 17 | 86.0% | Cape Coral, FL (99.4%) | Boulder, CO (65.5%) | 2.9% (15) |
| Remodel | 21 | 84.0% | Cape Coral, FL (99.0%) | Pittsburgh, PA (36.1%) | 2.5% (16) |
| New home | 18 | 88.5% | Cape Coral, FL (99.2%) | Nashville, TN (43.8%) | 3.0% (13) |
| Solar | 23 | 79.1% | Cape Coral, FL (98.9%) | Minneapolis, MN (57.1%) | 3.8% (19) |
Every city, every trade
Each cell is the share of named firms matched to an active license, then (in brackets) the number of named firms. Figures link to the city's compare page for the trade; city names link to its permit statistics. A dash means the city has no such trade, fewer than 30 named firms, or a license file that does not cover the trade (fewer than 40% of firms matched any record). Cities with no license file in our data are not listed.
| City | Electrical | Plumbing | HVAC | Roofing | Remodel | New home | Solar | Matched by | Notes |
|---|---|---|---|---|---|---|---|---|---|
| Anaheim, CA | 84.8% (640) | 86.8% (129) | 87.1% (210) | 82.4% (568) | 90.5% (423) | — | 79.1% (258) | name | state file lists active and suspended licenses only |
| Arlington, VA | 94.3% (524) | 93.1% (448) | 94.2% (274) | — | 94.8% (346) | 96.6% (119) | 95.1% (41) | name | county permits; license list has current licenses only |
| Austin, TX | 65.9% (1,193) | 55.2% (991) | 63.7% (819) | — | — | — | — | name | |
| Bellevue, WA | 90.3% (781) | 86.6% (358) | 85.4% (570) | 90.2% (92) | 84.0% (394) | 88.2% (102) | — | L&I registration | |
| Bellingham, WA | 84.1% (151) | 76.0% (50) | 77.9% (68) | — | 70.3% (101) | 89.7% (68) | — | name | |
| Bend, OR | 76.8% (190) | 72.3% (191) | 69.2% (169) | — | 70.0% (180) | 71.8% (149) | 72.7% (33) | name | license list has current licenses only |
| Boulder, CO | 67.9% (355) | — | 73.1% (324) | 65.5% (426) | 72.0% (414) | 88.7% (53) | 73.2% (112) | name | license list has current licenses only |
| Cape Coral, FL | 96.5% (311) | 84.4% (186) | 97.8% (455) | 99.4% (465) | 99.0% (313) | 99.2% (362) | 98.9% (88) | name | 21 months of data |
| Citrus Heights, CA | 75.3% (344) | 81.9% (94) | 77.2% (302) | 78.9% (365) | 71.7% (244) | — | 77.9% (77) | name | state file lists active and suspended licenses only |
| Columbus, OH | 68.7% (499) | 68.1% (357) | 66.0% (527) | — | — | — | — | name | license list has current licenses only |
| Denton, TX | 69.8% (159) | — | 68.1% (216) | — | — | — | 64.5% (76) | name | |
| Elk Grove, CA | 91.3% (219) | 89.6% (134) | 87.3% (339) | 88.5% (200) | 88.9% (262) | — | 84.3% (115) | name | state file lists active and suspended licenses only |
| Marin County, CA | 88.6% (315) | 84.0% (94) | 88.5% (131) | 86.0% (300) | 90.8% (379) | — | 84.4% (199) | name | unincorporated county; state file lists active and suspended licenses only |
| Medford, OR | 79.2% (96) | 83.6% (73) | 79.5% (83) | — | 79.5% (88) | 81.5% (81) | — | name | license list has current licenses only |
| Miami, FL | 91.3% (1,029) | 92.5% (1,002) | 97.0% (846) | 97.4% (908) | 90.9% (1,475) | 97.4% (311) | 87.8% (74) | name | license list has current licenses only |
| Minneapolis, MN | — | 74.0% (497) | 67.4% (298) | 75.9% (1,483) | 75.0% (1,424) | 77.5% (71) | 57.1% (35) | name | |
| Nashville, TN | 55.2% (1,162) | 48.8% (629) | 44.2% (937) | — | — | 43.8% (2,252) | — | name | 37 months of data |
| New York City, NY | — | 96.5% (709) | 86.9% (1,418) | — | — | 95.6% (297) | 75.9% (87) | license number | |
| Orlando, FL | 95.5% (751) | 95.3% (468) | 91.2% (759) | 97.7% (1,058) | 95.6% (800) | 97.9% (292) | 94.2% (138) | name | |
| Palo Alto, CA | 94.1% (426) | 92.2% (192) | 89.6% (182) | 91.0% (398) | 91.7% (420) | 92.6% (81) | 89.3% (103) | license number, then name | state file lists active and suspended licenses only |
| Pittsburgh, PA | — | — | — | — | 36.1% (549) | 74.2% (31) | — | name | |
| Sacramento County, CA | 85.1% (936) | 87.4% (175) | 81.8% (581) | 78.9% (748) | 83.8% (864) | 86.1% (72) | 79.2% (236) | name | unincorporated county; state file lists active and suspended licenses only |
| Saint Paul, MN | 71.2% (750) | 67.4% (463) | 59.6% (282) | 74.6% (1,301) | 72.0% (955) | 72.4% (58) | 60.0% (30) | name | |
| San Diego, CA | 72.9% (576) | 66.1% (375) | 61.6% (177) | — | 63.1% (534) | 54.9% (91) | 64.1% (423) | name | state file lists active and suspended licenses only |
| San Diego County, CA | 89.2% (760) | 88.2% (288) | 87.2% (218) | 85.4% (294) | 92.4% (225) | 93.8% (129) | 83.6% (495) | license number | unincorporated county; state file lists active and suspended licenses only |
| San Francisco, CA | — | — | — | 91.7% (1,072) | 94.3% (1,925) | — | 95.7% (116) | license number | state file lists active and suspended licenses only |
| Seattle, WA | 83.5% (899) | — | 78.5% (316) | 86.9% (61) | — | — | 87.7% (81) | name | |
| Sugar Land, TX | 77.3% (466) | — | 70.0% (230) | — | — | — | 70.3% (64) | name | |
| Tyler, TX | 73.2% (235) | — | 69.4% (144) | — | — | — | 61.9% (63) | name | |
| Waco, TX | 75.9% (203) | 75.0% (132) | 74.6% (134) | — | — | — | 68.9% (74) | name | |
| Wheaton, IL | — | — | — | 81.7% (295) | — | — | — | name | finish = last passed inspection |
Where license problems are most common
These are the 15 city-and-trade markets with the highest share of firms matched to a license that is expired, suspended, revoked or otherwise not active, among markets with 50 or more named firms (below that, two or three firms swing the share). "Not matched" is the share with no license record found at all.
| City | Trade | Firms | Active match | License problem (firms) | Not matched | Matched by |
|---|---|---|---|---|---|---|
| Pittsburgh, PA | Remodel | 549 | 36.1% | 22.4% (123) | 41.5% | name |
| Denton, TX | Solar | 76 | 64.5% | 21.1% (16) | 14.5% | name |
| Tyler, TX | Solar | 63 | 61.9% | 20.6% (13) | 17.5% | name |
| Waco, TX | Solar | 74 | 68.9% | 16.2% (12) | 14.9% | name |
| New York City, NY | Solar | 87 | 75.9% | 16.1% (14) | 8.0% | license number |
| Bellevue, WA | Remodel | 394 | 84.0% | 14.2% (56) | 0.8% | L&I registration |
| Bellingham, WA | Plumbing | 50 | 76.0% | 14.0% (7) | 8.0% | name |
| Bellevue, WA | HVAC | 570 | 85.4% | 13.0% (74) | 0.0% | L&I registration |
| Bellingham, WA | Remodel | 101 | 70.3% | 12.9% (13) | 14.9% | name |
| New York City, NY | HVAC | 1,418 | 86.9% | 12.8% (181) | 0.4% | license number |
| Seattle, WA | HVAC | 316 | 78.5% | 12.7% (40) | 6.3% | name |
| Saint Paul, MN | New home | 58 | 72.4% | 12.1% (7) | 15.5% | name |
| Minneapolis, MN | Plumbing | 497 | 74.0% | 11.9% (59) | 14.1% | name |
| Bellevue, WA | New home | 102 | 88.2% | 11.8% (12) | 0.0% | L&I registration |
| Bellevue, WA | Plumbing | 358 | 86.6% | 11.7% (42) | 0.0% | L&I registration |
A problem flag is a record status, not proof of unlicensed work. A firm can let one license lapse and work under another, and a permit filed two years ago may predate the lapse. It is still the single most useful thing to check before signing: the compare page lists flagged firms after every firm without a problem.
Why a missing match is usually a name problem
The Matched by column says how each city's firms were tied to a license:
- License number (New York City, San Francisco, unincorporated San Diego County, and Palo Alto before falling back to names). The permit carries the number, so a match is close to certain and a miss usually means the number is no longer in the state file.
- Registration (Bellevue records each contractor's Washington L&I registration on the permit).
- Name (everywhere else). Firms file permits as "ABC Electric" and hold the license as "ABC Electrical Services LLC", or the license belongs to the qualifying individual rather than the company. Pittsburgh's electrical licenses, for example, are held by the master electrician, so company names rarely match; that trade is left out.
So the active-match share is a floor. Cities matched by name sit lower in the table than cities matched by number, and the gap between them is mostly matching, not licensing. Where a state does not license a trade at all (general contractors and roofers in Texas; remodelers and home builders in Ohio; in Wheaton only roofers are matched, because Illinois licenses roofers statewide and the plumbers' state licenses are not linked), the trade drops out of the table rather than showing as unlicensed.
Check one contractor in five minutes
- Ask the contractor for the license number and the exact name on the license.
- Look it up with the issuing board. Our state guides walk through each lookup: California, Florida, Washington, Minnesota, Texas, Virginia.
- Confirm the status is active, the class covers your job, and the name matches your contract. If the license is suspended, our guide to a suspended contractor license says what that means for you.
The difference between hiring a licensed and an unlicensed firm is covered in licensed vs unlicensed contractors.
How we know this
What is counted. Firms that filed one or more permits on houses and small residential buildings in the trade, in the city's data window (three years to September 2026 in most cities; see the Notes column). Owner-builder entries are left out. Each firm was matched to the license file listed on its city's pages (a state board, or the city's own register in Boulder and Pittsburgh) by license number, registration or business name, as the Matched by column says. "Active match" means the matched record's status was Active; a license problem means its status was expired, suspended, revoked, inactive, surrendered, on hold or voluntarily terminated.
What is left out. Cities with no license file in our data (22 of the 53, including Chicago, Denver, Raleigh and Scottsdale). City-and-trade cells with fewer than 30 named firms, or where fewer than 40% of firms matched any license record, because there the file does not cover the trade or names cannot be matched. License-problem shares are not shown for cities whose file lists current licenses only (see the Notes column), and the problem ranking needs 50 or more firms.
Caveats. A match is to the license file as we last read it, not as of each permit date. Name matching misses firms that license under a different name and can, rarely, pair two firms with the same name. Nashville's figures come from Tennessee's license file matched by name. Trade names differ by city: the column is the closest match.
Regenerating. The tables are built by seo/tools/studies.py from the same files as every compare page; rerun it after a data refresh.
Numbers come from public permit records in 53 cities, data through October 22, 2026. Nobody paid to be on this page and nobody can.
Pick your city and see every contractor's license status →
Questions
- Does "not matched" mean a contractor is unlicensed?
No. Most permit files record the contractor's business name, not a license number, so we match names to the state or city license file. A firm that files permits under a trade name, a parent company's name or a misspelling will not match even when it is fully licensed. In Seattle, where matching is by name, 5.5% of electrical firms had no match. Treat no match as a reason to ask for the number, not as a finding.
- What counts as a license problem?
A firm whose matched license record is expired, suspended, revoked, inactive, surrendered or voluntarily terminated: the same flag the compare pages show next to the firm. In Minneapolis 171 of 1,483 roofing firms on home permits (11.5%) match a license with one of those statuses. The license may have lapsed after the permits were filed, so check the current status before you hire.
- Why are some trades missing for Texas and Ohio cities?
Texas and Ohio do not license general contractors, remodelers, home builders or roofers at the state level, so there is nothing to match those firms to. In Austin only 4.9% of remodel firms match an active license, which says more about the license file than the firms. We leave out any city and trade where fewer than 40% of firms match any license record.
- Why do some cities show no expired or suspended licenses?
Some license files list only licenses currently in force (Florida's file as matched for Miami, Oregon's CCB active-license list for Bend and Medford, Boulder's in-force list, Virginia's and Ohio's current lists). There a lapsed license shows up as no match. California's file lists active and suspended licenses but not expired ones. In Miami 97.4% of roofing firms match an active license.
- How do I check a contractor's license myself?
Ask for the license number and look it up with the board that issued it: the CSLB in California, Washington L&I's Verify a Contractor page, myfloridalicense.com in Florida, DPOR in Virginia, the Department of Labor and Industry lookup in Minnesota, the CCB in Oregon. Check the status, the license class (does it cover the work?) and the name on the license against the name on your contract. It takes about five minutes.
Build your own list
Pick your city and the kind of work. Every firm with a permit on record, sorted by what you value.
Related guides
- How concentrated is the contractor market? Top-5 share by city and trade
- How many contractors are active? Firms per city and trade, and how many are new or gone quiet
- Which cities' contractors finish their permits? Completion rates in 2026
- Where permits stay open: share of permits still open after a year, by city and trade
- How to check a contractor's license in Utah