Skip to content
🛠️ToolsShed

Rental Yield Calculator

Calculate gross and net rental yield, cap rate, and cash-on-cash return for investment properties.

About this tool

A rental yield calculator helps property investors evaluate the profitability and return on investment of rental properties. Whether you own a residential apartment, commercial building, or land, understanding your yield and cash flow is essential to making informed investment decisions and comparing properties against other investment opportunities.

The calculator requires basic property information: your total investment (including purchase price, closing costs, and renovations), monthly rental income, and annual expenses (property taxes, insurance, maintenance, utilities, and property management fees). It then computes multiple key metrics: gross yield (rental income as a percentage of property value), net yield (after expenses), cap rate (net operating income divided by property value), and cash-on-cash return (annual cash profit relative to cash invested). These figures reveal whether a property is meeting your return expectations.

This tool is invaluable for comparing different investment properties side-by-side, stress-testing scenarios (e.g., higher vacancy rates or maintenance costs), and validating that deals align with your financial goals. Keep in mind that the calculator assumes stable rental income and doesn't account for property appreciation, tax deductions, or financing costs—factors you should incorporate separately into your full investment analysis.

Frequently Asked Questions

Code Implementation

def rental_yield(
    property_price: float,
    monthly_rent: float,
    annual_expenses: float = 0,
    vacancy_rate_pct: float = 0,
) -> dict:
    """Calculate rental yield metrics for an investment property."""
    annual_rent = monthly_rent * 12
    effective_rent = annual_rent * (1 - vacancy_rate_pct / 100)

    gross_yield = (annual_rent / property_price) * 100
    net_income = effective_rent - annual_expenses
    net_yield = (net_income / property_price) * 100

    # Cap rate uses Net Operating Income (before financing)
    cap_rate = (net_income / property_price) * 100

    return {
        "gross_yield_pct": round(gross_yield, 2),
        "net_yield_pct": round(net_yield, 2),
        "cap_rate_pct": round(cap_rate, 2),
        "annual_gross_income": round(effective_rent, 2),
        "annual_net_income": round(net_income, 2),
        "monthly_net_income": round(net_income / 12, 2),
    }

result = rental_yield(
    property_price=350_000,
    monthly_rent=1_800,
    annual_expenses=5_000,  # maintenance, insurance
    vacancy_rate_pct=5,
)
for k, v in result.items():
    print(f"{k}: {v}")

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.