{"zip":"94591","city":"Vallejo","state":"CA","county":"Solano County","countySlug":"solano-county-ca","metro":"Vallejo, CA","metroSlug":"vallejo-ca","citySlug":"vallejo-ca","rentPeriod":"2026-06","acsPeriod":"ACS 2024 5-year","directRent":2301,"rentYoy":-0.0176,"bedroomEstimates":[1655,1801,2301,3075,3483],"hudFmr":[1567,1705,2178,2911,3297],"ladderSource":"county","population":58193,"populationMoe":1743,"medianIncome":104550,"medianIncomeMoe":5870,"medianGrossRent":2288,"medianGrossRentMoe":94,"housingUnits":20838,"occupiedUnits":20040,"vacantUnits":798,"renterOccupied":6662,"rentBurdenTotal":6662,"rentBurden30Plus":3643,"vacantForRent":74,"vacantForSale":215,"vacantSeasonal":105,"structureTotal":20838,"singleFamilyUnits":17289,"largeMultifamilyUnits":1149,"vacancyRate":0.038295421825511086,"renterShare":0.332435129740519,"rentBurdenShare":0.5468327829480636,"requiredIncome":92040,"askingRentToIncome":0.264103299856528,"askingVsAcsRent":1.0056818181818181,"askingVsHud2br":1.056473829201102,"cityRent":2180.9907480257602,"countyRent":2438,"metroRent":2438,"cityGrossRent":2073,"countyGrossRent":2163,"countyListings":834,"countyListingDom":43,"countyPriceReducedShare":0.1867,"countyListingPeriod":"2026-06","metroMonthsSupply":3,"metroMedianDom":39,"metroPriceDrops":0.283,"metroResalePeriod":"2026-05-01","apartmentVacancy":0.0438569527839763,"apartmentTimeOnMarket":null,"zipResalePeriodBegin":"2026-04-01","zipResalePeriodEnd":"2026-06-30","zipResaleUpdated":"2026-07-03","zipHomesSold":136,"zipSalePrice":579869,"zipSalePriceYoy":0.012,"zipMedianDom":37,"zipActiveListings":278,"zipActiveListingsYoy":-0.0455,"zipInventory":129,"zipInventoryYoy":0.0404,"zipPendingSales":159,"zipMonthsSupply":2.9,"zipSaleToList":1.0092,"zipSoldAboveList":0.5156,"zipOffMarketTwoWeeks":0.3836,"generatedAt":"2026-09-01 10:01:28.913911+00","summaryHtml":"<p>The chief current tension is a cooling asking-rent index alongside firmer resale pricing. At June 2026, Zillow’s ZIP-level ZORI for the five-digit 94591 label was $2,301 per month, down 1.8% from the same month a year earlier. ZORI is a typical observed asking-rent index blended across rental types, not a quote for any particular available home. The 94591 label is both a Zillow ZIP market identifier and a Census ZCTA match; a ZCTA is a statistical area and is not identical to a USPS delivery ZIP. The rent decline is backward-looking evidence of a softer recent asking-rent reading, while the separate resale evidence requires its own interpretation.</p><p>The matched ACS 2024 five-year survey places median gross rent at $2,288 for occupied renter homes. That survey measure is not interchangeable with ZORI: it represents renter households rather than currently marketed listings, is based on a multi-year survey, and includes selected utilities. HUD’s FY2026 two-bedroom standard is $2,178. HUD FMR or SAFMR is an administrative, bedroom-specific standard rather than asking rent, so it should not be used as a rental comp. The ZIP asking-rent index sits close to the ACS gross-rent median but above the HUD two-bedroom benchmark, which describes different evidence universes rather than a conflict requiring reconciliation.</p><p>The bedroom view is a set of modelled monthly ZIP estimates, not measured bedroom rents. Scaling the ZIP ZORI through the local HUD bedroom ladder produces $1,655 for a studio, $1,801 for one bedroom, $2,301 for two bedrooms, $3,075 for three bedrooms, and $3,483 for four bedrooms. The construction preserves the local HUD ladder’s relative bedroom steps while anchoring the model to the ZIP-level asking-rent index. These figures can organize a size-based screen, but they do not establish the rent, utility treatment, condition, availability, or lease terms of a specific unit.</p><p>The local income and burden measures show why a single typical-rent figure should not stand in for household affordability. Median household income in the matched ZCTA is $104,550. Applying the arithmetic 30% screen to the current ZIP ZORI produces required annual income of $92,040, and the index equals 26.4% of median household income. This is an arithmetic comparison, not advice and not an applicant qualification rule. In the ACS renter sample, 3,643 of 6,662 renter households, or 54.7%, reported spending at least 30% of income on rent. That burden measure describes surveyed households and cannot prove the affordability of any particular home or tenant.</p><p>Housing-stock evidence provides useful scale but not a direct measure of lease-up conditions. The ZCTA contains 20,838 housing units, with a 3.8% overall vacancy rate. Of the recorded vacant units, 74 were vacant for rent. This count does not say whether those homes were comparable to the ZORI rental mix, appropriately priced, habitable, or available at the same time. Nor does a low aggregate vacancy reading establish scarcity for a particular bedroom count or property type. It instead supplies a broad snapshot of housing occupancy and vacancy from the ACS evidence universe.</p><p>The history supports a longer expansion that has recently broken into cooling. The one-year same-month change is negative, while the exact same-month annualized changes over three years and five years are 1.2% and 2.6%, respectively. Annualized monthly-return variability of 2.5% indicates that the index’s month-to-month path has moved within a relatively limited historical range, supporting moderate confidence in the broad rent level but not precision for one listing. Its 2.5% maximum drawdown shows the largest peak-to-trough reversal was also contained, yet the latest-year decline still interrupts the longer positive path. History coverage is 100% across 138 observations. Transparent national discovery ranks among history-eligible ZIPs were 2,508 for momentum, 731 for stability, and 2,013 for the balanced score; lower rank is higher. These are backward-looking measurements, not forecasts or investment recommendations.</p><p>Broader rent context points in opposite directions depending on the comparator: the ZIP asking-rent index is above the Vallejo city-scope figure of $2,181, but below both the Solano County-scope and Vallejo, CA metro-scope figures of $2,438. Those city, county, and metro values are wider context only and are not ZIP rental comps. The comparison suggests that the ZIP’s current index occupies a middle position across those named scopes, while the ACS, HUD, and Zillow measures continue to answer different questions. A reader should avoid treating a citywide or metrowide benchmark as a substitute for a ZIP-specific listing or a matched-ZCTA household measure.</p><p>Redfin’s direct rolling-three-month ZIP resale observation describes for-sale transactions, not rental transactions. Median sold price was $579,869, up 1.2% year over year; 136 homes sold with a median 37 days on market. The resale snapshot also reported 278 active listings, inventory of 129 homes, and 2.9 months of supply. Average sale-to-list was 100.92%, while 51.56% of sales closed above list and 38.36% went off market within two weeks. Those resale signals challenge a simple reading of uniformly weaker housing conditions when the asking-rent index has cooled. Annualized ZIP ZORI divided by median sold price is a 4.8% cross-source screening ratio only, not a cap rate, property yield, net return, or expected return. Before applying any indicator to a property, verify the actual asking rent, bedroom count, utility responsibility, lease terms, condition, listing history, and completed-sale record.</p>","findings":[{"body":"ZIP ZORI declined 1.8% over the latest year, even though same-month annualized history remains positive over three and five years. The recent direction therefore breaks from, rather than confirms, the longer path. Modest historical variability and a contained drawdown support confidence in the broad index trend, but not in a particular listing’s rent.","title":"Recent rent cooling follows a longer positive path"},{"body":"The ZIP asking-rent index is $2,301, while ACS median gross rent is $2,288 for occupied renter households in the matched ZCTA. Their proximity should not erase source differences: ZORI reflects observed asking rents across rental types, whereas ACS is a five-year household survey that includes selected utilities.","title":"Current asking rent aligns closely with surveyed gross rent"},{"body":"The arithmetic income screen places the current ZIP ZORI below 30% of matched-ZCTA median household income, yet 54.7% of surveyed renter households reported rent burdens of at least 30%. The two measures describe different populations and calculations. Neither establishes whether a given household can afford a specific available rental.","title":"Household burden remains material in the survey evidence"},{"body":"The direct ZIP resale observation recorded higher median sold prices year over year, sale-to-list performance above 100%, and more than half of transactions closing above list. These are for-sale market signals, not rental comps. They create tension with the cooling ZORI reading rather than proving that either market will continue in a particular direction.","title":"Resale signals are firmer than the recent rent direction"}],"risks":["ZORI is a blended ZIP asking-rent index, so it can differ from the rent of a particular home because bedroom count, utilities, condition, timing, lease structure, and property type are not controlled here.","ACS gross rent, rent burden, household income, occupancy, and vacancy are matched-ZCTA five-year survey measures with sampling uncertainty; they should not be treated as current building-level operating evidence.","The bedroom figures are modelled by scaling ZIP ZORI with the local HUD ladder. They are not observed bedroom rents and may not match the actual pricing relationship among available units.","Redfin resale information covers direct rolling-three-month for-sale activity. Its sale price, marketing-time, supply, and sale-to-list measures cannot establish rental demand, property cash flow, or an outcome for a rental asset."],"qa":[{"a":"The 94591 label serves as both Zillow’s ZIP market identifier and a Census ZCTA match in this packet, but those geographies have different purposes. A ZCTA is a Census statistical area, whereas a USPS delivery ZIP is a mail-routing construct. The overlap supports comparison here without making them identical boundaries.","q":"Why is the ZCTA clarification important for ZIP 94591?"},{"a":"They are size-based estimates produced by scaling the ZIP asking-rent index through the local HUD bedroom ladder. They can help structure a preliminary comparison across bedroom counts, but they are not measured rents. A property-level review still needs the advertised rent, actual bedroom count, utilities, lease terms, condition, and availability.","q":"How should the modelled bedroom estimates be used?"},{"a":"It is arithmetic: annualized ZIP ZORI is compared with an income level that would place that rent at 30% of gross income. It does not determine whether any household qualifies, whether income is stable, whether utilities are included, or whether a particular renter faces a manageable housing cost.","q":"What does the 30% income screen establish?"},{"a":"The Redfin block records direct ZIP for-sale and resale activity over a rolling three-month period, including sold prices, listings, marketing time, supply, and sale-to-list outcomes. Those measures describe transactions involving home sales. They do not measure lease signings, rents achieved, operating costs, vacancy for a rental property, or net returns.","q":"Why should resale data not be treated as rental performance evidence?"}],"sources":[{"key":"apartment_list_time_on_market","name":"Apartment List Time on Market — listing liquidity","release":"Apartment List 2026-07","pulledAt":"2026-08-08","url":"https://www.apartmentlist.com/research/category/data-rent-estimates"},{"key":"apartment_list_vacancy","name":"Apartment List Vacancy Index — rental vacancy","release":"Apartment List 2026-07","pulledAt":"2026-08-08","url":"https://www.apartmentlist.com/research/apartment-list-vacancy-index-methodology"},{"key":"census_zcta_facts","name":"Census ACS five-year — ZCTA housing and income","release":"ACS 2024 5-year ZCTA","pulledAt":"2026-08-08","url":"https://api.census.gov/data/2024/acs/acs5.html"},{"key":"hud_zip","name":"HUD USPS crosswalk and Small Area FMRs — ZIP rent fallback","release":"ZIP-CBSA 2025Q4 + SAFMR FY2026","pulledAt":"2026-07-26","url":"https://www.huduser.gov/portal/datasets/usps_crosswalk.html"},{"key":"realtor_county","name":"Realtor.com Economic Research — county listing inventory","release":"county inventory 2026-06","pulledAt":"2026-07-28","url":"https://www.realtor.com/research/data/"},{"key":"redfin","name":"Redfin Data Center — inventory, days on market, and price cuts","release":"metro tracker through 2026-05-01","pulledAt":"2026-07-26","url":"https://www.redfin.com/news/data-center/"},{"key":"redfin_zip","name":"Redfin Data Center — ZIP resale activity and supply","release":"ZIP rolling 3 months through 2026-06-30; updated 2026-07-03","pulledAt":"2026-08-12","url":"https://www.redfin.com/news/data-center/"},{"key":"zillow_county","name":"Zillow ZHVI and ZORI — county values and rents","release":"county ZHVI/ZORI 2026-06","pulledAt":"2026-07-26","url":"https://www.zillow.com/research/data/"},{"key":"zillow_zori","name":"Zillow ZORI — metro market rents","release":"Metro_zori_uc_sfrcondomfr_sm_sa_month.csv","pulledAt":"2026-07-26","url":"https://www.zillow.com/research/data/"},{"key":"zillow_zori_city","name":"Zillow ZORI — city market rents","release":"zillow_zori_city.csv","pulledAt":"2026-07-29","url":"https://www.zillow.com/research/data/"},{"key":"zillow_zori_zip","name":"Zillow ZORI — ZIP market rents","release":"ZORI ZIP 2026-06","pulledAt":"2026-08-08","url":"https://www.zillow.com/research/data/"}],"history":[{"period":"2015-01-01","rent":1315.355515},{"period":"2015-02-01","rent":1329.755325},{"period":"2015-03-01","rent":1354.124797},{"period":"2015-04-01","rent":1361.113983},{"period":"2015-05-01","rent":1367.842636},{"period":"2015-06-01","rent":1384.684568},{"period":"2015-07-01","rent":1399.792019},{"period":"2015-08-01","rent":1406.51564},{"period":"2015-09-01","rent":1413.840963},{"period":"2015-10-01","rent":1440.228725},{"period":"2015-11-01","rent":1466.113364},{"period":"2015-12-01","rent":1485.330675},{"period":"2016-01-01","rent":1494.228379},{"period":"2016-02-01","rent":1481.270076},{"period":"2016-03-01","rent":1490.272183},{"period":"2016-04-01","rent":1477.354585},{"period":"2016-05-01","rent":1503.417577},{"period":"2016-06-01","rent":1506.989817},{"period":"2016-07-01","rent":1518.713772},{"period":"2016-08-01","rent":1516.855528},{"period":"2016-09-01","rent":1520.502372},{"period":"2016-10-01","rent":1520.123996},{"period":"2016-11-01","rent":1528.20591},{"period":"2016-12-01","rent":1552.483822},{"period":"2017-01-01","rent":1573.575566},{"period":"2017-02-01","rent":1577.60395},{"period":"2017-03-01","rent":1589.633719},{"period":"2017-04-01","rent":1608.360021},{"period":"2017-05-01","rent":1636.45213},{"period":"2017-06-01","rent":1639.369946},{"period":"2017-07-01","rent":1653.20958},{"period":"2017-08-01","rent":1653.111928},{"period":"2017-09-01","rent":1661.826396},{"period":"2017-10-01","rent":1653.82592},{"period":"2017-11-01","rent":1654.333191},{"period":"2017-12-01","rent":1656.378475},{"period":"2018-01-01","rent":1660.661487},{"period":"2018-02-01","rent":1699.072487},{"period":"2018-03-01","rent":1719.737569},{"period":"2018-04-01","rent":1741.230885},{"period":"2018-05-01","rent":1731.392544},{"period":"2018-06-01","rent":1737.750017},{"period":"2018-07-01","rent":1739.56201},{"period":"2018-08-01","rent":1743.187909},{"period":"2018-09-01","rent":1755.273801},{"period":"2018-10-01","rent":1754.254464},{"period":"2018-11-01","rent":1764.636815},{"period":"2018-12-01","rent":1777.326217},{"period":"2019-01-01","rent":1800.136974},{"period":"2019-02-01","rent":1796.09844},{"period":"2019-03-01","rent":1792.773929},{"period":"2019-04-01","rent":1791.08141},{"period":"2019-05-01","rent":1799.719955},{"period":"2019-06-01","rent":1813.354828},{"period":"2019-07-01","rent":1822.836853},{"period":"2019-08-01","rent":1840.617351},{"period":"2019-09-01","rent":1845.10951},{"period":"2019-10-01","rent":1867.747415},{"period":"2019-11-01","rent":1874.4437},{"period":"2019-12-01","rent":1874.109864},{"period":"2020-01-01","rent":1865.521933},{"period":"2020-02-01","rent":1864.396096},{"period":"2020-03-01","rent":1895.930716},{"period":"2020-04-01","rent":1887.875854},{"period":"2020-05-01","rent":1878.613037},{"period":"2020-06-01","rent":1905.994503},{"period":"2020-07-01","rent":1919.718123},{"period":"2020-08-01","rent":1933.858884},{"period":"2020-09-01","rent":1939.246001},{"period":"2020-10-01","rent":1953.033577},{"period":"2020-11-01","rent":1989.283844},{"period":"2020-12-01","rent":1995.338057},{"period":"2021-01-01","rent":2009.527764},{"period":"2021-02-01","rent":1970.062378},{"period":"2021-03-01","rent":1985.317983},{"period":"2021-04-01","rent":1991.366042},{"period":"2021-05-01","rent":2032.685317},{"period":"2021-06-01","rent":2027.249102},{"period":"2021-07-01","rent":2040.026757},{"period":"2021-08-01","rent":2029.698107},{"period":"2021-09-01","rent":2055.364378},{"period":"2021-10-01","rent":2073.992402},{"period":"2021-11-01","rent":2081.736921},{"period":"2021-12-01","rent":2078.491205},{"period":"2022-01-01","rent":2084.229189},{"period":"2022-02-01","rent":2117.260387},{"period":"2022-03-01","rent":2133.285836},{"period":"2022-04-01","rent":2157.242873},{"period":"2022-05-01","rent":2159.267263},{"period":"2022-06-01","rent":2157.454491},{"period":"2022-07-01","rent":2169.080702},{"period":"2022-08-01","rent":2186.700749},{"period":"2022-09-01","rent":2200.739925},{"period":"2022-10-01","rent":2186.775631},{"period":"2022-11-01","rent":2179.95666},{"period":"2022-12-01","rent":2192.637069},{"period":"2023-01-01","rent":2178.958782},{"period":"2023-02-01","rent":2191.318307},{"period":"2023-03-01","rent":2196.062946},{"period":"2023-04-01","rent":2212.07121},{"period":"2023-05-01","rent":2210.976989},{"period":"2023-06-01","rent":2218.796027},{"period":"2023-07-01","rent":2217.570329},{"period":"2023-08-01","rent":2218.97564},{"period":"2023-09-01","rent":2199.839288},{"period":"2023-10-01","rent":2201.002591},{"period":"2023-11-01","rent":2212.996766},{"period":"2023-12-01","rent":2229.510466},{"period":"2024-01-01","rent":2245.904738},{"period":"2024-02-01","rent":2244.71306},{"period":"2024-03-01","rent":2245.978496},{"period":"2024-04-01","rent":2234.659724},{"period":"2024-05-01","rent":2230.522387},{"period":"2024-06-01","rent":2242.415517},{"period":"2024-07-01","rent":2273.991775},{"period":"2024-08-01","rent":2305.513609},{"period":"2024-09-01","rent":2302.639759},{"period":"2024-10-01","rent":2289.528592},{"period":"2024-11-01","rent":2276.031915},{"period":"2024-12-01","rent":2288.044792},{"period":"2025-01-01","rent":2301.197914},{"period":"2025-02-01","rent":2305.261203},{"period":"2025-03-01","rent":2302.585942},{"period":"2025-04-01","rent":2322.57016},{"period":"2025-05-01","rent":2347.519367},{"period":"2025-06-01","rent":2341.933359},{"period":"2025-07-01","rent":2327.265928},{"period":"2025-08-01","rent":2310.014669},{"period":"2025-09-01","rent":2327.500444},{"period":"2025-10-01","rent":2347.608502},{"period":"2025-11-01","rent":2360.801508},{"period":"2025-12-01","rent":2347.033275},{"period":"2026-01-01","rent":2336.414754},{"period":"2026-02-01","rent":2333.707239},{"period":"2026-03-01","rent":2335.834909},{"period":"2026-04-01","rent":2322.962991},{"period":"2026-05-01","rent":2305.939825},{"period":"2026-06-01","rent":2300.751425}],"historySummary":{"pointCount":138,"firstPeriod":"2015-01-01","latestPeriod":"2026-06-01","coverageMonths":138,"coverageRatio":1,"changes":{"1":{"years":1,"startPeriod":"2025-06-01","endPeriod":"2026-06-01","startRent":2341.933359,"endRent":2300.751425,"change":-0.017584588323890094,"cagr":-0.017584588323890094},"3":{"years":3,"startPeriod":"2023-06-01","endPeriod":"2026-06-01","startRent":2218.796027,"endRent":2300.751425,"change":0.03693687792960887,"cagr":0.012163736262148062},"5":{"years":5,"startPeriod":"2021-06-01","endPeriod":"2026-06-01","startRent":2027.249102,"endRent":2300.751425,"change":0.13491303201475047,"cagr":0.02563425321222934}},"maxDrawdown":-0.02543631169181715,"annualizedVolatility":0.02518225095536904,"consecutiveReturnCount":137}}