Menu burger Close thin Facebook Twitter Google plus Linked in Reddit Email arrow-right-sm arrow-right
Loading
Tap on the profile icon to edit
your financial details.

Alabama Property Tax Calculator

Your Details Done

Overview of Alabama Taxes

Alabama has some of the lowest property taxes in the country. While property taxes in the state serve as an important source of revenue for local governments, public services and education, the average Alabama homeowner pays just $674 per year in property taxes. That's about a quarter of the national average of $2,795.

Not in Alabama?
Enter your financial details to calculate your taxes
Enter Your Location
Dismiss
Assessed Home Value
Dismiss
Average County Tax Rate
0.0%
Property Taxes
$0
(Annual)
How Your Property Taxes Compare Based on an Assessed Home Value of
of Assessed Home Value
of Assessed Home Value
National
of Assessed Home Value
Mortgage Type Options
Based on a mortgage
Home Value Points Location Credit Score
Not what you're looking for? View personalized rates
No mortgages were found.
Searching for Mortgages...
Disclosure
View more mortgages
No mortgages were found.
Searching for Mortgages...
Disclosure
View more mortgages
No mortgages were found.
Searching for Mortgages...
Disclosure
View more mortgages
' + '
Rate: ' + smartasset.math.commatoze(mortgage.rate, 3) + '%
'; var blockTwo = '
Monthly Payment
' + '' + smartasset.math.commatoze(mortgage.monthlyPayment, 0, false, '$') + '
'; return '' + '' + // Logo Cell '' + '' + '
' + '
' + mortgage.lenderName + '
' + '
' + licenseBlock + '
' + '
' + '' + // First info cell '' + '
' + blockOne + '
' + '' + // Second info cell '' + '
' + blockTwo + '
' + '' + // Mobile info cell '' + '
' + blockTwo + '
' + '
' + blockOne + '
' + '' + // Button Cells ( mortgage.applyNowUrl ? 'View Details' : '' ) + ( mortgage.applyNowUrl ? '' : '' ) + '' + '' + '' + '
' + '' + mortgage.lenderName + ' ' + '' + licenseBlock + '' + '
' + '' + '' + ''; } // Construct row HTML for a featured listing function featuredListingToRow(featuredListing) { return '' + '' + (featuredListing.logo ? 'Logo' : '') + '' + '' + '
' + (featuredListing.headline ? featuredListing.headline : '') + '
' + '
' + (featuredListing.subtitle ? featuredListing.subtitle : '') + '
' + (featuredListing.pixel ? '' : '') + '' + '' + '' + (featuredListing.button ? featuredListing.button : 'View Details') + '' + '' + '' + ''; } // Convert the JSON mortgage data into objects on the page function populateMortgages(product, mortgages, featuredListings) { mortgages = smartasset.mortgage.filterResults(mortgages); miniMortgageRatesTables[product].updateRatesTable(mortgages, renderMortgage, featuredListings); // SA-12556 -- Implement new RLP-Featured Listing API smartasset.mortgage.displayFeaturedListings(miniMortgageRatesTables[product].bodyTableSel, featuredListings, featuredListingToRow); // Hide featured listings when we have BR results if (smartasset.mortgage.getSources(mortgages).indexOf('Bankrate') !== -1) { // Only hide featured listings for the product type tab that contains the Bankrate-sourced rates. var $miniMortgageBlock = $('.js-mini-mortgage-block[data-product=' + product + ']'); $miniMortgageBlock.find('.sa-table-featured').addClass('js-hidden'); } updateDisclosures(mortgages, product); smartasset.hooks.call("onMiniMortgageRatesTableUpdated"); smartasset.inputs.resizeInteraction(); } // Set hook to be called after table is rendered // smartasset.hooks.register("onRatesTableUpdated", function(args){ // if (args.tableId === 'miniMortgageRatesTable') { // var hasResults = args.hasResults; // if (!hasResults) { // showNotFound(); // } // } // }); // Update the bottom disclosure to show the correct source function updateDisclosures(mortgages, product) { var $miniMortgageBlock = $('.js-mini-mortgage-block[data-product=' + product + ']'); smartasset.mortgage.updateDisclaimer(mortgages, $miniMortgageBlock.find('.js-mr-disclosure')); smartasset.mortgage.updateAttribution(mortgages, $miniMortgageBlock.find('.js-mr-attribution')); } // key of the last mortgages requested var key = ""; // generate key for key function getKey() { var location = smartasset.inputs.getValue("ud-current-location"); var homevalue = smartasset.inputs.getValue("cs-home-value"); var downpayment = smartasset.inputs.getValue("cs-down-payment"); // generate the key if (location == null || homevalue == null || downpayment == null) { return ""; } return location + "." + homevalue + "." + downpayment; } function hasKeyChanged() { var newkey = getKey(); if (newkey != key && newkey != "") { return true; } return false; } // Returns the currently selected mortgage product tab function getSelectedProduct() { return $('.js-mini-mortgage-block.active').first().data('product'); } // Set titles for mortgage block function updateTitle(loanProduct) { var mortgageBlockTitle = { 'Fixed30Y': '30 Year Fixed Mortgage Rates', 'Fixed15Y': '15 Year Fixed Mortgage Rates', 'Arm5Y1': '5/1 Adjustable Rate Mortgage Rates', 'Arm7Y1': '7/1 Adjustable Rate Mortgage Rates' }; $('#mtg-block-title').html('Today\'s Best ' + mortgageBlockTitle[loanProduct]); } // Redirect the user to the selected mortgage offer function rowClick(url, id, source, lender, logoUrl) { // on mobile only handle clickthrough if user doesn't cancel via confirmation modal if (smartasset.page.isMobile()) { smartasset.mortgage.confirmClick(lender, logoUrl, function(){ smartasset.mortgage.click(url, id, undefined, source, '_self'); }); } else { smartasset.mortgage.click(url, id, undefined, source); } } // Redirect to the mortgage rates table function ratesTableRedirect() { var widget = ''; var queryString = '?loanProduct=' + getSelectedProduct() + '&utm_medium=organic&utm_source=captivate&utm_campaign=' + widget + '&utm_term=view_more_mortgages'; var url = '/mortgage/mortgage-rates'; smartasset.analytics.track("click-viewmoremortgages"); smartasset.page.facebookTrack("SAClick", {eventtype: "click-viewmoremortgages", category: "mortgage"}); window.location = url + queryString; } function setShowMoreListener($toggle_component) { var $trigger = $toggle_component.find('.js-toggle-trigger'); var $content = $toggle_component.find('.js-toggle-content').slideUp(); $toggle_component.removeClass('js-hidden'); $trigger.click(function() { $content.slideToggle(); if ($trigger.find('.fa-angle-up').hasClass('js-hidden')) { smartasset.page.eventTrack('mortgageminimoreinfoexpand'); } setTimeout(function() { $trigger.find('.js-angle').toggleClass('js-hidden'); }, 100); }); return $toggle_component; } function populateShowMoreComponent($toggle_component) { var mortgage = (window.homeaffordability !== undefined && window.homeaffordability.loan !== undefined) ? homeaffordability.loan : 200000; var home_value = smartasset.inputs.getValue("cs-home-value"); var points = smartasset.inputs.getValue("ud-closing-mtgpoints"); var location = smartasset.inputs.getValue("ud-current-location"); var credit_score = smartasset.inputs.getValue("ud-m-creditscore"); $toggle_component.find('.js-mortgage').text(mortgage).autoNumeric(); $toggle_component.find('.js-home_value').text(home_value).autoNumeric(); $toggle_component.find('.js-points').text(points); if (location !== null && typeof location !== "undefined") $toggle_component.find('.js-location').text(location.replace('CITY|', '').replace('|', ', ')); $toggle_component.find('.js-credit_score').text([ 'Excellent', 'Excellent', 'Very Good', 'Good', 'Above Average', 'Average', 'Fair', 'Needs Improvement', 'Poor', 'Poor' ][credit_score]); return $toggle_component; } function trackFeaturedListings() { var featuredListings = $('#mortgage-block .js-mini-mortgage-block.active .sa-table-featured'); // for each visible listing, fire a Mixpanel event featuredListings.each(function() { var $this = $(this); if ( !$this.hasClass('js-hidden') ) { var eventName = $this.data('event'); if (eventName) { smartasset.analytics.track(eventName); } } }); } function initialize() { $window = $(window); $refreshBtn = $('.refresh-rates-button'); $refreshBtn.on('click', function(){ update(); }); // Create the tables _.each(mortgageProducts, function(product) { miniMortgageRatesTables[product] = smartasset.tables.initializeRatesTable('miniMortgageRatesTable_' + product, undefined, '.js-mini-mortgage-block[data-product="' + product + '"] .mini-mortgage-table', {hideLoadingMessage: true, isMiniRates: true}); }); // Create the tabs $("#mortgage-block .tab-container") .easytabs({ animate: false, updateHash: false }) .bind("easytabs:after", function() { var thisProduct = $(this).find('.js-mini-mortgage-block.active').first().data('product'); // mortgage tab changed $.get('/api/ajax/mortgage/set?type=' + mortgageType + '&product=' + thisProduct + '&' + smartasset.inputs.getWidgetQuery(), function() { // update the inputs -- which will update the page smartasset.inputs.update(!noupdate); smartasset.analytics.track(smartasset.analytics.events.MortgageTypeChange, { page: window.location.pathname, mortgageType: mortgageType }); noupdate = false; // display the title updateTitle(thisProduct); }); }); // Display the table setTimeout(update, 1500); // Display the title updateTitle($(this).find('.js-mini-mortgage-block.active').first().data('product')); // Use this hook to force an update of the Mortgage Block smartasset.hooks.register("triggerMortgageBlockUpdate", function() { initialized = true; }); // Use this hook for when a different mortgage product has been selected (other than in the tabs) smartasset.hooks.register("changeMortgageBlock", function(params) { // params should be // loanProduct: Fixed30Y|Fixed15Y|Arm3Y1|Arm5Y1|Arm7Y1 // triggerInputUpdate: true|false var loanProduct = "", triggerInputUpdate = true; if (params != null && typeof(params) == "object") { if (_.has(params, "loanProduct")) { loanProduct = params.loanProduct; } else { console.error("changeMortgageBlock hook called without loanProduct parameter."); return; } if (_.has(params, "triggerInputUpdate")) { triggerInputUpdate = params.triggerInputUpdate; } // update block //console.log("triggerInputUpdate: " ,triggerInputUpdate); var e = '#mtg-' + loanProduct; noupdate = !triggerInputUpdate; $("#mortgage-block .tab-container").easytabs('select', e); } else { // console.error("changeMortgageBlock hook called without parameters."); } }); smartasset.hooks.register("onInputsLoaded", function() { smartasset.hooks.call('triggerMortgageBlockUpdate'); }); // SA-11144 -- Create Impression Event for Mortgage Featured Listings // per notes in the ticket, these events should only fire ONCE per page load // // NOTE for mini-rates table Featured Listings: current implementation via app config shows // the same Featured Listings across all tabs. As such, currently trackFeaturedListings() DOES NOT // take into account which tab is in view. In the future, if different Featured Listings show // depending on the tab in view, trackFeaturedListings() would need to be more sophisticated. trackFeaturedListings(); setTimeout(function() { setShowMoreListener(populateShowMoreComponent($('.js-toggle.mtg-block-info'))); }, 1400); } $(initialize); return { rowClick: rowClick, ratesTableRedirect: ratesTableRedirect }; })(); //@ sourceURL=mortgages_html.js
  • About This Answer

    To calculate the exact amount of property tax you will owe requires your property's assessed value and the property tax rates based on your property's address. Please note that we can only estimate your property tax based on median property taxes in your area. There are typically multiple rates in a given area, because your state, county, local schools and emergency responders each receive funding partly through these taxes. In our calculator, we take your home value and multiply that by your county's effective property tax rate. This is equal to the median property tax paid as a percentage of the median home value in your county.

    ...read more
Share Your Feedback
How would you rate your experience using this SmartAsset tool?
What is the most important reason for that score? (optional)
Please limit your response to 150 characters or less.
Thank you for your answer! Your feedback is very important to us.

How Alabama Property Taxes Work

Photo credit: ©iStock.com/mj0007

Alabama property taxes are due on Oct. 1 of each year and any taxes unpaid as of Dec. 31 are considered delinquent. Taxes are based on property’s value, although actual millage rates apply to “assessed” value, which varies depending on the primary use of the property.

For residential property, the assessed value is 10% of the appraised, or market, value. So, for example, a home with an appraised value of $200,000 would have an assessed value of $20,000 (10% of $200,000). If that home was subject to a total property tax rate of 30 mills, the total annual property tax would be $600 ($20,000 x [30 / 1000]).

If you’re considering becoming a homeowner in Alabama or are looking into refinancing a property there, check out our Alabama mortgage guide for important information about getting mortgages and details about mortgage rates in the Yellowhammer State.

A financial advisor can help you understand how homeownership can fit into your overall financial goals. SmartAsset’s free tool matches you with up to three vetted financial advisors who serve your area, and you can interview your advisor matches at no cost to decide which one is right for you. If you’re ready to find an advisor who can help you achieve your financial goals, get started now.

Alabama Property Tax Rates

Property tax rates are represented in “mills,” a unit equal to one tenth of a percent (so 1% equals 10 mills). Total rates vary depending on the location of the property. For 2020, the statewide millage is 6.5, along with local rates charged by counties, school districts and municipalities. Additionally, there are some exemptions that may reduce your total property tax burden.

Because of these variations between mill rates at the local level and the exemptions available to homeowners, it is easier to compare locations by looking at effective property tax rates. Effective property tax rates are the median amount of property taxes actually paid each year as a percentage of the median home value. The table below shows the effective tax rates for every county in Alabama.

CountyMedian Home ValueMedian Annual Property Tax PaymentAverage Effective Property Tax Rate
Autauga $161,200$4800.30%
Baldwin $211,600$7650.36%
Barbour $86,500$3270.38%
Bibb $96,400$2440.25%
Blount $135,300$4190.31%
Bullock $74,800$4080.55%
Butler $98,100$2970.30%
Calhoun $121,600$6230.51%
Chambers $103,800$4000.39%
Cherokee $138,500$5300.38%
Chilton $104,500$3800.36%
Clarke $106,600$3110.29%
Clay $116,100$2790.24%
Cleburne $118,700$3930.33%
Coffee $153,700$5590.36%
Colbert $125,400$4800.38%
Conecuh $83,900$2860.34%
Coosa $89,200$2450.27%
Covington $99,600$2870.29%
Crenshaw $84,400$2840.34%
Cullman $135,200$3720.28%
Dale $113,800$3840.34%
Dallas $84,100$3390.40%
DeKalb $113,600$3860.34%
Elmore $171,100$5140.30%
Escambia $100,800$3900.39%
Etowah $124,400$5050.41%
Fayette $92,400$2910.31%
Franklin $103,000$3550.34%
Geneva $108,400$3430.32%
Greene $76,200$3280.43%
Hale $91,500$3450.38%
Henry $119,000$4380.37%
Houston $141,800$5040.36%
Jackson $107,900$3570.33%
Jefferson $165,000$1,1740.71%
Lamar $95,400$2470.26%
Lauderdale $149,500$7050.47%
Lawrence $113,800$3990.35%
Lee $173,700$1,0110.58%
Limestone $167,800$7120.42%
Lowndes $66,500$3110.47%
Macon $82,400$3950.48%
Madison $190,200$9610.51%
Marengo $82,200$3620.44%
Marion $87,700$2500.29%
Marshall $141,300$6010.43%
Mobile $138,400$7700.56%
Monroe $100,900$3080.31%
Montgomery $130,000$5600.43%
Morgan $143,900$5940.41%
Perry $80,100$2540.32%
Pickens $100,000$3320.33%
Pike $131,600$3960.30%
Randolph $119,500$3750.31%
Russell $126,300$5570.44%
St. Clair $165,900$5850.35%
Shelby $220,700$1,2670.57%
Sumter $67,300$2530.38%
Talladega $112,300$4070.36%
Tallapoosa $108,300$3560.33%
Tuscaloosa $179,000$7040.39%
Walker $109,600$2940.27%
Washington $88,100$2700.31%
Wilcox $67,200$2780.41%
Winston $87,300$2750.32%

Want to learn more about your mortgage payments? Check out our mortgage loan calculator.

Jefferson County

The largest county in Alabama, Jefferson County also has some the highest property taxes in the state (although they are still relatively low in comparison with the rest of the country). The countywide, base millage rate is 20. This includes 6.5 mills that go to the state fund, 5.6 mills that go to Jefferson County’s general fund, 7.9 mills that go to things like roads, bridges and sewers and another 3.0mills that go to schools across the county.

On top of those countywide rates, there are additional rates that vary by school district and the city in which your home is located. Local school district property taxes in Jefferson county range from 5.4 mills in District 52 (Bessemer) up to 34.1 in District 17 (Mt. Brook). Most districts in the county have a millage rate of 21.9. Along with the 8.2 mill countywide school district property tax, these taxes go directly to support local schools.

Some municipalities in Jefferson County also collect their own property taxes. In Birmingham, which is the largest city in the county, as well as the state, the municipal millage rate is 28.5. That means the total rate, including those listed above, is 78.6. That’s equal to 7.86%, but that applies to assessed value, which is just 10% of actual market value. That means effective property tax rates in Birmingham are closer to 0.75%.

If you have questions about how property taxes can affect your overall financial plans, a financial advisor in Birmingham can help you out.

Mobile County

The average homeowner in Mobile County pays $770 annually in property taxes, the fifth-highest average payment in the state. Of course, actual payments depend on your home value and where you live. Property tax millage rates in the county are 20.5. That includes amounts that go toward the general fund, roads and bridges, hospitals and schools.

There are additional school millage rates which vary depending on location. Inside Mobile and Pritchard, the additional millage is 12.0, while outside those two cities, the additional millage is just 4.0. Lastly, there are additional city property taxes in 10 Mobile County cities. In Mobile city, the municipal rate is 7.0, which brings the total millage rate for residents of Mobile city to 63.5.

Madison County

Total property taxes in Madison County range from 14 (outside municipality) to 11(inside municipality).About one-third of county property taxes go to schools, with rates varying based on district. In District 1, which includes all areas outside of Huntsville, the school millage rate is 16.0. In District 2, which includes Huntsville, the school millage rate is 21.0 (that's included in the total millage of 58 listed above).

Montgomery County

Total property taxes in Montgomery County vary from 7.5 to 12.5 depending on location. Schools, regardless of district have a set rate of 10. For homeowners outside the city of Montgomery, there is an additional tax of 5.0 mills for fire protection (except for Pike Road). However, Montgomery also collects a municipal tax of 12.5 mills.

Shelby County

Photo credit: ©iStock.com/Peeter Viisimaa

Shelby County is the fifth-largest county in Alabama. The median home value there is $220,700 and the median annual property tax payment is $1,267. That’s the highest mark of any county in the state, but it's still lower than the national average, which is $2,795.

Countywide property tax rates begin at 30.0 mills (including state rates). There are additional school district property taxes of 14.0 mills outside of Hoover, Birmingham and Vestavia Hills. In Hoover, the school district tax is 6.0 mills.

Additional city taxes can be as high as 49.3 mills in Vestavia Hills. That means the total property tax millage rate in Shelby County can be as high as 79.3 mills.

Tuscaloosa County

Home to the city of Tuscaloosa and the University of Alabama, Tuscaloosa County collects property taxes to fund education, infrastructure projects and other local services at a rate of 10.5. 

Baldwin County

The median annual property tax payment in Baldwin County is just $765, about one-fifth of the U.S. mark for annual property taxes. The county has an average effective property tax rate (property taxes as a percentage of market value) of about 0.36%.

Actual property tax rates in the county are based on assessed value (10% of market value), with millage rates ranging from 11.5 to 9.5.

Lee County

Lee County has some of the highest property taxes in Alabama, although taxes are still relatively low in relation to the rest of the U.S. Lee County homeowners pay a median of $1,1011 annually in property taxes.

Property tax rates in Lee County vary between cities and the rest of the county. In the two largest cities, Auburn and Opelika, the total property tax rate is 52.0 mills. In Phenix, the rate is 19 mills. In Notasulga, Waverly and Smiths Station, the rate is 10.0 mills. 

Morgan County

The county rate ranges from 10.8 to 13.8.Decatur has the highest property tax rate in the state at 18.6 mills. It is followed by Falkville, Hartselle and Trinity at 5 mills each. 

Calhoun County

The median annual property tax payment in Calhoun County is $623. Property tax rates range from 5 mills in rural areas in the northern part of the county up to 19 mills in Anniston. In Oxford and Jacksonville, the rate is 10 mills.

' + ''; // Append the link before the "SmartReads" link. $navCategories.find('.nav_blog').before(mobileOnlyMenuItem); }); // Get all the main category links after the mobile sections have been appended. var $navCategoryLinks = $navCategories.find('> ul > li.has_sub:not(.nav_more) > a:not(.js-static-link)'); // Desktop + Mobile: Initialize tracking. $headerButtons.find("a:not(.header-mobile_menu_button)").click(function() { var $this = $(this); smartasset.page.eventTrack("NavHeaderClick", { label: $this.text(), url: $this.attr("href") }); }); $headerFalcAnchors.find("a").click(function() { var $this = $(this); smartasset.page.eventTrack("NavHeaderClick", { label: document.querySelector("meta[property='og:title']").content, url: $this.attr("href") }); }) // Mobile: Append mobile category titles to the DOM, using the regular link titles. $navCategoryLinks.each(function() { var linkText = $(this).text(); if (linkText) { $(this).parent().prepend("

" + linkText + "

"); } }); // Mobile: Navigate to a sub-category on clicking a main category link. $navCategoryLinks.click(function(e) { // Since these links can be clicked on desktop, check if on tablet size and below. // NOTE: There is no screen width check in the other click event listeners, because those elements should only appear on mobile/tablet. if ($(document).width() <= 1120) { // Do not not go to the default link URL. e.preventDefault(); if (isAnimating) return; isAnimating = true; var $this = $(this); $navCategories.removeClass('overflowed'); $navCategories.children('ul').toggleClass('offscreen'); $this.siblings('.nav_sub_container').addClass('mobile-category-active overflowed'); $this.siblings('.mobile-menu-category-title').removeClass('js-hidden'); setTimeout(function () { isAnimating = false; }, 500); } }); // Mobile: Navigate back to main categories on clicking the top titles in the sub menus. $navCategories.find('.mobile-menu-category-title').click(function() { if (!isAnimating) { var $this = $(this); isAnimating = true; $navCategories.children('ul').removeClass('offscreen'); $navCategories.addClass('overflowed'); setTimeout (function() { $this.siblings('.nav_sub_container').removeClass('mobile-category-active'); $this.addClass('js-hidden'); isAnimating = false; }, 500); } }); // Mobile: Toggle the mobile menu on clicking the hamburger button, the mobile close button, or the mobile overlay (area outside the menu). $('.header-mobile_menu_button, .header-mobile_menu_close_button, #mobile-menu-overlay').on('click', function () { // Don't do anything if animating. if (isAnimating) return; var menuIsActive = $headerButtons.hasClass('mobile-menu-active'); $('#mobile-menu-overlay').toggle(); isAnimating = true; // If menu is open, close it. if (menuIsActive) { $headerButtons.removeClass('mobile-menu-active'); // Let the body scroll. window.requestAnimationFrame(function() { // Add a 'mobile-menu-open' class to the body to make it non-scrollable. $body.removeClass('mobile-menu-open') .css({ top: '' }); window.scrollTo({ top: currentYPosition, behavior: 'instant' }); }); setTimeout(function() { // Reset elements after the menu has finished closing. $headerButtons.removeClass('mobile-menu-visible'); $navCategories.children('ul').removeClass('offscreen'); $navCategories.find('.nav_sub_container').removeClass('mobile-category-active'); }, 500); } else { // Toggle the visibility of the mobile menu, then scroll it into view. $headerButtons.addClass('mobile-menu-visible'); setTimeout(function() { $headerButtons.addClass('mobile-menu-active'); }, 10); window.requestAnimationFrame(function() { // recording the current window position currentYPosition = window.scrollY; // Add a 'mobile-menu-open' class to the body to make it non-scrollable. $body.addClass('mobile-menu-open') .css({ top: currentYPosition * -1 + 'px' }); }); // Making the menu scrollable since this class was possibly removed. $navCategories.addClass('overflowed'); } setTimeout(function() { isAnimating = false; }, 500); }); })();