Postscapes is an independent review site. We may earn money when you click on links on our site. Learn more.

Homekit Lock Icon

2019 Buyers Guide

Homekit Smart Locks

In the market for a smart lock that is Apple Homekit enabled?

Below we dive into your options and what you should look out for when making a purchase.

August Smart Lock Pro 3rd GenAugust Smart Lock Pro 3rd Gen logo Homekit Smart Lock 1 image
$181.72
Schlage SenseSchlage Sense logo Homekit Smart Lock 2 image
$197.67
Kwikset PremisKwikset Premis logo Homekit Smart Lock 3 image
$159.92
Yale Assure Lock SLYale Assure Lock SL logo Homekit Smart Lock 4 image
$227.93
Homekit Lock Overview
Homekit-Connectivity

If you are already all in on your Siri and Apple Homekit ecosystem for your home it makes sense to round it out with a Homekit enabled lock out of the box

Homekit Lock Pros

  • Will work with your Apple Watch, Apple TV, etc and control it from your iPhone
  • Use Siri voice controls
  • If you have a HomePod or 4th Gen or up Apple TV you will be able to control your lock while you are away from your home or apartment.

Homekit Lock Cons:

  • Integrations with other smart home hub devices will be limited. If this is a priority we suggest you look at either a Wi-Fi or Z-Wave enabled locks.

What is the best Homekit enabled smart lock to buy?

The smart lock market has a large range of options and configurations to choose from ranging from door fit and installation to making sure it works well with other smart home devices and your phone. But which one should you buy?

Here are the main points to consider when shopping for a new lock for your door, as well as the best smart locks we've tested.

Our Quick Picks

Short on time? Here our some of our favorite picks based on some common filters.

Lock
Yale Assure Lock SL
August Pro 3rd Gen
Schlage Sense
Yale Assure Lock SL - Key Free Smart Lock with Touchscreen Keypad - Works with Apple HomeKit and...
August Smart Lock Pro + Connect Hub - Wi-Fi Smart Lock for Keyless Entry - Works with Alexa, Google...
SCHLAGE Sense Smart Deadbolt with Century Trim in Satin Nickel (BE479 CEN 619)
Best For
Budget option & for touchscreen
Good standalone app
Specific finish options
Lock Type
Deadbolt Replacement
Interior Deadbolt Replacement
Deadbolt Replacement
Alexa Integration?
No
Yes, with Wi-Fi hub add-on
Yes, with Wi-Fi hub add-on
Siri / Homekit Integration?
Yes
Yes
Yes, in Bluetooth range of out the box
User Reviews
145 Reviews
5,172 Reviews
1,470 Reviews
Price
$227.93
$167.00
$173.74
Lock
Yale Assure Lock SL
Yale Assure Lock SL - Key Free Smart Lock with Touchscreen Keypad - Works with Apple HomeKit and...
Best For
Budget option & for touchscreen
Lock Type
Deadbolt Replacement
Alexa Integration?
No
Siri / Homekit Integration?
Yes
User Reviews
145 Reviews
Price
$227.93
Where to Buy
Our Review
Lock
August Pro 3rd Gen
August Smart Lock Pro + Connect Hub - Wi-Fi Smart Lock for Keyless Entry - Works with Alexa, Google...
Best For
Good standalone app
Lock Type
Interior Deadbolt Replacement
Alexa Integration?
Yes, with Wi-Fi hub add-on
Siri / Homekit Integration?
Yes
User Reviews
5,172 Reviews
Price
$167.00
Where to Buy
Our Review
Lock
Schlage Sense
SCHLAGE Sense Smart Deadbolt with Century Trim in Satin Nickel (BE479 CEN 619)
Best For
Specific finish options
Lock Type
Deadbolt Replacement
Alexa Integration?
Yes, with Wi-Fi hub add-on
Siri / Homekit Integration?
Yes, in Bluetooth range of out the box
User Reviews
1,470 Reviews
Price
$173.74
Where to Buy
Our Review

Things to consider

 

Your door Fit

One of the first things to consider before falling in love with one particular model is to make sure it fits with your door in size and lock type.

Locks typically come in a few standard configurations

  1. Attach on your deadbolt (only 1 model on the market is like this)
  2. Interior deadbolt replacement where on the outside your door looks the same but the interior deadbolt section controls the lock and is replaced
  3. Complete deadbolt replacement
  4. Handle / Lever / Knob replacement where you only have one hole on your door
  5. Integrated lock where your deadbolt and handle are in one mechanism where they lock but are separated on the door
  6. Mortise - a fully integrated system

You can click on the images below to filter down the Bluetooth door locks that fit each particular door type.

Handle / Knob

handle-yes-01

Deadbolt Replacement

Deadbolt Replacement

Interior Deadbolt Replacement

interior-replacement-yes-01-01-01-01

Mortise

Mortise Smart Lock

Access Codes

If you are looking for the ability to add access codes for your kids and guests or to make sure the delivery gets into your home safely there are several options these locks accomplish this.

Some have them built-in and will include either push buttons or commonly a touchscreen that will light up as you approach.

The other option is to add a keypad accessory that is installed next to your door and communications to the lock.

The third is via the locks smart phone app which can act as a key for other users.

Access Codes

Integration with smart home ecosystems

Do you already have a 4th Gen Apple TV or HomePod in your home?

Many of the smart locks on the market let you:

  • Check status of your lock from your phone
  • Lock and unlock the door using voice control
  • Have your lock be a part of a "recipe" like a good night mode that turns off lights, locks door and sets security system.
Homekit

Additional Smart Lock Features

Smart locks also come with a range of other features that could be the deciding factor for your purchase.

Features Remote Lock

Remote Locking

Check or manage your lock while away from your home

Most of the time Bluetooth connectivity is not going to be the best option for you if you want this out of the box without having to purchase an additional bridge device or smart home hub.

At the moment only one lock has the ability to generate and manage keys remotely without an additional device.

Features Autolock

Proximity Locking

Automatically lock behind you or unlock as you approach

With this feature you can have your door automatically lock behind you after a certain amount of time (typically 30 seconds) or have it use your phone's GPS and Bluetooth to automatically unlock the door as you approach.

Features Fingerprint

Fingerprint or Touchscreen

Use your fingerprint to open your door or a touchscreen 

With this feature you can either open the door using an access code and a back-lit touchscreen or your fingerprint to securely open your doors.

Homekit Lock Comparison

Sorry, we couldn't find any posts. Please try a different search.

Lock Bio

About Smart Lock Scout

We are here to help you keep your home and family safely connected. Whether you’re looking to pick a smart lock system, we’ve spent hundreds of hours researching locks to help you find the best product to fit your specific situation.

At Postscapes we combine our years of experience following the smart home market along with user reviews to take the guesswork out of living securely connected. Learn More

Ultimate Smart Lock Guide

Filter and find the perfect lock for your home or apartment

[gravityform id="38" title="false" description="false" ajax="true" tabindex="49"]
<div class='gf_browser_unknown gform_wrapper' id='gform_wrapper_38' ><div id='gf_38' class='gform_anchor' tabindex='-1'></div><form method='post' enctype='multipart/form-data' target='gform_ajax_frame_38' id='gform_38' action='/homekit-smart-lock/?fwp_door_type=mortise#gf_38'> <div class='gform_body'><ul id='gform_fields_38' class='gform_fields top_label form_sublabel_below description_below'><li id='field_38_2' class='gfield field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label gfield_label_before_complex' >Your Name</label><div class='ginput_complex ginput_container no_prefix has_first_name no_middle_name no_last_name no_suffix gf_name_has_1 ginput_container_name' id='input_38_2'> <span id='input_38_2_3_container' class='name_first' > <input type='text' name='input_2.3' id='input_38_2_3' value='' aria-label='First name' tabindex='50' aria-invalid="false" /> <label for='input_38_2_3' >First</label> </span> </div></li><li id='field_38_3' class='gfield field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_38_3' >Can you share a high level overview of what you are looking for?</label><div class='ginput_container ginput_container_textarea'><textarea name='input_3' id='input_38_3' class='textarea medium' tabindex='54' aria-invalid="false" rows='10' cols='50'></textarea></div></li><li id='field_38_4' class='gfield field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_38_4' >Best way to reach you?</label><div class='ginput_container ginput_container_text'><input name='input_4' id='input_38_4' type='text' value='' class='medium' tabindex='55' aria-invalid="false" /></div></li> </ul></div> <div class='gform_footer top_label'> <input type='submit' id='gform_submit_button_38' class='gform_button button' value='Submit' tabindex='56' onclick='if(window["gf_submitting_38"]){return false;} window["gf_submitting_38"]=true; ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_38"]){return false;} window["gf_submitting_38"]=true; jQuery("#gform_38").trigger("submit",[true]); }' /> <input type='hidden' name='gform_ajax' value='form_id=38&amp;title=&amp;description=&amp;tabindex=49' /> <input type='hidden' class='gform_hidden' name='is_submit_38' value='1' /> <input type='hidden' class='gform_hidden' name='gform_submit' value='38' /> <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> <input type='hidden' class='gform_hidden' name='state_38' value='WyJbXSIsIjI0MzNjYTY3YTUxNWM5ZTM5NmFkOWNiZWJiMjkyMDYyIl0=' /> <input type='hidden' class='gform_hidden' name='gform_target_page_number_38' id='gform_target_page_number_38' value='0' /> <input type='hidden' class='gform_hidden' name='gform_source_page_number_38' id='gform_source_page_number_38' value='1' /> <input type='hidden' name='gform_field_values' value='' /> </div> </form> </div> <iframe style='display:none;width:0px;height:0px;' src='about:blank' name='gform_ajax_frame_38' id='gform_ajax_frame_38'>This iframe contains the logic required to handle Ajax powered Gravity Forms.</iframe> <script type='text/javascript'>jQuery(document).ready(function($){gformInitSpinner( 38, 'https://www.postscapes.com/wp-content/plugins/gravityforms/images/spinner.gif' );jQuery('#gform_ajax_frame_38').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_38');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_38').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_38').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_38').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_38').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */ jQuery(document).scrollTop(jQuery('#gform_wrapper_38').offset().top - mt); }, 50 );if(window['gformInitDatepicker']) {gformInitDatepicker();}if(window['gformInitPriceFields']) {gformInitPriceFields();}var current_page = jQuery('#gform_source_page_number_38').val();gformInitSpinner( 38, 'https://www.postscapes.com/wp-content/plugins/gravityforms/images/spinner.gif' );jQuery(document).trigger('gform_page_loaded', [38, current_page]);window['gf_submitting_38'] = 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_38').replaceWith(confirmation_content);jQuery(document).scrollTop(jQuery('#gf_38').offset().top - mt);jQuery(document).trigger('gform_confirmation_loaded', [38]);window['gf_submitting_38'] = false;}, 50);}else{jQuery('#gform_38').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger('gform_post_render', [38, current_page]);} );} );</script><script type='text/javascript'> jQuery(document).bind('gform_post_render', function(event, formId, currentPage){if(formId == 38) {} } );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', [38, 1]) } ); </script>
[gravityform id="38" title="false" description="false" ajax="true" tabindex="49"]
<div class='gf_browser_unknown gform_wrapper' id='gform_wrapper_38' ><div id='gf_38' class='gform_anchor' tabindex='-1'></div><form method='post' enctype='multipart/form-data' target='gform_ajax_frame_38' id='gform_38' action='/homekit-smart-lock/?fwp_door_type=mortise#gf_38'> <div class='gform_body'><ul id='gform_fields_38' class='gform_fields top_label form_sublabel_below description_below'><li id='field_38_2' class='gfield field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label gfield_label_before_complex' >Your Name</label><div class='ginput_complex ginput_container no_prefix has_first_name no_middle_name no_last_name no_suffix gf_name_has_1 ginput_container_name' id='input_38_2'> <span id='input_38_2_3_container' class='name_first' > <input type='text' name='input_2.3' id='input_38_2_3' value='' aria-label='First name' tabindex='50' aria-invalid="false" /> <label for='input_38_2_3' >First</label> </span> </div></li><li id='field_38_3' class='gfield field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_38_3' >Can you share a high level overview of what you are looking for?</label><div class='ginput_container ginput_container_textarea'><textarea name='input_3' id='input_38_3' class='textarea medium' tabindex='54' aria-invalid="false" rows='10' cols='50'></textarea></div></li><li id='field_38_4' class='gfield field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_38_4' >Best way to reach you?</label><div class='ginput_container ginput_container_text'><input name='input_4' id='input_38_4' type='text' value='' class='medium' tabindex='55' aria-invalid="false" /></div></li> </ul></div> <div class='gform_footer top_label'> <input type='submit' id='gform_submit_button_38' class='gform_button button' value='Submit' tabindex='56' onclick='if(window["gf_submitting_38"]){return false;} window["gf_submitting_38"]=true; ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_38"]){return false;} window["gf_submitting_38"]=true; jQuery("#gform_38").trigger("submit",[true]); }' /> <input type='hidden' name='gform_ajax' value='form_id=38&amp;title=&amp;description=&amp;tabindex=49' /> <input type='hidden' class='gform_hidden' name='is_submit_38' value='1' /> <input type='hidden' class='gform_hidden' name='gform_submit' value='38' /> <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> <input type='hidden' class='gform_hidden' name='state_38' value='WyJbXSIsIjI0MzNjYTY3YTUxNWM5ZTM5NmFkOWNiZWJiMjkyMDYyIl0=' /> <input type='hidden' class='gform_hidden' name='gform_target_page_number_38' id='gform_target_page_number_38' value='0' /> <input type='hidden' class='gform_hidden' name='gform_source_page_number_38' id='gform_source_page_number_38' value='1' /> <input type='hidden' name='gform_field_values' value='' /> </div> </form> </div> <iframe style='display:none;width:0px;height:0px;' src='about:blank' name='gform_ajax_frame_38' id='gform_ajax_frame_38'>This iframe contains the logic required to handle Ajax powered Gravity Forms.</iframe> <script type='text/javascript'>jQuery(document).ready(function($){gformInitSpinner( 38, 'https://www.postscapes.com/wp-content/plugins/gravityforms/images/spinner.gif' );jQuery('#gform_ajax_frame_38').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_38');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_38').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_38').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_38').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_38').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */ jQuery(document).scrollTop(jQuery('#gform_wrapper_38').offset().top - mt); }, 50 );if(window['gformInitDatepicker']) {gformInitDatepicker();}if(window['gformInitPriceFields']) {gformInitPriceFields();}var current_page = jQuery('#gform_source_page_number_38').val();gformInitSpinner( 38, 'https://www.postscapes.com/wp-content/plugins/gravityforms/images/spinner.gif' );jQuery(document).trigger('gform_page_loaded', [38, current_page]);window['gf_submitting_38'] = 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_38').replaceWith(confirmation_content);jQuery(document).scrollTop(jQuery('#gf_38').offset().top - mt);jQuery(document).trigger('gform_confirmation_loaded', [38]);window['gf_submitting_38'] = false;}, 50);}else{jQuery('#gform_38').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger('gform_post_render', [38, current_page]);} );} );</script><script type='text/javascript'> jQuery(document).bind('gform_post_render', function(event, formId, currentPage){if(formId == 38) {} } );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', [38, 1]) } ); </script>