PLACE-BASED COMMUNITY ECONOMIC DEVELOPMENT

If housing is a human right, then it should be right to build housing. 

Supply falls short of demand which is pushing prices higher. By the end of this decade, we will need 30,000-40,000 more homes – and about 16,500 of those units are just to normalize vacancy rates, address homelessness, and replace homes that are destroyed. The cumulative impact of decisions made over many decades has resulted in the current housing shortage. The decisions we collectively make moving forward can turn this around. 

TARGET

Grow Vermont's non-seasonal housing stock to 350,000 units by 2035.

CURRENT STATUS

As of 2021, Vermont had an estimated 270,163 non-seasonal housing units.

TREND

Housing stock only increased by about 2,000 units between 2019-2021.

Key Performance Indicators

Select indicators below for data.

  • TARGET = 350,000 Non-Seasonal Units
    STATUS = 269,527 Units (2021)

    Growing the housing stock to 350,000 non-seasonal units will create capacity for a population of 802,000.

Dashboard 1
var divElement = document.getElementById(‘viz1692041752263’); var vizElement = divElement.getElementsByTagName(‘object’)[0]; vizElement.style.width=’650px’;vizElement.style.height=’927px’; var scriptElement = document.createElement(‘script’); scriptElement.src = ‘https://public.tableau.com/javascripts/api/viz_v1.js’; vizElement.parentNode.insertBefore(scriptElement, vizElement);
Estimated housing units by housing type
var divElement = document.getElementById(‘viz1692041852038’); var vizElement = divElement.getElementsByTagName(‘object’)[0]; if ( divElement.offsetWidth > 800 ) { vizElement.style.width=’900px’;vizElement.style.height=’1007px’;} else if ( divElement.offsetWidth > 500 ) { vizElement.style.width=’900px’;vizElement.style.height=’1007px’;} else { vizElement.style.width=’100%’;vizElement.style.height=’727px’;} var scriptElement = document.createElement(‘script’); scriptElement.src = ‘https://public.tableau.com/javascripts/api/viz_v1.js’; vizElement.parentNode.insertBefore(scriptElement, vizElement);
Dashboard 1
var divElement = document.getElementById(‘viz1692048145159’); var vizElement = divElement.getElementsByTagName(‘object’)[0]; if ( divElement.offsetWidth > 800 ) { vizElement.style.width=’1000px’;vizElement.style.height=’827px’;} else if ( divElement.offsetWidth > 500 ) { vizElement.style.width=’1000px’;vizElement.style.height=’827px’;} else { vizElement.style.width=’100%’;vizElement.style.height=’727px’;} var scriptElement = document.createElement(‘script’); scriptElement.src = ‘https://public.tableau.com/javascripts/api/viz_v1.js’; vizElement.parentNode.insertBefore(scriptElement, vizElement);
Estimated housing units by year structure built
var divElement = document.getElementById(‘viz1692048000463’); var vizElement = divElement.getElementsByTagName(‘object’)[0]; if ( divElement.offsetWidth > 800 ) { vizElement.style.width=’900px’;vizElement.style.height=’827px’;} else if ( divElement.offsetWidth > 500 ) { vizElement.style.width=’900px’;vizElement.style.height=’827px’;} else { vizElement.style.width=’100%’;vizElement.style.height=’727px’;} var scriptElement = document.createElement(‘script’); scriptElement.src = ‘https://public.tableau.com/javascripts/api/viz_v1.js’; vizElement.parentNode.insertBefore(scriptElement, vizElement);
  • TARGET = 7,250 permits annually
    STATUS = 2,302 (2022)

    The rate of units permitted per year is far below what is needed to reach 2035 population and housing goals. Most new structures are still single-family buildings.

Building permits by number of homes
var divElement = document.getElementById(‘viz1709759428512’); var vizElement = divElement.getElementsByTagName(‘object’)[0]; if ( divElement.offsetWidth > 800 ) { vizElement.style.width=’900px’;vizElement.style.height=’1427px’;} else if ( divElement.offsetWidth > 500 ) { vizElement.style.width=’900px’;vizElement.style.height=’1427px’;} else { vizElement.style.width=’100%’;vizElement.style.height=’1177px’;} var scriptElement = document.createElement(‘script’); scriptElement.src = ‘https://public.tableau.com/javascripts/api/viz_v1.js’; vizElement.parentNode.insertBefore(scriptElement, vizElement);
Rate of change in occupied housing supply
var divElement = document.getElementById(‘viz1692049099288’); var vizElement = divElement.getElementsByTagName(‘object’)[0]; if ( divElement.offsetWidth > 800 ) { vizElement.style.width=’900px’;vizElement.style.height=’827px’;} else if ( divElement.offsetWidth > 500 ) { vizElement.style.width=’900px’;vizElement.style.height=’827px’;} else { vizElement.style.width=’100%’;vizElement.style.height=’727px’;} var scriptElement = document.createElement(‘script’); scriptElement.src = ‘https://public.tableau.com/javascripts/api/viz_v1.js’; vizElement.parentNode.insertBefore(scriptElement, vizElement);
Primary home sales
var divElement = document.getElementById(‘viz1692049457507’); var vizElement = divElement.getElementsByTagName(‘object’)[0]; if ( divElement.offsetWidth > 800 ) { vizElement.style.width=’900px’;vizElement.style.height=’1127px’;} else if ( divElement.offsetWidth > 500 ) { vizElement.style.width=’900px’;vizElement.style.height=’1127px’;} else { vizElement.style.width=’100%’;vizElement.style.height=’1127px’;} var scriptElement = document.createElement(‘script’); scriptElement.src = ‘https://public.tableau.com/javascripts/api/viz_v1.js’; vizElement.parentNode.insertBefore(scriptElement, vizElement);
Median days on market by home type (monthly)
var divElement = document.getElementById(‘viz1692049771675’); var vizElement = divElement.getElementsByTagName(‘object’)[0]; if ( divElement.offsetWidth > 800 ) { vizElement.style.width=’900px’;vizElement.style.height=’1127px’;} else if ( divElement.offsetWidth > 500 ) { vizElement.style.width=’900px’;vizElement.style.height=’1127px’;} else { vizElement.style.width=’100%’;vizElement.style.height=’1027px’;} var scriptElement = document.createElement(‘script’); scriptElement.src = ‘https://public.tableau.com/javascripts/api/viz_v1.js’; vizElement.parentNode.insertBefore(scriptElement, vizElement);
  • TARGET = 5% | STATUS = 3.2%

    Current vacancy rates are indicative of a supply shortage. The low vacancy rates lead to market inefficiencies by inhibiting mobility and cause prices to rise.

Rental vacancy rate
var divElement = document.getElementById(‘viz1692050539016’); var vizElement = divElement.getElementsByTagName(‘object’)[0]; if ( divElement.offsetWidth > 800 ) { vizElement.style.width=’900px’;vizElement.style.height=’927px’;} else if ( divElement.offsetWidth > 500 ) { vizElement.style.width=’900px’;vizElement.style.height=’927px’;} else { vizElement.style.width=’100%’;vizElement.style.height=’727px’;} var scriptElement = document.createElement(‘script’); scriptElement.src = ‘https://public.tableau.com/javascripts/api/viz_v1.js’; vizElement.parentNode.insertBefore(scriptElement, vizElement);
Median gross rent estimates
var divElement = document.getElementById(‘viz1692050985686’); var vizElement = divElement.getElementsByTagName(‘object’)[0]; if ( divElement.offsetWidth > 800 ) { vizElement.style.width=’900px’;vizElement.style.height=’867px’;} else if ( divElement.offsetWidth > 500 ) { vizElement.style.width=’900px’;vizElement.style.height=’867px’;} else { vizElement.style.width=’100%’;vizElement.style.height=’727px’;} var scriptElement = document.createElement(‘script’); scriptElement.src = ‘https://public.tableau.com/javascripts/api/viz_v1.js’; vizElement.parentNode.insertBefore(scriptElement, vizElement);
Median gross rent estimates by number of bedrooms
var divElement = document.getElementById(‘viz1692051112086’); var vizElement = divElement.getElementsByTagName(‘object’)[0]; if ( divElement.offsetWidth > 800 ) { vizElement.style.width=’900px’;vizElement.style.height=’827px’;} else if ( divElement.offsetWidth > 500 ) { vizElement.style.width=’900px’;vizElement.style.height=’827px’;} else { vizElement.style.width=’100%’;vizElement.style.height=’727px’;} var scriptElement = document.createElement(‘script’); scriptElement.src = ‘https://public.tableau.com/javascripts/api/viz_v1.js’; vizElement.parentNode.insertBefore(scriptElement, vizElement);
Estimated households by tenure and age of householder
var divElement = document.getElementById(‘viz1692051622925’); var vizElement = divElement.getElementsByTagName(‘object’)[0]; if ( divElement.offsetWidth > 800 ) { vizElement.style.width=’900px’;vizElement.style.height=’902px’;} else if ( divElement.offsetWidth > 500 ) { vizElement.style.width=’900px’;vizElement.style.height=’902px’;} else { vizElement.style.width=’100%’;vizElement.style.height=’727px’;} var scriptElement = document.createElement(‘script’); scriptElement.src = ‘https://public.tableau.com/javascripts/api/viz_v1.js’; vizElement.parentNode.insertBefore(scriptElement, vizElement);
Homelessness estimates from one night count
var divElement = document.getElementById(‘viz1692135154206’); var vizElement = divElement.getElementsByTagName(‘object’)[0]; vizElement.style.width=’900px’;vizElement.style.height=’1877px’; var scriptElement = document.createElement(‘script’); scriptElement.src = ‘https://public.tableau.com/javascripts/api/viz_v1.js’; vizElement.parentNode.insertBefore(scriptElement, vizElement);
Households by housing costs as a percentage of household income
var divElement = document.getElementById(‘viz1692132921419’); var vizElement = divElement.getElementsByTagName(‘object’)[0]; if ( divElement.offsetWidth > 800 ) { vizElement.style.width=’900px’;vizElement.style.height=’977px’;} else if ( divElement.offsetWidth > 500 ) { vizElement.style.width=’900px’;vizElement.style.height=’977px’;} else { vizElement.style.width=’100%’;vizElement.style.height=’827px’;} var scriptElement = document.createElement(‘script’); scriptElement.src = ‘https://public.tableau.com/javascripts/api/viz_v1.js’; vizElement.parentNode.insertBefore(scriptElement, vizElement);
Households with housing problems
var divElement = document.getElementById(‘viz1692132679667’); var vizElement = divElement.getElementsByTagName(‘object’)[0]; if ( divElement.offsetWidth > 800 ) { vizElement.style.width=’900px’;vizElement.style.height=’1002px’;} else if ( divElement.offsetWidth > 500 ) { vizElement.style.width=’900px’;vizElement.style.height=’1002px’;} else { vizElement.style.width=’100%’;vizElement.style.height=’827px’;} var scriptElement = document.createElement(‘script’); scriptElement.src = ‘https://public.tableau.com/javascripts/api/viz_v1.js’; vizElement.parentNode.insertBefore(scriptElement, vizElement);
Population in group quarters
var divElement = document.getElementById(‘viz1692134813385’); var vizElement = divElement.getElementsByTagName(‘object’)[0]; if ( divElement.offsetWidth > 800 ) { vizElement.style.width=’800px’;vizElement.style.height=’727px’;} else if ( divElement.offsetWidth > 500 ) { vizElement.style.width=’800px’;vizElement.style.height=’727px’;} else { vizElement.style.width=’100%’;vizElement.style.height=’727px’;} var scriptElement = document.createElement(‘script’); scriptElement.src = ‘https://public.tableau.com/javascripts/api/viz_v1.js’; vizElement.parentNode.insertBefore(scriptElement, vizElement);
  • TARGET < 5% of households severely cost-burdened
    Status = 14% (2021)

    The federal threshold for housing affordability is 30% of household income. Between 30-50% of household income spent on housing is considered cost-burdened. Above 50% is severely cost-burdened.

Households by housing costs as a percentage of household income
var divElement = document.getElementById(‘viz1692136703778’); var vizElement = divElement.getElementsByTagName(‘object’)[0]; if ( divElement.offsetWidth > 800 ) { vizElement.style.width=’900px’;vizElement.style.height=’977px’;} else if ( divElement.offsetWidth > 500 ) { vizElement.style.width=’900px’;vizElement.style.height=’977px’;} else { vizElement.style.width=’100%’;vizElement.style.height=’827px’;} var scriptElement = document.createElement(‘script’); scriptElement.src = ‘https://public.tableau.com/javascripts/api/viz_v1.js’; vizElement.parentNode.insertBefore(scriptElement, vizElement);
Severely cost-burdened households
var divElement = document.getElementById(‘viz1692136753560’); var vizElement = divElement.getElementsByTagName(‘object’)[0]; if ( divElement.offsetWidth > 800 ) { vizElement.style.width=’900px’;vizElement.style.height=’877px’;} else if ( divElement.offsetWidth > 500 ) { vizElement.style.width=’900px’;vizElement.style.height=’877px’;} else { vizElement.style.width=’100%’;vizElement.style.height=’727px’;} var scriptElement = document.createElement(‘script’); scriptElement.src = ‘https://public.tableau.com/javascripts/api/viz_v1.js’; vizElement.parentNode.insertBefore(scriptElement, vizElement);
Estimated median household income by tenure
var divElement = document.getElementById(‘viz1692137544303’); var vizElement = divElement.getElementsByTagName(‘object’)[0]; if ( divElement.offsetWidth > 800 ) { vizElement.style.width=’900px’;vizElement.style.height=’877px’;} else if ( divElement.offsetWidth > 500 ) { vizElement.style.width=’900px’;vizElement.style.height=’877px’;} else { vizElement.style.width=’100%’;vizElement.style.height=’727px’;} var scriptElement = document.createElement(‘script’); scriptElement.src = ‘https://public.tableau.com/javascripts/api/viz_v1.js’; vizElement.parentNode.insertBefore(scriptElement, vizElement);
Affordable home price calculator
var divElement = document.getElementById(‘viz1692222102511’); var vizElement = divElement.getElementsByTagName(‘object’)[0]; vizElement.style.width=’750px’;vizElement.style.height=’1127px’; var scriptElement = document.createElement(‘script’); scriptElement.src = ‘https://public.tableau.com/javascripts/api/viz_v1.js’; vizElement.parentNode.insertBefore(scriptElement, vizElement);
  • TARGET = BIPoC Homeownership rate within 5% of White
    Status: BIPoC = 47%, White = 73%, Gap = 26%

    Gaps in homeownership rates between BIPoC Vermonters and White Vermonters are indicative of structural and systemic inequities that must be addressed to ensure that all Vermonters have equal economic opportunity to build and transfer wealth.

Dashboard 1
var divElement = document.getElementById(‘viz1692221097440’); var vizElement = divElement.getElementsByTagName(‘object’)[0]; if ( divElement.offsetWidth > 800 ) { vizElement.style.width=’900px’;vizElement.style.height=’942px’;} else if ( divElement.offsetWidth > 500 ) { vizElement.style.width=’900px’;vizElement.style.height=’942px’;} else { vizElement.style.width=’100%’;vizElement.style.height=’727px’;} var scriptElement = document.createElement(‘script’); scriptElement.src = ‘https://public.tableau.com/javascripts/api/viz_v1.js’; vizElement.parentNode.insertBefore(scriptElement, vizElement);
Dashboard 1
var divElement = document.getElementById(‘viz1692221217766’); var vizElement = divElement.getElementsByTagName(‘object’)[0]; if ( divElement.offsetWidth > 800 ) { vizElement.style.width=’900px’;vizElement.style.height=’1077px’;} else if ( divElement.offsetWidth > 500 ) { vizElement.style.width=’900px’;vizElement.style.height=’1077px’;} else { vizElement.style.width=’100%’;vizElement.style.height=’727px’;} var scriptElement = document.createElement(‘script’); scriptElement.src = ‘https://public.tableau.com/javascripts/api/viz_v1.js’; vizElement.parentNode.insertBefore(scriptElement, vizElement);
Mortgages applications by race of borrower
var divElement = document.getElementById(‘viz1692221249413’); var vizElement = divElement.getElementsByTagName(‘object’)[0]; if ( divElement.offsetWidth > 800 ) { vizElement.style.width=’900px’;vizElement.style.height=’1127px’;} else if ( divElement.offsetWidth > 500 ) { vizElement.style.width=’900px’;vizElement.style.height=’1127px’;} else { vizElement.style.width=’100%’;vizElement.style.height=’977px’;} var scriptElement = document.createElement(‘script’); scriptElement.src = ‘https://public.tableau.com/javascripts/api/viz_v1.js’; vizElement.parentNode.insertBefore(scriptElement, vizElement);