Research by DoINeedAPermit Research Team · Updated May 2026
The Short Answer
A full roof replacement, tear-off, or material change in Millbrae requires a permit. Repairs under 25% of roof area with matching materials may be exempt, but the City of Millbrae Building Department will scrutinize any tear-off to verify compliance with the 3-layer limit.
Millbrae, sitting in San Mateo County just south of San Francisco, enforces California Title 24 energy code and the California Fire Code (CFC) with particular rigor due to wildfire risk and coastal exposure. What sets Millbrae apart from neighboring cities like Burlingame or San Mateo is the city's strict enforcement of the 3-layer roof limit (IRC R907.4) — inspectors actively probe for hidden layers during initial review, and if a third layer is detected during work, you'll be required to tear off all existing shingles down to the deck. This city also requires early submission of roofing material specs and underlayment details before you can pull the permit; over-the-counter approval is rare. Millbrae's proximity to the bay and Pacific means wind-uplift and salt-spray durability matter, so shingle fastening patterns and ice-and-water-shield placement are reviewed line-by-line. If you're changing materials — shingles to metal, or upgrading to Class A fire-rated tile — the Building Department will flag structural-capacity questions before issuing. Expect the permit process to take 5–10 business days, not 1–2, because of plan-review depth.

What happens if you skip the permit (and you needed one)

Millbrae roof replacement permits — the key details

The foundational rule in Millbrae is California Title 24 Roofing Compliance (CBC §1505, which adopts IRC R905 with California amendments) plus the City's local enforcement of the 3-layer rule. IRC R907.4 states that if your roof has three or more layers, you must strip to the deck; Millbrae Building inspectors probe this early by requiring you to identify existing layer count on the permit application. If you claim two layers and the inspection discovers a third, work stops and you'll be ordered to tear off everything. This isn't theoretical — it happens because roofers sometimes skip disclosure. The fix: before you submit, get on the roof or hire an inspector to count physically. If you're at three layers now, budget a full tear-off (adds $0.50–$1.50 per square foot). If you're at two, overlay is still legal in Millbrae, but the Building Department will ask for written confirmation of layer count signed by a licensed roofer — verbal estimates don't fly.

Material selection triggers different approval paths. A like-for-like replacement (shingles to shingles, same class and color family) is fastest, usually approved over-the-counter in 2–3 business days if the roofer's plans are clear. A material change — shingles to metal, shingles to tile, or upgrading to a higher wind-resistance grade — requires structural review and will go to the plan examiner. Why? IRC R907.2 requires you to verify that the deck and framing can support the new load. Metal is lighter, so it's usually fast-tracked; clay tile is heavier (typically 15 lbs/sq. ft. vs. 2.5–3 for asphalt), and Millbrae will require a structural engineer's letter confirming deck capacity if the roof is original 1970s or earlier construction. Expect 7–10 days for material-change permits. Wind-uplift testing (ASTM D3161) is assumed for modern shingles (Class D, wind-resistant), but Millbrae requires the product data sheet on file. If you're upgrading to Class A fire-rated shingles (especially relevant near Millbrae's wildland-urban interface in the hills), submit the UL classification before the permit issues — inspectors will ask for proof.

Underlayment and secondary-water-barrier requirements are where Millbrae's coastal and fog-heavy environment shapes the code. Per California Energy Commission amendments to IRC R905.2 (Title 24, §150.1(c)), you must use a synthetic underlayment (not felt) with a minimum water-resistance rating of ASTM D779 or better. Millbrae Building Department specifically requires the manufacturer's data sheet and nailing pattern to be submitted with the permit application — hand-written notes or verbal confirmation won't be accepted. Ice-and-water-shield (self-adhering membrane) is required along the eaves (typically 3 feet up the roof) and all valleys. Why? Coastal weather means wind-driven rain and fog saturation; standard underlayment alone fails under those conditions. If the roof pitch is under 4:12, ice-and-water-shield is required across the entire deck. Many roofers under-spec this or forget it altogether, causing rejections. Check your contract with the roofer to ensure they're budgeting synthetic underlayment, not felt, and ice-and-water-shield by default.

Inspection sequencing and permit-office workflow in Millbrae differ from neighboring San Mateo or Burlingame. Millbrae Building Department does NOT offer online permit applications through a third-party portal; instead, applications are submitted in person at City Hall (1600 Trenton Ave) or by fax/email to the Building Department. This means you can't upload documents and track status online — you'll need to call (650-558-7600, extension for Building) to confirm receipt and approval status. Plan-review staff are typically available Mon–Fri, 8 AM–5 PM, and they do NOT review roofing plans over the phone. In-person meetings are common for complex roofs (material changes, structural questions). After approval, you'll receive a permit card or letter; show it to the roofer. Inspections are typically two phases: (1) Deck Inspection (after tear-off, before new underlayment and shingles are nailed) to verify nailing pattern, deck integrity, and flashing prep; (2) Final Inspection (roof fully shingled) to confirm wind-uplift fastening, ridge vent, underlayment overlap, and flashing sealing. Expect 1–2 weeks between rough-in and final, depending on inspector availability. If defects are found, re-inspection fees ($75–$150 per re-visit) apply.

Cost and timeline summary for Millbrae: Permit fees are typically $150–$400, based on the declared valuation of the work ($0.03–$0.05 per dollar of project value). A 2,000 sq. ft. roof replacement valued at $8,000–$12,000 will trigger a $150–$250 permit fee. If a tear-off is required (third layer detected), expect an additional $0.75–$1.50 per sq. ft. labor cost, roughly $1,500–$3,000 on a 2,000 sq. ft. roof. Material-change permits take longer (7–10 days); like-for-like permits are often issued same-day or next-day if the roofer submits complete plans. Total timeline from application to final inspection is typically 3–4 weeks. Do NOT start work before the permit is issued and inspected for deck approval; Millbrae Building Department has a zero-tolerance policy for unpermitted starts.

Three Millbrae roof replacement scenarios

Scenario A
2-layer asphalt shingle replacement, like-for-like, 2,200 sq. ft., Millbrae residential area (no overlay)
You have an original 1980s roof with two layers of asphalt shingles, now failing (curling, algae growth, worn granules). You want to tear it off and install new Class D wind-resistant architectural shingles, same gray color, same pitch. This is a straightforward scenario because (1) you're at two layers, so full tear-off is legal and expected, (2) material is like-for-like, and (3) no structural concerns. Millbrae requires a permit. Costs: Permit fee $200–$250 (based on ~$10,000 project valuation). The roofer pulls the permit, submits a one-page application with roof dimensions, existing layer count (two), new shingle spec sheet, and underlayment type (synthetic, ASTM D779). The Building Department approves over-the-counter in 1–2 business days. Tear-off begins; once the deck is exposed and nailed (roofer drives one test fastener per 4 sq. ft. to verify deck integrity), you call for Deck Inspection. Inspector verifies no rot, checks for a hidden third layer, confirms the underlayment is synthetic (not felt), and signs off in 20 minutes. Work resumes; roofer applies synthetic underlayment and ice-and-water-shield along eaves and valleys (3 feet up). Shingles are nailed at 4 nails per shingle, staggered (6 inches from top, 1 inch down from top of exposure). Ridge vent installed, flashing sealed with roofing cement and sealant. Final Inspection is scheduled; inspector walks the roof, checks nail pattern, flashing overlap, ridge vent closure, and underlayment edge overlap. Inspection passes; permit closes. Total time: 10–14 days from application to final sign-off. Total cost to homeowner: $10,000–$13,000 (materials, labor, permit).
Permit required | 2-layer tear-off (legal) | Synthetic underlayment + ice-and-water-shield required | Deck inspection + final inspection | $200–$250 permit fee | $10,000–$13,000 total project cost
Scenario B
Material upgrade: asphalt shingles to architectural metal standing-seam roof, 1,800 sq. ft., Millbrae hillside home (one existing layer detected during pre-pull inspection)
You live in the Millbrae hills near Skylawn or Black Mountain Open Space and want to upgrade your aging asphalt roof to metal standing-seam for durability and fire resistance (Class A UL listing). During a pre-permit call with the Building Department, you learn that metal roofs require a structural review because the framing layout changes (standing-seam fastening is different from traditional shingle nailing, and seam spacing affects load distribution). The Building Department will NOT approve this over-the-counter; it goes to the plan examiner. Your roofer (or you, if owner-building) must submit: (1) a one-page roof plan with dimensions and existing layer count (you discover one layer when the inspector notes come back — the original roof only), (2) metal roof spec sheet with UL Class A fire rating, wind-uplift test results (ASTM D3161 at 90 mph minimum), and seam spacing, (3) a structural engineer's letter confirming the deck and framing can handle metal (typically not a problem for post-1950 homes, but required by code). Plan review takes 7–10 business days. Permit fee is $250–$350 because the valuation is higher (~$12,000–$15,000 for metal). Once approved, Deck Inspection happens after tear-off; inspector checks deck nailing, confirms no moisture, and verifies metal underlayment (synthetic or aluminum) is installed. Metal roofing requires ice-and-water-shield along eaves plus a solid metal drip-edge and valley flashings. Final Inspection includes checking seam tightness (roofer seals seams per manufacturer spec), flashing overlap, and roof-to-wall transitions. Timeline: 3–4 weeks from application to final. Cost to homeowner: $12,000–$18,000 (materials and labor for metal; engineering letter adds $500–$1,200).
Permit required | Material change (asphalt to metal) | Structural engineer review required | Synthetic or metal underlayment mandatory | UL Class A fire-rating required | $250–$350 permit fee | 3–4 week timeline | $12,000–$18,000 total cost
Scenario C
Partial roof replacement: 30% of roof area (620 sq. ft.), rear slope, two existing layers, matching shingles, Millbrae residential (over 25% threshold triggers full permit)
Your rear roof slope is damaged (impact from falling tree limb during a winter storm), affecting about 30% of the total roof area. You want to patch it with the same shingles that are still in good condition on the front and sides. However, 30% exceeds the 25% threshold at which Millbrae Building Department requires a full permit (not an exemption for minor repair). Here's the local quirk: Millbrae does NOT allow 'partial' re-roofing — if the damaged area is over 25%, you must plan for either a full tear-off and replacement OR a demonstrable overlay on both the affected and adjacent areas. Most roofers in this scenario recommend a full tear-off because the cost difference is small, and it avoids the risk of code violation. If you choose to overlay (install new shingles over the existing two layers after localized repair), Millbrae will flag this as a three-layer system and will order a tear-off during Deck Inspection. The smart move: bite the bullet and do a full roof replacement. Permit fee is $200–$280 (project valuation ~$9,000–$11,000). Application includes the tree-damage claim photos, dimensions, existing layer count (two), and a statement that you're doing a full replacement due to extent of damage. Plan review is 2–3 business days because it's straightforward. Deck Inspection after tear-off checks for any hidden damage (rot, soft spots) from the impact and water intrusion. Underlayment and shingles proceed as in Scenario A. Final Inspection confirms the full roof is code-compliant. Timeline: 10–14 days. Cost: $9,000–$13,000 total. The key learning: Millbrae doesn't allow piecemeal patching over a 25% threshold, so budget for a full replacement if storm damage affects that much area.
Permit required (over 25% area) | Full tear-off mandatory (no partial overlay allowed) | Tree-damage documentation required | $200–$280 permit fee | $9,000–$13,000 total cost | 10–14 day timeline

Every project is different.

Get your exact answer →
Takes 60 seconds · Personalized to your address

Millbrae's coastal and wildfire-risk code enforcement

Millbrae sits at the edge of the San Francisco Bay with coastal fog and wind exposure, plus proximity to wildland-urban interface areas in the nearby hills (Skylawn, Black Mountain). The City adopted the California Fire Code (CFC) with amendments for Class A fire-rated roofing. This means that while a basic Class D asphalt shingle meets IRC R905 minimum standards statewide, Millbrae's Building Department increasingly recommends (and in some cases, for certain high-risk parcels, enforces) Class A fire-rated shingles on replacement roofs. Class A shingles are more expensive (15–25% premium), but they're not technically mandated unless you live in a Local Responsibility Area (LRA) or Very High Fire Hazard Severity Zone (VHFSZ). Check your parcel's fire-hazard zone on the San Mateo County Fire Authority website or ask the Building Department during pre-permit planning.

Wind-uplift fastening is scrutinized in Millbrae due to coastal exposure and winter storms. The Building Department requires that all shingles meet ASTM D3161 wind-uplift test at 90 mph minimum; most modern shingles do, but older or discount-bin products may not. The roofer must provide the product data sheet proving uplift rating, or the permit will be held. Additionally, fastening pattern is inspected line-by-line: 4 nails per shingle, placed 6 inches from the top and 1 inch from the edges, staggered across the roof. Hip and ridge caps require 6 nails per cap. Undersized or overdriven nails are red-flag items; roofers must use roofing nails (galvanized, 1.5 inch length, 0.148 inch diameter) and set them flush without crushing the shingle. Final Inspection includes a fastener pull-test (inspector randomly pulls 10–15 fasteners to verify they're embedded correctly and resist 20+ lbs. of pull force).

Underlayment and moisture management in Millbrae's foggy climate demand synthetic, not felt. The City's Building Department enforces California Title 24 §150.1(c), which requires ASTM D779 synthetic underlayment (typical brands: Titanium, Synthetics, GAF Snow & Ice Shield). Felt underlayment, which is cheap and still legal in drier parts of California, is effectively banned in Millbrae practice — inspectors will reject it and order removal. Cost difference is modest ($0.10–$0.20 per sq. ft.), but it adds up on a 2,000+ sq. ft. roof. Ice-and-water-shield is non-negotiable along eaves (36 inches up), all valleys, and roof-to-wall transitions. Many roofers underestimate the valley ice-and-water-shield requirement; Millbrae inspectors visually verify that valleys are fully covered, not just the centerline.

The Millbrae permit office workflow and how to avoid delays

Millbrae Building Department does not use an online permit portal like some larger Bay Area cities (San Jose, Oakland). Instead, roofing permits are submitted in person at City Hall, 1600 Trenton Ave, Millbrae, CA 94030, during business hours (Mon–Fri, 8 AM–5 PM, closed noon–1 PM). This is a significant workflow difference from neighboring Burlingame or San Mateo, where you can upload documents online. For Millbrae, you must physically hand-carry or fax/email a completed application with attachments. Faxed applications are accepted at (650) 558-7619 (Building Department fax). Email is also available, but response times are slower than in-person submission. The upshot: if you're hiring a roofer, confirm they've submitted the permit application and have a dated receipt from City Hall before work begins.

Required documents for a roofing permit application in Millbrae are: (1) completed Application for Building Permit form (available at City Hall or online), (2) roof plan (hand-drawn or digital) showing roof dimensions, pitch, and existing layer count, (3) manufacturer spec sheet for the new roofing material (shingle, metal, tile), including UL fire rating and wind-uplift test results, (4) underlayment specification (must state synthetic, ASTM D779 or better), (5) a signed statement from the contractor or owner confirming layer count and tear-off scope. Missing any item delays review by 3–5 days. Many roofers skip item (4) or submit incomplete product data, assuming underlayment is 'standard' — it's not. Build time into your schedule for complete documentation.

Plan-review timelines vary. Like-for-like shingle replacements with complete documentation are approved in 1–2 business days (same-day is rare but possible). Material-change permits (shingles to metal, structural upgrades) take 7–10 business days because they require engineer review or structural consultation. If the plan examiner has questions, he or she will call the roofer or owner (depending on who's listed on the application) — this adds 2–3 days if callbacks are delayed. Pro tip: submit the application early in the week (Mon–Tue) to avoid Friday bottlenecks and ensure the examiner can follow up quickly if needed.

Inspection scheduling is manual — you must call the Building Department to request Deck Inspection after tear-off. Average wait time is 2–3 business days. If you call same-day after tear-off, inspections are sometimes available next-day; if you wait a week, you're competing with other permit jobs and wait times stretch. The roofer typically handles this call, but confirm they do. Final Inspection is requested once the roof is fully shingled and flashing sealed; wait time is again 2–3 business days. Total calendar time from permit issuance to final inspection can stretch to 4–5 weeks if there are inspection delays or if defects are found and require re-inspection (additional $75–$150 re-visit fee per trip).

City of Millbrae Building Department
1600 Trenton Ave, Millbrae, CA 94030
Phone: (650) 558-7600, ext. Building
Mon–Fri, 8 AM–5 PM (closed 12–1 PM)

Common questions

Do I need a permit for a roof repair that's less than 25% of the roof area?

If it's a repair (patching a few shingles or replacing flashing without tear-off), it's typically exempt under 25% if like-for-like materials are used. However, Millbrae Building Department considers any work that involves tearing off shingles down to the deck as a 'replacement,' not a 'repair,' and the 25% rule resets — you may need a permit if the torn area is over 25%. Call the Building Department before starting work if the repair involves tear-off, to confirm exemption status. Repairs limited to nail-popping, isolated shingle re-fastening, or caulking (no tear-off) are almost always exempt.

What if an inspection finds a hidden third layer of shingles that I didn't know about?

Millbrae Building Department will issue a Stop-Work Order and require you to tear off all layers down to the deck. This is mandatory per IRC R907.4. Work cannot resume until the full tear-off is complete and re-inspected. Cost of tear-off is typically $1.50–$3.00 per sq. ft. ($3,000–$6,000 on a 2,000 sq. ft. roof), which will be your responsibility unless the contractor signed a warranty that they'd identify layers beforehand. Always do a pre-permit roof inspection or hire a roofer to probe the layers before submitting the application; it's cheaper than a stop-work.

Can I overlay new shingles on top of the existing two layers without tearing off?

Technically, yes — IRC R907 allows overlay on a two-layer roof in most jurisdictions. However, Millbrae Building Department practice discourages it because of the city's strict enforcement of the 3-layer rule. If you overlay, you're creating a three-layer system, and if a future inspector or appraiser identifies this during a sale or refinance, the layers will be flagged as non-code-compliant. Additionally, future re-roofing will be more costly because tear-off is mandatory. Most Millbrae roofers recommend full tear-off even on a two-layer roof because the cost difference is small and it avoids future liability.

How much does a roofing permit cost in Millbrae?

Permit fees are typically $150–$400, based on the declared valuation of the roofing work. A standard 2,000 sq. ft. asphalt shingle replacement valued at $8,000–$12,000 will cost $200–$280. Metal or tile roof replacements, which are more expensive ($12,000–$20,000), will cost $250–$400. The fee is calculated as a percentage of project valuation (roughly 2–3%) and is paid when the permit is issued. Some cities include inspection fees; Millbrae typically includes two inspections (Deck and Final) in the permit fee, but re-inspections (if defects are found) cost an additional $75–$150 per visit.

Do I need a structural engineer's letter for a material change from shingles to metal or tile?

Yes, if the new material is significantly heavier than the existing shingles or if the framing is older (pre-1950). Metal roofs are lighter, so structural review is usually a quick approval. Tile roofs are heavier (12–15 lbs per sq. ft. vs. 2.5–3 for asphalt), and Millbrae Building Department requires a licensed structural engineer's letter confirming the deck and framing can support the load. The letter costs $500–$1,200 and typically takes 1–2 weeks to obtain. Build this into your timeline if you're upgrading to tile or slate.

What happens if I don't pull a permit for a roof replacement?

Millbrae Building Department enforces unpermitted work actively, especially if a neighbor complains or if work is discovered during a home sale appraisal. Penalties include Stop-Work Orders ($500–$2,000 fine), double permit fees if you re-pull the permit after the fact, and potential denial of insurance claims if water damage occurs (insurance companies often check permit history). If you're selling the home, title companies will flag unpermitted roofing work, and buyers or lenders may demand removal and re-installation at your cost ($15,000–$40,000) or refuse the transaction.

How long does the entire roof replacement process take in Millbrae?

For a like-for-like shingle replacement with complete documentation: 1–2 business days permit approval, 2–3 days until Deck Inspection is available, 3–5 days of actual work (tear-off, underlayment, shingles), 2–3 days until Final Inspection is available. Total calendar time is typically 10–14 days. For material-change permits (shingles to metal), plan an additional 7–10 days for plan review and structural evaluation, extending the total to 3–4 weeks. Weather delays (rain preventing inspection or work) can add another week.

Is synthetic underlayment required, or can I use felt?

Synthetic underlayment is mandatory in Millbrae per California Title 24 §150.1(c). Felt, while still legal in some drier California areas, is not accepted by Millbrae Building Department inspectors. Synthetic underlayment (ASTM D779) costs $0.10–$0.20 per sq. ft. more than felt but provides better moisture resistance in Millbrae's foggy coastal climate. The roofer must state the underlayment type (by brand or ASTM standard) in the permit application, or the application will be rejected as incomplete.

Do I need a permit if I'm just replacing gutters or flashing?

Gutter replacement alone (no roof removal) is typically exempt. Flashing replacement that does not involve tear-off is also usually exempt. However, if flashing repair requires lifting shingles and tearing them off (to access the flashing or deck underneath), it may cross into 'replacement' territory and require a permit if the area is over 25%. When in doubt, call Millbrae Building Department (650-558-7600) and describe the exact scope before starting work.

What fire-rating do I need for roofing materials in Millbrae?

Class D fire-rating (the minimum per IRC R905) is legal. Class A fire-rating is strongly recommended in Millbrae's hillside and wildland-urban interface areas and is increasingly expected during home sales. Class A shingles cost 15–25% more but are not mandated unless your parcel is in a designated Very High Fire Hazard Severity Zone (VHFSZ). Check the San Mateo County Fire Authority's zone map or ask the Building Department. If you're in a high-risk zone, budget for Class A shingles and submit UL classification documentation with your permit application.

Disclaimer: This guide is based on research conducted in May 2026 using publicly available sources. Always verify current roof replacement permit requirements with the City of Millbrae Building Department before starting your project.