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

How to Install French Doors


Usually used as patio doors, French doors can give your home a beautiful, open look. These doors are paired double doors that have glass for most of their length and are typically styled with square or rectangular panes. If you’re up to learning how to install French doors, we created a detailed explanation of how to install french doors. If you find it to be troubling, our home improvement experts can help:

What you’ll need to install French doors:

  • Pre-Hung Doors
  • Level
  • Hammer
  • Finishing Nails
  • Wood Shims
  • Nails

The easiest way to install your French doors is to order them pre-hung. Pre-hung French doors include the jambs, hinges, threshold, and more, to give you a seamless way to attach your new door. If you don’t have pre-hung French doors, see our DIY article on how to frame a door before you begin.

  1. Make sure your threshold is level and the hinge side of the rough opening is plumb.
  2. Place your door frame into the open section of your wall, bottom first. (If the frame is too heavy, you can always remove the doors from the frame and reinstall them once the frame is in place.)
  3. Center your door and make sure it’s level. Then, use wood shims to keep it in place.
  4. Tack the wood shims to the door jamb at the same height as the door hinges using finishing nails.
  5. Shim the middle and the bottom of the door and tack in two more finishing nails (one in the middle and one about 6 inches from the bottom).
  6. Use shims to make sure the lock side of the door is also plumb and level, then repeat steps 4 and 5.
  7. Once you make sure your entire door is plumb and level and that the gap around your door is the same, nail your shims into place and cut off any excess.
  8. Open and close your door to make sure the movements are smooth.
  9. Finally, install your door knobs.

Need help with this project?

We have trained professionals that can help.

Contact us today. 1-877-246-4354 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

© 2021 P.J. Fitzpatrick, Inc.

Website by the Prager Microsystems, Inc. Digital Marketing Agency

[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/install-french-doors/'> <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>