The do it yourself resource for homeowners from home improvement professionals.

How to Replace a Roof

Asphalt roof shingles perform well, but eventually they need to be replaced. A handy individual with at least one assistant can learn how to replace a roof. You and your helpers should observe all safety precautions involved with roofing work. In this article, the roof replacement experts at PJ Fitzpatrick share their insight.

How to Replace a RoofTools and Materials

Rubber-soled shoes will help you maintain your footing on the roof. You also may need to obtain a building permit.

  • Rubber-soled shoes
  • Roof brackets or 2×4 lumber
  • Dumpster
  • Ladder
  • Shingle scraper
  • Pry bar
  • Measuring tape
  • Chalk line
  • Tin snips
  • Staple gun or hammer tacker
  • Hammer or roofing nailer
  • Utility knife

How to Replace a Roof Steps

  1. Measure your roof and purchase the appropriate amount of underlayment, drip edging, and shingles.
  2. Starting at the top, pry off old shingles and underlayment with a shingle scraper.
  3. Put waste material into the dumpster.
  4. Pry off any roofing nails that did not come out with the shingles.
  5. Inspect decking for damage, patch holes and replace rotted boards as necessary.
  6. If the roof has a steep slope, attach roofing brackets or 2×4 lumber pieces to create footholds.
  7. Cover the roof with roofing felt.
    1. Start at a bottom corner and unroll the first row horizontally along the bottom edge.
    2. Place staples 6 or 8 inches apart.
    3. Ensure the felt does not have any ripples or bulges.
  8. Prepare to attach the drip edge flashing by marking where the flat edge reaches on the roof.
  9. Measure 3/8 inch down from the first mark and snap a chalk line.
  10. Nail the drip edge in place along the chalk mark with galvanized roofing nails. Overlap edges of each piece.
  11. Trim excess drip edge off with tin snips.
  12. Employ the 3-4-5 method to locate your roof’s center point. Make your marks with chalk line.
  13. Cut tabs off of some shingles with a utility knife for the first bottom row.
  14. Line up the center slot of a trimmed shingle with the roof center line.
    1. Extend its adhesive strip 1/4 inch beyond drip edge.
    2. Repeat process with other trimmed shingles to complete first row.
  15. Install the second row of shingles with tabs extending 1/4 inch past the edge.
  16. Make chalk lines 5 inches above the edge of each subsequent row of shingles to guide attachment of each row.
  17. Install the ridge cap.

Get Help from Professional Roofers

Although you’re capable of learning how to replace a roof, PJ Fitzpatrick can finish the job quickly and affordably. Our trained roofers are the best in the industry and are backed by our lifetime warranty. Contact us for a roof replacement estimate.

Need help with this project?

We have trained professionals that can help.

Contact us today. 1-888-446-6492 Get Estimate

P.J. Fitzpatrick, Inc.

21 Industrial Blvd
New Castle, DE 19720

  • NJ Lic. #13VH10727200
  • DE Lic. #2009603070
  • PA Lic. #PA011323
  • MD Lic. #105494

© 2020 P.J. Fitzpatrick, Inc.

Website by the Prager Microsystems, Inc. Digital Marketing Agency

Live Chat With Us
[gravityform id="20" title="false" description="false"]
<div class='gf_browser_unknown gform_wrapper' id='gform_wrapper_20' ><form method='post' enctype='multipart/form-data' id='gform_20' action='/diy/roofing-installation/how-to-replace-a-roof/'> <div class='gform_body'><ul id='gform_fields_20' class='gform_fields top_label form_sublabel_below description_below'><li id='field_20_1' class='gfield gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_20_1' >Your Name:<span class='gfield_required'>*</span></label><div class='ginput_container ginput_container_text'><input name='input_1' id='input_20_1' type='text' value='' class='medium' aria-required="true" aria-invalid="false" /></div></li><li id='field_20_4' class='gfield gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_20_4' >Phone Number:<span class='gfield_required'>*</span></label><div class='ginput_container ginput_container_phone'><input name='input_4' id='input_20_4' type='text' value='' class='medium' aria-required="true" aria-invalid="false" /></div></li> </ul></div> <div class='gform_footer top_label'> <input type='submit' id='gform_submit_button_20' class='gform_button button' value='Submit' onclick='if(window["gf_submitting_20"]){return false;} window["gf_submitting_20"]=true; ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_20"]){return false;} window["gf_submitting_20"]=true; jQuery("#gform_20").trigger("submit",[true]); }' /> <input type='hidden' class='gform_hidden' name='is_submit_20' value='1' /> <input type='hidden' class='gform_hidden' name='gform_submit' value='20' /> <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> <input type='hidden' class='gform_hidden' name='state_20' value='WyJbXSIsIjExY2Q2ODU0YWI0Y2RiZGJiMzBhMmEyNzEwY2IwZDM1Il0=' /> <input type='hidden' class='gform_hidden' name='gform_target_page_number_20' id='gform_target_page_number_20' value='0' /> <input type='hidden' class='gform_hidden' name='gform_source_page_number_20' id='gform_source_page_number_20' value='1' /> <input type='hidden' name='gform_field_values' value='' /> </div> </form> </div><script type='text/javascript'> jQuery(document).bind('gform_post_render', function(event, formId, currentPage){if(formId == 20) {jQuery('#input_20_4').mask('(999) 999-9999').bind('keypress', function(e){if(e.which == 13){jQuery(this).blur();} } );} } );jQuery(document).bind('gform_post_conditional_logic', function(event, formId, fields, isInit){} );</script><script type='text/javascript'> jQuery(document).ready(function(){jQuery(document).trigger('gform_post_render', [20, 1]) } ); </script>