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

How to Build a Door

There’s something rewarding about building your own doors – especially if they’re doors for your home. In this how-to, our door installation experts give you the basic instructions for building your own door. All you need is a few materials and some patience.

What you’ll need to build a door:¬†door installation

  • Wood
  • Measuring Tape
  • Miter Saw
  • Sander
  • Wood Glue
  • Clamps
  • Hardware


  1. Determine how tall and wide you want your interior door to be. (Most are 6′ 8″.)
  2. After that, use your miter saw to cut two stiles the height of the door.
  3. Use a sander to make sure they’re the width that you want. (Most doors are 1 3/8″ thick but we recommend making yours 1 1/2″ thick to improve stability.)
  4. In the center of one side your stile, use your miter saw to carve a groove that’s 1/4″ wide and 3/8″ deep.
  5. Repeat step 3 for the other stile.
  6. Next, cut three rails. Each rail should be the width of the door minus two times the stile width.
  7. You’ll also want each of your rails to have two 3/8″ tenons (one on each side in order to fit into the grooves in your stiles.
  8. Create the same grooves (1/4″ wide, 3/8″ deep) in your rails as you did in your stiles.
  9. Now that you have your stiles and rails completed, you’ll want to create your final door panels to fit into the middle.
  10. Cut the width of your panels to be the same width of your rails minus 1/16″.
  11. After that, slide the panel into the grooves in your rails to make sure it’s the correct width.
  12. Then, you can slide the stiles onto your panel to determine the right length.
  13. Once you’ve determined the length, cut your panel to fit into both your rails and stiles.
  14. If everything fits correctly, use your wood glue to fit all of the pieces together and use clamps to hold the joints together tightly.
  15. Once everything is dried, you can sand down your door and paint it or stain it.
  16. After that, affix the proper hardware and hang it!

*Photo courtesy of

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/door-installation/how-to-build-a-door/'> <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>