12' x 12' Pergolas and Kits

Enjoy the outdoors relaxing under your distinctive 12′ x 12′ pergola from Pergola Depot.

Purchasing one of our 12×12 pergola kits could be the ideal solution for upgrading and shading your personal backyard oasis. Complete your patio or deck with a freestanding or attached pergola that matches your space’s aesthetics. Built to withstand the elements, including extreme winds, our pergolas add style and function to any outdoor space. Whether you crave a classic look or something more rustic or contemporary, 12×12 pergolas can make your vision a reality.

How to Choose the Best 12×12 Pergola for Your Space


Whether you hope to create an outdoor dining space, gathering place or reading nook, a 12×12 pergola offers protection from the sun without completely blocking the light.

There are several style options to meet your needs, including the Big Kahuna, Sombrero and Fedora. You can even customize multiple aspects, including wood type, end shape and base trim. Additionally, if you want to add a pop of color and more shade, you can add a water-resistant shade sail with one of our custom 12×12 pergola kits.

With so many choices, it may seem overwhelming to create the best 12×12 pergola for your space, but it doesn’t have to be stressful! Check out our buying guide for tips to help you narrow down your choices.

INSIDE POSTS – Measure inside post to post.
OUTSIDE POSTS – Measure outside post to post.
RAFTERS & BEAMS – Measure overall tip-to-tip, including overhang (Rafters are projection or depth and Beams are width)

12' x 12' Big Kahuna Pergola - Freestanding

FAQs for 12×12 Pergola Kits


As exciting as it is to customize a pergola for your outdoor space, we understand that you probably have more questions about our products. We compiled a list of common questions about our 12×12 pergolas, but if you still have questions, feel free to contact us for assistance!

How Do I Measure My Space for a 12×12 Pergola?


It depends on whether you choose a freestanding or attached pergola. Though the basic concept is the same, there would be a difference because freestanding pergolas feature four outside posts, while the attached pergolas connect to a wall, so they only have two outside posts.

Freestanding pergolas measure from outside tip to outside tip with an overhang (1’6″) on each side. That means a 12×12 pergola features 12-foot rafters and 12-foot beams, but the outside measurement from outside post to outside post would be 9 feet by 9 feet.

Since attached pergolas connect to an existing wall, the overall measurement would be the same because you would use the same size rafters and beams. However, you have two posts instead of four, so the distance from the wall to the outside posts would be slightly different because you would have an extra foot and a half.

Now that you know how our measurements work, it should be easier to assess how a 12×12 pergola would fit in your space. If you still have questions about measurements or aren’t sure what size you need, we will be happy to assist you.

What Comes with a 12×12 Pergola Kit?


Our 12×12 pergola kits feature high-quality materials, including pine or cedar wood pre-cut, pre-drilled and pre-marked to make assembly quick and easy. We use stainless steel hardware, and you can choose galvanized steel if you prefer. You also get thorough instructions for installation and access to multiple videos in case you work better with visual guides.

Additionally, your kit arrives on a custom pallet that accommodates all the necessary pieces. We stack and secure the pieces with special crating to protect your pergola kit during transit. When the truck arrives with your shipment, it must be unloaded piece by piece.

Attached 12′ x 12′ Pergola


12' x 12' Big Kahuna Pergola - Attached

Freestanding 12′ x 12′ Pergola


12' x 12' Big Kahuna Pergola - Freestanding

Do You Have Any Other Options to Provide Additional Shade?


Our 12×12 pergolas can also accommodate custom-made retractable canopies. You can select various fabrics and colors to create a unique look that matches your tastes to complete your outdoor space. Make sure you choose the freestanding retractable canopy or attached canopy to match your 12×12 pergola style.

[gravityform id=33 ajax="true" title="false"]
<div class='gf_browser_gecko gform_wrapper gravity-theme' id='gform_wrapper_33' style='display:none'><div id='gf_33' class='gform_anchor' tabindex='-1'></div> <div class='gform_heading'> <span class='gform_description'></span> <p class='gform_required_legend'>&quot;<span class="gfield_required gfield_required_asterisk">*</span>&quot; indicates required fields</p> </div><form method='post' enctype='multipart/form-data' target='gform_ajax_frame_33' id='gform_33' action='/12-x-12-pergolas/#gf_33' novalidate> <div id='gf_progressbar_wrapper_33' class='gf_progressbar_wrapper'> <p class="gf_progressbar_title">Step <span class='gf_step_current_page'>1</span> of <span class='gf_step_page_count'>5</span> </p> <div class='gf_progressbar gf_progressbar_blue' aria-hidden='true'> <div class='gf_progressbar_percentage percentbar_blue percentbar_20' style='width:20%;'><span>20%</span></div> </div></div> <div class='gform_body gform-body'><div id='gform_page_33_1' class='gform_page' > <div class='gform_page_fields'><div id='gform_fields_33' class='gform_fields top_label form_sublabel_below description_below'><div id="field_33_18" class="gfield gfield_html gfield_html_formatted gfield_no_follows_desc field_sublabel_below field_description_below gfield_visibility_visible" ><h2 class="ca-form-title">Welcome To Pergola Depot!</h2> <p class="ca-form-p">Is there something we can help you with today?</p></div><fieldset id="field_33_1" class="gfield gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible" ><legend class='gfield_label screen-reader-text' ><span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></legend><div class='ginput_container ginput_container_radio'><div class='gfield_radio' id='input_33_1'> <div class='gchoice gchoice_33_1_0'> <input class='gfield-choice-input' name='input_1' type='radio' value='I&#039;d like to download a pergola buyer’s guide.' id='choice_33_1_0' onchange='gformToggleRadioOther( this )' /> <label for='choice_33_1_0' id='label_33_1_0'>I'd like to download a pergola buyer’s guide.</label> </div> <div class='gchoice gchoice_33_1_1'> <input class='gfield-choice-input' name='input_1' type='radio' value='I&#039;d like to schedule a call with a pergola specialist.' id='choice_33_1_1' onchange='gformToggleRadioOther( this )' /> <label for='choice_33_1_1' id='label_33_1_1'>I'd like to schedule a call with a pergola specialist.</label> </div> <div class='gchoice gchoice_33_1_2'> <input class='gfield-choice-input' name='input_1' type='radio' value='I&#039;d like to browse pergolas on my own.' id='choice_33_1_2' onchange='gformToggleRadioOther( this )' /> <label for='choice_33_1_2' id='label_33_1_2'>I'd like to browse pergolas on my own.</label> </div> <div class='gchoice gchoice_33_1_3'> <input class='gfield-choice-input' name='input_1' type='radio' value='I know what I&#039;m looking for and I&#039;m ready to buy!' id='choice_33_1_3' onchange='gformToggleRadioOther( this )' /> <label for='choice_33_1_3' id='label_33_1_3'>I know what I'm looking for and I'm ready to buy!</label> </div></div></div></fieldset></div> </div> <div class='gform_page_footer top_label'> <input type='button' id='gform_next_button_33_2' class='gform_next_button button' value='Next' onclick='jQuery("#gform_target_page_number_33").val("2"); jQuery("#gform_33").trigger("submit",[true]); ' onkeypress='if( event.keyCode == 13 ){ jQuery("#gform_target_page_number_33").val("2"); jQuery("#gform_33").trigger("submit",[true]); } ' /> </div> </div> <div id='gform_page_33_2' class='gform_page' style='display:none;'> <div class='gform_page_fields'> <div id='gform_fields_33_2' class='gform_fields top_label form_sublabel_below description_below'><div id="field_33_5" class="gfield gfield_html gfield_html_formatted gfield_no_follows_desc field_sublabel_below field_description_below gfield_visibility_visible" ><h2 class="ca-form-title">Great!</h2> <p class="ca-form-p">Please enter your name and email and we'll send you a buyer's guide with more information about our pergolas.</p> <p class="ca-form-p">P.S. You'll also get an exclusive <span>15% off discount code</span> for when you're ready to buy!</p></div><div id="field_33_3" class="gfield gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible" ><label class='gfield_label screen-reader-text' for='input_33_3' >First Name *<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_text'><input name='input_3' id='input_33_3' type='text' value='' class='large' placeholder='First Name *' aria-required="true" aria-invalid="false" /> </div></div><div id="field_33_4" class="gfield gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible" ><label class='gfield_label screen-reader-text' for='input_33_4' >Email *<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_email'> <input name='input_4' id='input_33_4' type='email' value='' class='large' placeholder='Email *' aria-required="true" aria-invalid="false" /> </div></div></div> </div> <div class='gform_page_footer top_label'> <input type='button' id='gform_previous_button_33_10' class='gform_previous_button button' value='Previous' onclick='jQuery("#gform_target_page_number_33").val("1"); jQuery("#gform_33").trigger("submit",[true]); ' onkeypress='if( event.keyCode == 13 ){ jQuery("#gform_target_page_number_33").val("1"); jQuery("#gform_33").trigger("submit",[true]); } ' /> <input type='button' id='gform_next_button_33_10' class='gform_next_button button' value='Next' onclick='jQuery("#gform_target_page_number_33").val("3"); jQuery("#gform_33").trigger("submit",[true]); ' onkeypress='if( event.keyCode == 13 ){ jQuery("#gform_target_page_number_33").val("3"); jQuery("#gform_33").trigger("submit",[true]); } ' /> </div> </div> <div id='gform_page_33_3' class='gform_page' style='display:none;'> <div class='gform_page_fields'> <div id='gform_fields_33_3' class='gform_fields top_label form_sublabel_below description_below'><div id="field_33_11" class="gfield gfield_html gfield_html_formatted gfield_no_follows_desc field_sublabel_below field_description_below gfield_visibility_visible" ><h2 class="ca-form-title">No problem!</h2> <p class="ca-form-p">If you need any assistance while browsing our pergolas, <br>head down to the left corner to <span>chat with us</span>. <p class="ca-form-p">We're here to answer your questions!</p> <p class="ca-form-p"><i>Before you leave, would you like to take advantage of an exclusive <span>15% off discount</span> for when you're ready to buy?</i></p></div><fieldset id="field_33_13" class="gfield field_sublabel_below field_description_below gfield_visibility_visible" ><legend class='gfield_label screen-reader-text' ></legend><div class='ginput_container ginput_container_radio'><div class='gfield_radio' id='input_33_13'> <div class='gchoice gchoice_33_13_0'> <input class='gfield-choice-input' name='input_13' type='radio' value='Yes, please!' id='choice_33_13_0' onchange='gformToggleRadioOther( this )' /> <label for='choice_33_13_0' id='label_33_13_0'>Yes, please!</label> </div> <div class='gchoice gchoice_33_13_1'> <input class='gfield-choice-input' name='input_13' type='radio' value='No, thank you!' id='choice_33_13_1' onchange='gformToggleRadioOther( this )' /> <label for='choice_33_13_1' id='label_33_13_1'>No, thank you!</label> </div></div></div></fieldset></div> </div> <div class='gform_page_footer top_label'> <input type='button' id='gform_previous_button_33_19' class='gform_previous_button button' value='Previous' onclick='jQuery("#gform_target_page_number_33").val("2"); jQuery("#gform_33").trigger("submit",[true]); ' onkeypress='if( event.keyCode == 13 ){ jQuery("#gform_target_page_number_33").val("2"); jQuery("#gform_33").trigger("submit",[true]); } ' /> <input type='button' id='gform_next_button_33_19' class='gform_next_button button' value='Next' onclick='jQuery("#gform_target_page_number_33").val("4"); jQuery("#gform_33").trigger("submit",[true]); ' onkeypress='if( event.keyCode == 13 ){ jQuery("#gform_target_page_number_33").val("4"); jQuery("#gform_33").trigger("submit",[true]); } ' /> </div> </div> <div id='gform_page_33_4' class='gform_page' style='display:none;'> <div class='gform_page_fields'> <div id='gform_fields_33_4' class='gform_fields top_label form_sublabel_below description_below'><div id="field_33_20" class="gfield gfield_html gfield_html_formatted gfield_no_follows_desc field_sublabel_below field_description_below gfield_visibility_visible" ><h2 class="ca-form-title">Happy Shopping!</h2> <p class="ca-form-p">Please share your name and email below to receive your <span>15% off discount code</span>. </p> <p class="ca-form-p">We hope you enjoy shopping with us!</p></div><div id="field_33_21" class="gfield gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible" ><label class='gfield_label screen-reader-text' for='input_33_21' >First Name *<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_text'><input name='input_21' id='input_33_21' type='text' value='' class='large' placeholder='First Name *' aria-required="true" aria-invalid="false" /> </div></div><div id="field_33_22" class="gfield gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible" ><label class='gfield_label screen-reader-text' for='input_33_22' >Email *<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_email'> <input name='input_22' id='input_33_22' type='email' value='' class='large' placeholder='Email *' aria-required="true" aria-invalid="false" /> </div></div></div> </div> <div class='gform_page_footer top_label'> <input type='button' id='gform_previous_button_33_14' class='gform_previous_button button' value='Previous' onclick='jQuery("#gform_target_page_number_33").val("3"); jQuery("#gform_33").trigger("submit",[true]); ' onkeypress='if( event.keyCode == 13 ){ jQuery("#gform_target_page_number_33").val("3"); jQuery("#gform_33").trigger("submit",[true]); } ' /> <input type='button' id='gform_next_button_33_14' class='gform_next_button button' value='Next' onclick='jQuery("#gform_target_page_number_33").val("5"); jQuery("#gform_33").trigger("submit",[true]); ' onkeypress='if( event.keyCode == 13 ){ jQuery("#gform_target_page_number_33").val("5"); jQuery("#gform_33").trigger("submit",[true]); } ' /> </div> </div> <div id='gform_page_33_5' class='gform_page' style='display:none;'> <div class='gform_page_fields'> <div id='gform_fields_33_5' class='gform_fields top_label form_sublabel_below description_below'><div id="field_33_15" class="gfield gfield_html gfield_html_formatted gfield_no_follows_desc field_sublabel_below field_description_below gfield_visibility_visible" ><h2 class="ca-form-title">No problem!</h2> <p class="ca-form-p">If you need any assistance while browsing our pergolas, <br>head down to the left corner to <span>chat with us</span> or call as at <a href="tel:8775630002"><span>(877) 563-0002</span></a>. <p class="ca-form-p">We're here to answer your questions!</p> </div></div></div> <div class='gform_page_footer top_label'><input type='submit' id='gform_previous_button_33' class='gform_previous_button button' value='Previous' onclick='if(window["gf_submitting_33"]){return false;} if( !jQuery("#gform_33")[0].checkValidity || jQuery("#gform_33")[0].checkValidity()){window["gf_submitting_33"]=true;} ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_33"]){return false;} if( !jQuery("#gform_33")[0].checkValidity || jQuery("#gform_33")[0].checkValidity()){window["gf_submitting_33"]=true;} jQuery("#gform_33").trigger("submit",[true]); }' /> <input type='submit' id='gform_submit_button_33' class='gform_button button' value='Send My Discount Code!' onclick='if(window["gf_submitting_33"]){return false;} if( !jQuery("#gform_33")[0].checkValidity || jQuery("#gform_33")[0].checkValidity()){window["gf_submitting_33"]=true;} ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_33"]){return false;} if( !jQuery("#gform_33")[0].checkValidity || jQuery("#gform_33")[0].checkValidity()){window["gf_submitting_33"]=true;} jQuery("#gform_33").trigger("submit",[true]); }' /> <input type='hidden' name='gform_ajax' value='form_id=33&amp;title=&amp;description=1&amp;tabindex=0' /> <input type='hidden' class='gform_hidden' name='is_submit_33' value='1' /> <input type='hidden' class='gform_hidden' name='gform_submit' value='33' /> <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> <input type='hidden' class='gform_hidden' name='state_33' value='WyJbXSIsIjhiOTdmMWNhMmJiYTliNjI3NTYwMmJmNTBlZGMxZTllIl0=' /> <input type='hidden' class='gform_hidden' name='gform_target_page_number_33' id='gform_target_page_number_33' value='2' /> <input type='hidden' class='gform_hidden' name='gform_source_page_number_33' id='gform_source_page_number_33' value='1' /> <input type='hidden' name='gform_field_values' value='' /> </div> </div></div> </form> </div> <iframe style='display:none;width:0px;height:0px;' src='about:blank' name='gform_ajax_frame_33' id='gform_ajax_frame_33' title='This iframe contains the logic required to handle Ajax powered Gravity Forms.'></iframe> <script> gform.initializeOnLoaded( function() {gformInitSpinner( 33, 'https://pergoladepot.com/wp-content/plugins/gravityforms/images/spinner.svg' );jQuery('#gform_ajax_frame_33').on('load',function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_33');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_33').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){jQuery('#gform_wrapper_33').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_33').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_33').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */ jQuery(document).scrollTop(jQuery('#gform_wrapper_33').offset().top - mt); }, 50 );if(window['gformInitDatepicker']) {gformInitDatepicker();}if(window['gformInitPriceFields']) {gformInitPriceFields();}var current_page = jQuery('#gform_source_page_number_33').val();gformInitSpinner( 33, 'https://pergoladepot.com/wp-content/plugins/gravityforms/images/spinner.svg' );jQuery(document).trigger('gform_page_loaded', [33, current_page]);window['gf_submitting_33'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}setTimeout(function(){jQuery('#gform_wrapper_33').replaceWith(confirmation_content);jQuery(document).scrollTop(jQuery('#gf_33').offset().top - mt);jQuery(document).trigger('gform_confirmation_loaded', [33]);window['gf_submitting_33'] = false;wp.a11y.speak(jQuery('#gform_confirmation_message_33').text());}, 50);}else{jQuery('#gform_33').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger('gform_post_render', [33, current_page]);} );} ); </script>