{"id":9316,"date":"2025-12-16T22:28:50","date_gmt":"2025-12-16T22:28:50","guid":{"rendered":"https:\/\/www.datapulse.de\/?p=9316"},"modified":"2026-09-05T21:07:11","modified_gmt":"2026-09-05T21:07:11","slug":"wage-stagnation-rent-burden","status":"publish","type":"post","link":"https:\/\/www.datapulse.de\/en\/wage-stagnation-rent-burden\/","title":{"rendered":"Wage Stagnation &#038; Rent Burden: Higher Pay, Shrinking Space"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"9316\" class=\"elementor elementor-9316 elementor-9309\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"elementor-element elementor-element-169df13 e-con-full e-flex e-con e-parent\" data-id=\"169df13\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ad290a7 elementor-widget__width-initial elementor-widget-tablet__width-initial elementor-widget elementor-widget-html\" data-id=\"ad290a7\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\n\/* Add Inter Font Import *\/\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@300;400;500;600;700;800;900&display=swap');\n\n\/* DataPulse Article Styles for Elementor *\/\n.dp-article-container {\n    max-width: 800px;\n    margin: 0 auto;\n    padding: 0 20px;\n    font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'system-ui', 'Segoe UI', sans-serif;\n}\n\n.dp-article-container p {\n    font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'system-ui', 'Segoe UI', sans-serif;\n    font-weight: 400;\n    color: #FFFFFF;\n    font-size: 18px;\n    line-height: 32px;\n    margin-bottom: 1.5rem;\n}\n\n.dp-article-container h2 {\n    font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;\n    font-weight: 700;\n    color: #FFFFFF;\n    font-size: 2.75rem;\n    line-height: 1.2;\n    margin-top: 4rem;\n    margin-bottom: 2rem;\n    letter-spacing: -0.02em;\n}\n\n.dp-article-container h3 {\n    font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;\n    font-weight: 600;\n    color: #FFFFFF;\n    font-size: 22px;\n    line-height: 1.3;\n    margin-top: 3rem;\n    margin-bottom: 1.5rem;\n    letter-spacing: -0.01em;\n}\n\n.dp-hero-section {\n    text-align: center;\n    margin-bottom: 3rem;\n    padding-top: 120px;\n}\n\n.dp-hero-title {\n    font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'system-ui', sans-serif;\n    font-size: 65px;\n    font-weight: 700;\n    line-height: 1.1;\n    margin: 0 0 28px 0;\n    padding: 0 0 10px 0;\n    color: #FFFFFF;\n    letter-spacing: -0.03em;\n}\n\n.dp-hero-subtitle {\n    font-size: clamp(1.75rem, 3.5vw, 2.5rem);\n    font-weight: 700;\n    margin-bottom: 50px;\n    color: #B8B8B8;\n    line-height: 1.2;\n    padding-bottom: 50px;\n}\n\n.dp-hero-intro {\n    font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'system-ui', 'Segoe UI', sans-serif;\n    font-size: 20px;\n    line-height: 34px;\n    color: #B8B8B8;\n    font-weight: 400;\n    max-width: 900px;\n    margin: 0 auto;\n}\n\n.highlight-2016 {\n    background: rgba(113, 120, 206, 0.15);\n    padding: 3px 8px;\n    border-radius: 4px;\n    color: #7178CE;\n    font-weight: 600;\n}\n\n.highlight-2024 {\n    background: rgba(5, 165, 174, 0.15);\n    padding: 3px 8px;\n    border-radius: 4px;\n    color: #05A5AE;\n    font-weight: 600;\n}\n\n.dp-section-divider {\n    width: 60px;\n    height: 1px;\n    background: linear-gradient(90deg, transparent, #7178CE, transparent);\n    margin: 50px auto;\n}\n\n.dp-key-insight {\n    background: rgba(113, 120, 206, 0.1);\n    border-left: 4px solid #7178CE;\n    padding: 1.75rem;\n    margin: 2.5rem 0;\n    border-radius: 8px;\n    font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;\n    font-size: 17px;\n    line-height: 30px;\n    color: #FFFFFF;\n}\n\n.dp-highlight-yellow {\n    background: linear-gradient(#FFDB45, #FFDB45) left bottom \/ 100% 1px no-repeat;\n    padding-bottom: 1px;\n}\n\n.dp-chart-container {\n    background: #121212;\n    border-radius: 12px;\n    padding: 2rem;\n    margin: 3rem 0;\n}\n\n.dp-chart-container iframe {\n    width: 100%;\n    border: none;\n    border-radius: 8px;\n}\n\n.dp-expert-quote {\n    display: flex;\n    align-items: center;\n    background: #1A1A1A;\n    padding: 1.75rem;\n    border-radius: 12px;\n    margin: 2.5rem 0;\n    gap: 1.75rem;\n}\n\n.dp-expert-image {\n    width: 100px;\n    height: 100px;\n    border-radius: 50%;\n    border: 2px solid #5D60C4;\n    object-fit: cover;\n    flex-shrink: 0;\n}\n\n.dp-expert-content {\n    flex: 1;\n}\n\n.dp-expert-text {\n    font-style: italic;\n    font-size: 17px;\n    line-height: 30px;\n    margin-bottom: 0.75rem;\n    color: #FFFFFF;\n    font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;\n}\n\n.dp-expert-name {\n    font-weight: 700;\n    margin-bottom: 0.25rem;\n    color: #FFFFFF;\n    font-size: 15px;\n}\n\n.dp-expert-title {\n    font-size: 13px;\n    color: #AAAAAA;\n}\n\n.dp-summary-box {\n    background: #121212;\n    border-left: 4px solid #7178CE;\n    border-radius: 8px;\n    padding: 1.75rem;\n    margin: 2.5rem 0;\n}\n\n.dp-summary-box h3 {\n    margin-bottom: 1.25rem;\n    font-size: 22px;\n    color: #FFFFFF;\n    font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;\n    font-weight: 600;\n}\n\n.dp-summary-box ul {\n    margin: 0;\n    padding-left: 1.2rem;\n}\n\n.dp-summary-box li {\n    margin-bottom: 0.75rem;\n    line-height: 1.8;\n    color: #FFFFFF;\n    font-size: 16px;\n    font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;\n}\n\n.dp-profession-boxes {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 1.5rem;\n    margin: 2rem 0;\n}\n\n@media (max-width: 768px) {\n    .dp-profession-boxes {\n        grid-template-columns: 1fr;\n    }\n}\n\n.dp-gains-box {\n    background: rgba(5, 165, 174, 0.1);\n    border-left: 4px solid #05A5AE;\n    padding: 1.5rem;\n    border-radius: 8px;\n}\n\n.dp-decline-box {\n    background: rgba(255, 79, 66, 0.1);\n    border-left: 4px solid #FF4F42;\n    padding: 1.5rem;\n    border-radius: 8px;\n}\n\n.dp-profession-boxes h4 {\n    margin-bottom: 0.75rem;\n    font-size: 1.1rem;\n    color: #FFFFFF;\n    font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;\n}\n\n.dp-profession-boxes ul {\n    list-style: none;\n    padding: 0;\n    margin: 0;\n}\n\n.dp-profession-boxes li {\n    margin-bottom: 0.5rem;\n    font-size: 15px;\n    color: #FFFFFF;\n    font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;\n}\n\n.dp-tab-nav {\n    display: flex;\n    justify-content: center;\n    border-bottom: 1px solid #333;\n    margin-bottom: 0;\n    padding-bottom: 1rem;\n    gap: 0;\n    flex-wrap: wrap;\n}\n\n.dp-tab-btn {\n    background: transparent;\n    border: none;\n    border-bottom: 2px solid transparent;\n    color: #999;\n    padding: 0.5rem 1rem;\n    margin: 0 0.25rem;\n    cursor: pointer;\n    font-size: 14px;\n    font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;\n    font-weight: 500;\n    transition: all 0.2s ease;\n    position: relative;\n}\n\n.dp-tab-btn:hover {\n    color: #ccc;\n}\n\n.dp-tab-btn.active {\n    color: #7178CE;\n    border-bottom-color: #7178CE;\n    background: transparent;\n}\n\n.dp-tab-content {\n    display: none;\n    padding-top: 1.5rem;\n}\n\n.dp-tab-content.active {\n    display: block;\n}\n\n.dp-city-info {\n    text-align: center;\n    margin-bottom: 1.5rem;\n    font-size: 14px;\n    color: #999;\n    font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;\n}\n\n.dp-prof-grid {\n    display: flex;\n    flex-direction: column;\n    gap: 20px;\n}\n\n.dp-prof-card {\n    border: 1px solid #333;\n    border-radius: 8px;\n    padding: 16px 20px;\n    background: rgba(255,255,255,0.02);\n}\n\n.dp-prof-card-name {\n    font-size: 16px;\n    font-weight: 600;\n    margin-bottom: 12px;\n    color: #ffffff;\n    font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;\n}\n\n.dp-years-comparison {\n    display: flex;\n    gap: 30px;\n    margin-bottom: 12px;\n}\n\n.dp-year-column {\n    flex: 1;\n}\n\n.dp-year-header {\n    font-size: 14px;\n    margin-bottom: 8px;\n    color: #999;\n    font-weight: 500;\n    font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;\n}\n\n.dp-dot-container {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 3px;\n    min-height: 40px;\n}\n\n.dp-space-dot {\n    width: 8px;\n    height: 8px;\n    background: #8B91E8;\n    border-radius: 2px;\n    opacity: 0.9;\n}\n\n.dp-change-summary {\n    margin-top: 10px;\n    font-size: 14px;\n    color: #B8B8B8;\n    padding-top: 10px;\n    border-top: 1px solid rgba(255,255,255,0.08);\n    font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;\n}\n.dp-change-percentage {\n    color: #B8B8B8;\n}\n\n.dp-change-value {\n    font-weight: 600;\n    margin-left: 8px;\n}\n\n.dp-change-negative {\n    color: #FF4F42;\n}\n\n.dp-change-positive {\n    color: #05A5AE;\n}\n\n\/* Legacy styles for compatibility *\/\n.dp-prof-name {\n    font-size: 16px;\n    font-weight: 600;\n    margin-bottom: 12px;\n    color: #ffffff;\n    font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;\n}\n\n.dp-year-label {\n    font-size: 13px;\n    margin-bottom: 8px;\n    color: #999;\n    font-weight: 500;\n    font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;\n}\n\n\n\n\n.dp-area-value {\n    font-weight: 600;\n}\n\n\n.dp-methodology {\n    background: #121212;\n    border-radius: 8px;\n    padding: 1.75rem;\n    margin: 3rem 0;\n}\n\n.dp-methodology h3 {\n    margin-bottom: 1rem;\n    font-size: 22px;\n    color: #FFFFFF;\n    font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;\n    font-weight: 600;\n}\n\n.dp-methodology p {\n    margin-bottom: 1rem;\n    font-size: 16px;\n    line-height: 28px;\n    color: #FFFFFF;\n    font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;\n}\n\n.dp-methodology p:last-child {\n    margin-bottom: 0;\n    font-style: italic;\n    opacity: 0.7;\n}\n\n.dp-image-container {\n    text-align: center;\n    margin: 3rem 0;\n}\n\n.dp-image-container img {\n    max-width: 100%;\n    height: auto;\n    border-radius: 8px;\n}\n\n.dp-burden-chart {\n    background: #1A1A1A;\n    border-radius: 12px;\n    padding: 2rem;\n    margin: 2.5rem 0;\n    border: 1px solid rgba(255, 255, 255, 0.05);\n}\n\n.dp-burden-bar {\n    display: flex;\n    align-items: center;\n    margin: 16px 0;\n    font-size: 16px;\n    font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;\n}\n\n.dp-burden-bar .city-name {\n    width: 200px;\n    font-weight: 400;\n    color: #FFFFFF;\n    font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;\n    font-size: 16px;\n}\n\n.dp-burden-bar .bar-container {\n    flex: 1;\n    background: rgba(255, 255, 255, 0.05);\n    height: 24px;\n    border-radius: 12px;\n    margin: 0 20px;\n    position: relative;\n    overflow: hidden;\n}\n\n.dp-burden-bar .bar-fill {\n    height: 100%;\n    border-radius: 12px;\n    transition: width 0.3s ease;\n}\n\n.dp-burden-bar .red-bar {\n    background: linear-gradient(90deg, #FF4F42 0%, #dc2626 100%);\n}\n\n.dp-burden-bar .orange-bar {\n    background: linear-gradient(90deg, #f59e0b 0%, #d97706 100%);\n}\n\n.dp-burden-bar .green-bar {\n    background: linear-gradient(90deg, #05A5AE 0%, #059669 100%);\n}\n\n.dp-burden-bar .percentage {\n    width: 60px;\n    text-align: right;\n    font-weight: 500;\n    color: #FFFFFF;\n    font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;\n    font-size: 16px;\n}\n\n.dp-chart-grid {\n    display: grid;\n    grid-template-columns: repeat(4, 1fr);\n    gap: 20px;\n    padding: 0;\n    margin: 2rem 0;\n}\n\n@media (max-width: 1200px) {\n    .dp-chart-grid {\n        grid-template-columns: repeat(2, 1fr);\n    }\n}\n\n@media (max-width: 768px) {\n    .dp-chart-grid {\n        grid-template-columns: 1fr;\n    }\n}\n\n.dp-wide-container {\n    max-width: 1064px;\n    margin-left: auto;\n    margin-right: auto;\n}\n\n.dp-maps-container {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 25px;\n    margin: 2rem 0;\n}\n\n@media (max-width: 768px) {\n    .dp-maps-container {\n        grid-template-columns: 1fr;\n    }\n}\n\n.dp-map-item {\n    background: #121212;\n    border-radius: 8px;\n    padding: 1.25rem;\n}\n\n.dp-city-table {\n    margin: 2rem 0;\n    background: #121212;\n    border-radius: 8px;\n    padding: 1.5rem;\n}\n\n.dp-profession-table {\n    width: 100%;\n    border-collapse: collapse;\n}\n\n.dp-profession-table th {\n    text-align: left;\n    padding: 10px;\n    font-weight: 600;\n    border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n}\n\n.dp-profession-table td {\n    padding: 10px;\n    border-bottom: 1px solid rgba(255, 255, 255, 0.05);\n}\n\n\n.dp-infographic-clickable {\n    cursor: zoom-in;\n    transition: transform 0.3s ease;\n}\n\n.dp-infographic-clickable:hover {\n    transform: scale(1.02);\n}\n\n.dp-fullscreen-modal {\n    display: none;\n    position: fixed;\n    z-index: 9999;\n    padding-top: 60px;\n    left: 0;\n    top: 0;\n    width: 100%;\n    height: 100%;\n    background-color: rgba(0,0,0,0.95);\n    cursor: zoom-out;\n}\n\n.dp-modal-content {\n    margin: auto;\n    display: block;\n    max-width: 90%;\n    max-height: 90%;\n}\n\n.dp-modal-close {\n    position: absolute;\n    top: 20px;\n    right: 35px;\n    color: #f1f1f1;\n    font-size: 40px;\n    font-weight: bold;\n    cursor: pointer;\n}\n\n.dp-modal-close:hover {\n    color: #7178CE;\n}\n<\/style>\n\n<div class=\"dp-article-container\">\n    \n    <div class=\"dp-hero-section\">\n        <h1 class=\"dp-hero-title\">Higher Pay, Shrinking Space<\/h1>\n        <h2 class=\"dp-hero-subtitle\">How Rising Rents Are Eroding Wage Gains<\/h2>\n        <p class=\"dp-hero-intro\">In <span class=\"highlight-2016\">2016<\/span>, software developers in Berlin earned a median net monthly income of about <span class=\"highlight-2016\">\u20ac2,802<\/span> and could afford to rent around <span class=\"highlight-2016\">78 m\u00b2<\/span>. By <span class=\"highlight-2024\">2024<\/span>, the salary for the same position had risen to about <span class=\"highlight-2024\">\u20ac3,956<\/span>\u2014yet their rental budget stretched to only <span class=\"highlight-2024\">64 m\u00b2<\/span>. Despite over \u20ac1,100 more in income, about 14 m\u00b2 of living space were lost. This is not an isolated case. In most cities and professions, rising wages are being outpaced by even faster-growing rents.<\/p>\n    <\/div>\n\n    <!-- Fullscreen Modal for Infographic -->\n    <div id=\"infographic-modal\" class=\"dp-fullscreen-modal\" onclick=\"closeFullscreen()\">\n        <span class=\"dp-modal-close\">&times;<\/span>\n        <img class=\"dp-modal-content\" id=\"modal-img\">\n    <\/div>\n\n    <div class=\"dp-image-container\">\n        <img decoding=\"async\" src=\"https:\/\/www.datapulse.de\/wp-content\/uploads\/2025\/11\/EN-Wages-up-Housing-higher-Rent-burden-Germany-2024.png\" \n             alt=\"Visualization of wages and housing in Germany\" \n             class=\"dp-infographic-clickable\"\n             onclick=\"openFullscreen(this)\"\n             title=\"Click to enlarge\">\n    <\/div>\n\n    <div class=\"dp-section-divider\"><\/div>\n\n    <p>German wages have risen by 27 percent over the past eight years, but a good 25 percent of those gains have been wiped out by inflation. What remains is real wage growth of just 1.3 percent. <strong class=\"dp-highlight-yellow\">This minimal progress evaporates almost completely because rents in many places are rising even faster than incomes<\/strong>. In Berlin, for example, rents increased by 91 percent, <strong class=\"dp-highlight-yellow\">in Leipzig by 74 percent<\/strong>, and in Munich by 53 percent.<\/p>\n\n    <p><strong>For comparison:<\/strong> In 2014, <strong class=\"dp-highlight-yellow\">only six districts and independent cities<\/strong> in Germany exceeded the critical rent burden threshold of 30 percent. <strong class=\"dp-highlight-yellow\">Ten years later, there are already 26.<\/strong> The pressure is no longer limited to major hubs; it has become a nationwide phenomenon.<\/p>\n\n    <div class=\"dp-summary-box\">\n        <h3>Key Insights<\/h3>\n        <ul>\n            <li><strong>Real Wages Stagnate Amid Nominal Growth:<\/strong> 8 years of nominal wage increases yielded only a 1.3% real improvement after inflation.<\/li>\n            <li><strong>Housing crisis accelerated:<\/strong> Districts above the 30% rent burden threshold quadrupled from 6 to 26.<\/li>\n            <li><strong>Caregivers lead wage gains, engineers lose ground:<\/strong> Geriatric care saw 56% nominal growth (+24% real), while engineering professions saw 21-24% nominal gains (-3-4% real).<\/li>\n            <li><strong>Housing reveals a geographic divide:<\/strong> Caregivers in Dresden gained 17 m\u00b2, while their counterparts in Berlin lost 6 m\u00b2. High earners can afford 84 m\u00b2 in Dresden, but only 46 m\u00b2 in Munich.<\/li>\n        <\/ul>\n    <\/div>\n\n    <h2>The Big Picture: How 27% Wage Growth Became 1.3%<\/h2>\n\n    <p>For years, the nominal wage growth of 27 percent was often presented as proof of a strong labor market. But this \"pay bump\" tells only part of the story. At the same time, prices rose due to pandemic-related bottlenecks, the energy crisis, and permanently rising living costs. <strong class=\"dp-highlight-yellow\">In the end, only about one percent of the wage increase remained in real terms<\/strong>. The following chart shows how much Germany's purchasing power has actually declined since 2016.<\/p>\n\n    <div class=\"dp-chart-container\">\n        <iframe title=\"Eight Years of Wage Growth, No Real Progress (2016\u20132024)\" aria-label=\"Interactive line chart\" id=\"datawrapper-chart-XxbO0\" src=\"https:\/\/datawrapper.dwcdn.net\/XxbO0\/1\/?dark=true\" scrolling=\"no\" frameborder=\"0\" style=\"width: 0; min-width: 100% !important; border: none;\" height=\"400\" data-external=\"1\"><\/iframe>\n    <\/div>\n\n    <p>Among economists, an annual increase of around 1% is considered a sign of a healthy, expanding labor market. Accordingly, real incomes should have risen by about 8% over these eight years.<\/p>\n\n    <p>Instead, it was only 1.3%\u2014a fraction of what would be expected in a stable growth phase. For large parts of the past two decades, real wages in Germany developed quite solidly. The main reason for the poor record? <strong class=\"dp-highlight-yellow\">The years 2020 to 2023. These three years wiped out almost all gains<\/strong>. By early 2024, real wages had fallen back to their 2016 level, nullifying nearly a decade of progress.<\/p>\n\n    <div class=\"dp-expert-quote\">\n        <img decoding=\"async\" class=\"dp-expert-image\" style=\"border-radius: 50%; border: 2px solid #5D60C4;\" src=\"https:\/\/www.datapulse.de\/wp-content\/uploads\/2025\/06\/Prof.-Dr.-Thomas-Druyen.jpg\" alt=\"Prof. Dr. Thomas Druyen\">\n        <div class=\"dp-expert-content\">\n            <p class=\"dp-expert-text\">\"The truly unsettling thing about the current development is not that people have less\u2014but that they are experiencing how their customary financial flexibility is disappearing bit by bit. Everyone immediately feels this form of creeping constriction.\"<\/p>\n            <div class=\"dp-expert-name\">Prof. Dr. Thomas Druyen<\/div>\n            <div class=\"dp-expert-title\">German Sociologist<\/div>\n        <\/div>\n    <\/div>\n\n    <p>Energy and food prices triggered the initial inflation shock; but while these costs have since partially stabilized, housing costs remain stubbornly high. Even though there have been short pauses or slight declines in some rural regions, the overall trend is upward.<\/p>\n\n    <p>As a result, housing takes up an increasingly larger share of household income, especially in cities where wages cannot keep up with rising costs. The housing market is thus becoming one of the most significant pressure points.<\/p>\n\n    <h2>When Rent Outpaces Salary<\/h2>\n\n    <p>One of the most reliable metrics for housing affordability is the rent-to-income ratio, which is the share of net salary spent on rent. <strong>A standard guideline is: anyone who spends more than 30% of their net income on housing has little financial cushion.<\/strong> When this threshold is exceeded, the scope for savings and unforeseen expenses shrinks\u2014even when nominal wages are rising.<\/p>\n\n    <div class=\"dp-key-insight\">\n        Nationwide, the average rent burden for single-person households has risen noticeably over the past decade. In 2014, single-person households spent an average of 20.6% of their net income on rent. By 2024, this figure had risen to 23.7%. This development is pushing many households noticeably closer to the 30% mark, and thus to the limit of their financial leeway.\n    <\/div>\n\n    <p>To make this shift more visible, we have analyzed income and rent data for around 400 districts and independent cities and calculated the rent-to-income ratio. This provides a detailed picture of the housing cost burden across Germany.<\/p>\n\n    <p>The maps below show how the rent burden has changed over the past decade: in 2014, the map is predominantly light, with most regions well below the 30 percent threshold. In 2024, however, darker shades dominate\u2014an indication of rising rent burdens and shrinking financial leeway.<\/p>\n\n    <p>If you hover over the maps, you can see the rent-to-income ratios for each district and independent city.<\/p>\n\n    <div class=\"dp-chart-container\" style=\"max-width: calc(100% + 200px); width: calc(100% + 200px); margin-left: -100px; margin-right: -100px; margin-top: 3rem; margin-bottom: 3rem; position: relative;\">\n        <h3 style=\"text-align: center; margin-bottom: 0.75rem; font-size: 22px; font-weight: 600;\">Rent Burden: 2014 vs. 2024<\/h3>\n        <p style=\"text-align: center; margin-bottom: 1.5rem; font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'system-ui', 'Segoe UI', sans-serif; font-weight: 400; font-size: 15px; line-height: 26px; color: #B8B8B8;\">Share of net income that single-person households spend on rent for a 50 m\u00b2 apartment.<\/p>\n        \n        <div class=\"dp-maps-container\">\n            <div class=\"dp-map-item\">\n                <iframe title=\"Rent Burden in Germany 2014\" aria-label=\"Map\" id=\"datawrapper-chart-Czrsn\" src=\"https:\/\/datawrapper.dwcdn.net\/Czrsn\/1\/?dark=true\" scrolling=\"no\" frameborder=\"0\" style=\"width: 100%; height: 500px; border: none;\" data-external=\"1\"><\/iframe>\n            <\/div>\n            <div class=\"dp-map-item\">\n                <iframe title=\"Rent Burden in Germany 2024\" aria-label=\"Map\" id=\"datawrapper-chart-zvKQZ\" src=\"https:\/\/datawrapper.dwcdn.net\/zvKQZ\/1\/?dark=true\" scrolling=\"no\" frameborder=\"0\" style=\"width: 100%; height: 500px; border: none;\" data-external=\"1\"><\/iframe>\n            <\/div>\n        <\/div>\n        \n        <p style=\"text-align: center; margin-top: 1.5rem; margin-bottom: 0; font-size: 14px; font-style: italic; opacity: 0.8; line-height: 1.6;\">The analysis covers all 400 German administrative units (districts and independent cities) and compares the rent burden of single individuals in 50 m\u00b2 apartments between 2014 and 2024. The rent values are from the empirica housing price index and are converted from cold to warm rent using a flat surcharge of 25%. Net income was calculated using a simplified progressive tax model, with deduction rates of about 30%, 35%, and 40% depending on income level. These values account for both income tax and the typical social security contributions for employees.<\/p>\n    <\/div>\n\n    <h3>The 30% Threshold: From 6 to 26 Districts<\/h3>\n\n    <p>A look at the 30 percent mark\u2014the point at which housing costs begin to undermine financial stability\u2014shows just how much the burden has intensified.<\/p>\n\n    <p>In 2014, only six districts crossed this critical threshold, all near Munich. Ten years later, this number has more than quadrupled: <strong class=\"dp-highlight-yellow\">in 2024, 26 regions are now among the particularly burdened<\/strong>. This increase shows how the housing crisis has spread far beyond Germany's traditional hotspots.<\/p>\n\n    <div style=\"background: #121212; border-radius: 8px; padding: 1.75rem; max-width: calc(100% + 100px); width: calc(100% + 100px); margin-left: -50px; margin-right: -50px; margin-top: 2.5rem; margin-bottom: 2.5rem; position: relative;\">\n        <h4 style=\"text-align: center; margin: 0 0 8px 0; font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'system-ui', 'Segoe UI', sans-serif; font-size: 16px; font-weight: 600; color: #FFFFFF;\">Districts Exceeding the 30% Rent Burden Threshold<\/h4>\n        \n        <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; margin-bottom: 1.5rem;\">\n            <div style=\"text-align: center;\">\n                <div style=\"font-size: 3rem; font-weight: 700; color: #05A5AE; margin-bottom: 0.25rem;\">6<\/div>\n                <div style=\"font-size: 1rem; font-weight: 600; margin-bottom: 0.5rem;\">2014<\/div>\n            <\/div>\n            <div style=\"text-align: center;\">\n                <div style=\"font-size: 3rem; font-weight: 700; color: #FF4F42; margin-bottom: 0.25rem;\">26<\/div>\n                <div style=\"font-size: 1rem; font-weight: 600; margin-bottom: 0.5rem;\">2024<\/div>\n            <\/div>\n        <\/div>\n        \n        <p style=\"text-align: center; margin: 0 0 1.5rem 0; font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'system-ui', 'Segoe UI', sans-serif; font-weight: 400; font-size: 15px; line-height: 26px; color: #B8B8B8; font-style: italic;\">Fourfold increase in districts above the 30% threshold<\/p>\n        \n        <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 1rem;\">\n            <div style=\"text-align: center;\">\n                <iframe src=\"https:\/\/datawrapper.dwcdn.net\/dCIrU\/?dark=true\" style=\"width: 100%; height: 350px; border: none; border-radius: 4px;\"><\/iframe>\n            <\/div>\n            <div style=\"text-align: center;\">\n                <iframe src=\"https:\/\/datawrapper.dwcdn.net\/JBTGb\/?dark=true\" style=\"width: 100%; height: 350px; border: none; border-radius: 4px;\"><\/iframe>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <p>What began as a problem in the Munich region has now reached Brandenburg around Berlin (Dahme-Spreewald, Havelland, Oberhavel), northern Germany (Ostholstein, Harburg), and major cities like Frankfurt and Berlin.<\/p>\n    \n    <ul style=\"margin: 1.5rem 0; padding-left: 1.5rem;\">\n        <li style=\"margin-bottom: 0.75rem;\"><strong>The original 6 (2014):<\/strong> Munich, F\u00fcrstenfeldbruck, Dachau, Ebersberg, Miesbach, and Starnberg, all in the Munich metropolitan region, where rents already accounted for 30-32% of income.<\/li>\n        <li><strong>The new geography (2024):<\/strong> Most of the 20 newly affected districts share two characteristics: they are located in the metropolitan fringes (commuter belts) of large cities or in attractive coastal regions, and their rent burden has risen from a low to mid-20% to over 30% in just one decade.<\/li>\n    <\/ul>\n\n    <p>In other words, not only have Germany's classic boom regions become more expensive, but the pressure has also spilled over into the very areas that many people once considered affordable alternatives.<\/p>\n\n    <div class=\"dp-expert-quote\">\n        <img decoding=\"async\" class=\"dp-expert-image\" style=\"border-radius: 50%; border: 2px solid #5D60C4;\" src=\"https:\/\/res.cloudinary.com\/di8zzcozz\/image\/upload\/v1763344937\/Johannes_von_Petersdorff-Campen_-_CEO_Klinke_Immobilien_jmbgl0.jpg\" alt=\"Johannes von Petersdorff-Campen\">\n        <div class=\"dp-expert-content\">\n            <p class=\"dp-expert-text\">\"The 30 percent threshold was long considered a guideline. Today, for many people, it has already become a tipping point. Anyone who has to spend such a large portion of their income on housing no longer lives freely, but under a constant pressure that makes any form of future planning difficult. In our focus area, we have long observed that this limit is often even exceeded towards 40 percent. This development is increasingly emerging as the new normal.\"<\/p>\n            <div class=\"dp-expert-name\">Johannes von Petersdorff-Campen<\/div>\n            <div class=\"dp-expert-title\">Managing Director of Klinke Immobilien GmbH<\/div>\n        <\/div>\n    <\/div>\n\n    <p>The fact that the rent burden has increased nationwide is shown by the 3.1 percentage point rise in the average rent-to-income ratio. However, not all parts of Germany are equally affected. The maps already point to a clear pattern: the pressure is strongest in large cities and their surrounding regions.<\/p>\n\n    <h3>Cities Under Pressure<\/h3>\n\n    <p>German cities are recording one of the sharpest increases in rent burden. Even significant salary increases in these metropolitan areas are often not enough to keep pace with rising rents.<\/p>\n\n    <p>For example, in Berlin, rents have risen by 91% since 2014, while nominal wages have increased by only 45%. In Munich, the situation is only <em>slightly<\/em> better: rents climbed by 53%, while wages over the same period rose by only 38%. A similar trend can be seen in Frankfurt and D\u00fcsseldorf: rent increases of 42% and 44%, respectively, are set against wage gains of 32% and 29%.<\/p>\n\n    <p>These cities illustrate where the real pressure in the housing market lies: in metropolitan areas with the strongest labor markets, where rent inflation is outpacing income growth.<\/p>\n\n    <p>Some cities show a more balanced relationship. In Hamburg, rents rose by 38%, while wages increased by 31%. Dresden shows a similar pattern: rents +41%, wages +38%.<\/p>\n\n    <p>And then there are cities like Leipzig: still comparatively affordable, but rapidly changing. <strong class=\"dp-highlight-yellow\">In Leipzig, rents have risen by 74% in the last ten years<\/strong>, while wages have increased by 49%. The gap is smaller than in Berlin or Munich, but the dynamic is remarkable.<\/p>\n\n    <div style=\"max-width: calc(100% + 264px); width: calc(100% + 264px); margin-left: -132px; margin-right: -132px; margin-top: 40px; margin-bottom: 40px; background: #141414; padding: 32px; border-radius: 12px; position: relative;\">\n        <p style=\"margin-bottom: 1.5rem; text-align: center; font-size: 17px; color: #B8B8B8; font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;\">Rent vs. Wage Development in Major German Cities (2014\u20132024): cumulative percentage change since 2014 and development of the rent burden as a share of net income.<\/p>\n        <div style=\"display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px;\">\n            <div>\n                <iframe title=\"Berlin\" src=\"https:\/\/datawrapper.dwcdn.net\/CSLPl\/1\/?dark=true\" style=\"height: 410px; width: 100%; border: none;\" scrolling=\"no\" frameborder=\"0\" data-external=\"1\"><\/iframe>\n            <\/div>\n            <div>\n                <iframe title=\"Hamburg\" src=\"https:\/\/datawrapper.dwcdn.net\/wI9vr\/1\/?dark=true\" style=\"height: 410px; width: 100%; border: none;\" scrolling=\"no\" frameborder=\"0\" data-external=\"1\"><\/iframe>\n            <\/div>\n            <div>\n                <iframe title=\"Frankfurt am Main\" src=\"https:\/\/datawrapper.dwcdn.net\/4p6XY\/1\/?dark=true\" style=\"height: 419px; width: 100%; border: none;\" scrolling=\"no\" frameborder=\"0\" data-external=\"1\"><\/iframe>\n            <\/div>\n            <div>\n                <iframe title=\"D\u00fcsseldorf\" src=\"https:\/\/datawrapper.dwcdn.net\/7P3US\/1\/?dark=true\" style=\"height: 411px; width: 100%; border: none;\" scrolling=\"no\" frameborder=\"0\" data-external=\"1\"><\/iframe>\n            <\/div>\n            <div>\n                <iframe title=\"K\u00f6ln\" src=\"https:\/\/datawrapper.dwcdn.net\/KQm2m\/1\/?dark=true\" style=\"height: 410px; width: 100%; border: none;\" scrolling=\"no\" frameborder=\"0\" data-external=\"1\"><\/iframe>\n            <\/div>\n            <div>\n                <iframe title=\"Dresden\" src=\"https:\/\/datawrapper.dwcdn.net\/Gqc00\/1\/?dark=true\" style=\"height: 421px; width: 100%; border: none;\" scrolling=\"no\" frameborder=\"0\" data-external=\"1\"><\/iframe>\n            <\/div>\n            <div>\n                <iframe title=\"Leipzig\" src=\"https:\/\/datawrapper.dwcdn.net\/oNX6I\/1\/?dark=true\" style=\"height: 410px; width: 100%; border: none;\" scrolling=\"no\" frameborder=\"0\" data-external=\"1\"><\/iframe>\n            <\/div>\n            <div>\n                <iframe title=\"M\u00fcnchen\" src=\"https:\/\/datawrapper.dwcdn.net\/cEiDj\/1\/?dark=true\" style=\"height: 416px; width: 100%; border: none;\" scrolling=\"no\" frameborder=\"0\" data-external=\"1\"><\/iframe>\n            <\/div>\n        <\/div>\n    <\/div>\n    \n    <h3 style=\"margin-top: 3rem;\">Highest Rent Burdens 2024<\/h3>\n\n    <p>It is striking that not only have the inner cities become more expensive, but also the surrounding suburbs. Many people have moved to the outskirts in search of cheaper rents and more space, but the increased demand has also driven up prices there. As a result, commuters in the Munich region now have some of the highest rent-to-income ratios in Germany.<\/p>\n\n    <p><strong>At the top of the list of districts with the highest rent burden in 2024 is F\u00fcrstenfeldbruck<\/strong>, where tenants spend almost 40% of their net income on rent. The city of Munich follows with 39%, and the surrounding districts of Dachau (38%), Ebersberg (38%), and Miesbach (37%) are only slightly behind and well above the 30 percent mark.<\/p>\n\n    <div class=\"dp-burden-chart\">\n        <p style=\"margin-bottom: 1.5rem; font-size: 16px; color: #B8B8B8; font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;\">Districts with the highest rent burden ratio<\/p>\n        \n        <div class=\"dp-burden-bar\">\n            <span class=\"city-name\">1. F\u00fcrstenfeldbruck<\/span>\n            <div class=\"bar-container\">\n                <div class=\"bar-fill red-bar\" style=\"width: 100%\"><\/div>\n            <\/div>\n            <span class=\"percentage\">39.7%<\/span>\n        <\/div>\n        <div class=\"dp-burden-bar\">\n            <span class=\"city-name\">2. M\u00fcnchen, Landesh.<\/span>\n            <div class=\"bar-container\">\n                <div class=\"bar-fill red-bar\" style=\"width: 98%\"><\/div>\n            <\/div>\n            <span class=\"percentage\">39.1%<\/span>\n        <\/div>\n        <div class=\"dp-burden-bar\">\n            <span class=\"city-name\">3. Dachau<\/span>\n            <div class=\"bar-container\">\n                <div class=\"bar-fill red-bar\" style=\"width: 97%\"><\/div>\n            <\/div>\n            <span class=\"percentage\">38.5%<\/span>\n        <\/div>\n        <div class=\"dp-burden-bar\">\n            <span class=\"city-name\">4. Dahme-Spreewald<\/span>\n            <div class=\"bar-container\">\n                <div class=\"bar-fill red-bar\" style=\"width: 96%\"><\/div>\n            <\/div>\n            <span class=\"percentage\">38.1%<\/span>\n        <\/div>\n        <div class=\"dp-burden-bar\">\n            <span class=\"city-name\">5. Ebersberg<\/span>\n            <div class=\"bar-container\">\n                <div class=\"bar-fill red-bar\" style=\"width: 95%\"><\/div>\n            <\/div>\n            <span class=\"percentage\">37.9%<\/span>\n        <\/div>\n        <div class=\"dp-burden-bar\">\n            <span class=\"city-name\">6. Miesbach<\/span>\n            <div class=\"bar-container\">\n                <div class=\"bar-fill red-bar\" style=\"width: 94%\"><\/div>\n            <\/div>\n            <span class=\"percentage\">37.4%<\/span>\n        <\/div>\n        <div class=\"dp-burden-bar\">\n            <span class=\"city-name\">7. M\u00fcnchen<\/span>\n            <div class=\"bar-container\">\n                <div class=\"bar-fill red-bar\" style=\"width: 91%\"><\/div>\n            <\/div>\n            <span class=\"percentage\">36.1%<\/span>\n        <\/div>\n        <div class=\"dp-burden-bar\">\n            <span class=\"city-name\">8. Garmisch-Partenk.<\/span>\n            <div class=\"bar-container\">\n                <div class=\"bar-fill red-bar\" style=\"width: 90%\"><\/div>\n            <\/div>\n            <span class=\"percentage\">35.7%<\/span>\n        <\/div>\n        <div class=\"dp-burden-bar\">\n            <span class=\"city-name\">9. Bad T\u00f6lz-Wolfratsh.<\/span>\n            <div class=\"bar-container\">\n                <div class=\"bar-fill red-bar\" style=\"width: 88%\"><\/div>\n            <\/div>\n            <span class=\"percentage\">34.9%<\/span>\n        <\/div>\n        <div class=\"dp-burden-bar\">\n            <span class=\"city-name\">10. Havelland<\/span>\n            <div class=\"bar-container\">\n                <div class=\"bar-fill red-bar\" style=\"width: 86%\"><\/div>\n            <\/div>\n            <span class=\"percentage\">34.2%<\/span>\n        <\/div>\n    <\/div>\n\n    <p>While these metropolitan effects raise housing costs, other districts, especially in eastern Germany and industrial centers, remain comparatively affordable.<\/p>\n\n    <p>In 2024, the lowest rent burdens are found in regions like Salzgitter, where a single-person household spends only 14.7% of their net income on a 50 m\u00b2 apartment. Other areas in the lower group include Chemnitz (15.4%), Holzminden (16.0%), and Wolfsburg (16.3%), all well below the 20% threshold.<\/p>\n\n    <p>Many of these more affordable regions are former industrial centers like Gelsenkirchen, Hagen, Salzgitter, or Wolfsburg, or rural and semi-rural eastern German districts such as Chemnitz, Zwickau, Vogtlandkreis, and Salzlandkreis. These are not classic commuter belts of large cities or places with strong population growth. These regions tend to have slow or negative population growth, limited rental pressure, and only a moderate increase in housing demand.<\/p>\n\n    <p>Rents here have remained relatively stable, and even with lower average incomes, households in these districts can maintain a comfortably low rent-to-income ratio\u2014a rare form of financial freedom in today's market.<\/p>\n\n    <h3>Lowest Rent Burdens 2024<\/h3>\n\n    <div class=\"dp-burden-chart\">\n        <p style=\"margin-bottom: 1.5rem; font-size: 16px; color: #B8B8B8; font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;\">Districts with the lowest rent burden ratio<\/p>\n        \n        <div class=\"dp-burden-bar\">\n            <span class=\"city-name\">400. Salzgitter<\/span>\n            <div class=\"bar-container\">\n                <div class=\"bar-fill green-bar\" style=\"width: 85%\"><\/div>\n            <\/div>\n            <span class=\"percentage\">14.7%<\/span>\n        <\/div>\n        <div class=\"dp-burden-bar\">\n            <span class=\"city-name\">399. Chemnitz<\/span>\n            <div class=\"bar-container\">\n                <div class=\"bar-fill green-bar\" style=\"width: 89%\"><\/div>\n            <\/div>\n            <span class=\"percentage\">15.4%<\/span>\n        <\/div>\n        <div class=\"dp-burden-bar\">\n            <span class=\"city-name\">398. Holzminden<\/span>\n            <div class=\"bar-container\">\n                <div class=\"bar-fill green-bar\" style=\"width: 92%\"><\/div>\n            <\/div>\n            <span class=\"percentage\">16.0%<\/span>\n        <\/div>\n        <div class=\"dp-burden-bar\">\n            <span class=\"city-name\">397. Wolfsburg<\/span>\n            <div class=\"bar-container\">\n                <div class=\"bar-fill green-bar\" style=\"width: 94%\"><\/div>\n            <\/div>\n            <span class=\"percentage\">16.3%<\/span>\n        <\/div>\n        <div class=\"dp-burden-bar\">\n            <span class=\"city-name\">396. Zwickau<\/span>\n            <div class=\"bar-container\">\n                <div class=\"bar-fill green-bar\" style=\"width: 97%\"><\/div>\n            <\/div>\n            <span class=\"percentage\">16.7%<\/span>\n        <\/div>\n        <div class=\"dp-burden-bar\">\n            <span class=\"city-name\">395. Hagen<\/span>\n            <div class=\"bar-container\">\n                <div class=\"bar-fill green-bar\" style=\"width: 97%\"><\/div>\n            <\/div>\n            <span class=\"percentage\">16.8%<\/span>\n        <\/div>\n        <div class=\"dp-burden-bar\">\n            <span class=\"city-name\">394. Pirmasens<\/span>\n            <div class=\"bar-container\">\n                <div class=\"bar-fill green-bar\" style=\"width: 97%\"><\/div>\n            <\/div>\n            <span class=\"percentage\">16.8%<\/span>\n        <\/div>\n        <div class=\"dp-burden-bar\">\n            <span class=\"city-name\">393. Vogtlandkreis<\/span>\n            <div class=\"bar-container\">\n                <div class=\"bar-fill green-bar\" style=\"width: 98%\"><\/div>\n            <\/div>\n            <span class=\"percentage\">17.0%<\/span>\n        <\/div>\n        <div class=\"dp-burden-bar\">\n            <span class=\"city-name\">392. Gelsenkirchen<\/span>\n            <div class=\"bar-container\">\n                <div class=\"bar-fill green-bar\" style=\"width: 99%\"><\/div>\n            <\/div>\n            <span class=\"percentage\">17.2%<\/span>\n        <\/div>\n        <div class=\"dp-burden-bar\">\n            <span class=\"city-name\">391. Salzlandkreis<\/span>\n            <div class=\"bar-container\">\n                <div class=\"bar-fill green-bar\" style=\"width: 100%\"><\/div>\n            <\/div>\n            <span class=\"percentage\">17.3%<\/span>\n        <\/div>\n    <\/div>\n\n    <p>We have compiled all the data in this interactive table. Here, you can view the rent burden for each district and independent city, along with its development over the last 10 years.<\/p>\n\n    <div class=\"dp-chart-container\" style=\"width: calc(100% + 264px); margin-left: -132px; margin-right: -132px;\">\n        <iframe title=\"Rent burden by district\" aria-label=\"Table\" id=\"datawrapper-chart-vuOmz\" src=\"https:\/\/datawrapper.dwcdn.net\/vuOmz\/1\/?dark=true\" scrolling=\"no\" frameborder=\"0\" style=\"width: 100%; border: none; height: 600px;\" data-external=\"1\"><\/iframe>\n    <\/div>\n\n    <p>How strongly the rent burden is felt also depends, of course, on what people earn. In the next section, we show which professional groups can still afford adequate housing despite rising costs, and which have actually lost space despite wage increases.<\/p>\n\n    <h2>Which Professions Could Keep Up with Rents\u2014And Which Could Not<\/h2>\n\n    <p>Rising rents affect everyone, but not everyone faces the housing market with the same level of financial stability. A detailed analysis of wage development by profession reveals a surprising pattern and challenges old certainties about who is moving up and who is falling behind.<\/p>\n\n    <p>Since 2016, traditionally low-paid professions such as geriatric care, cleaning, and hospitality have seen the strongest nominal wage growth, driven by higher minimum wages, stronger collective bargaining agreements, and political attention to essential work during the pandemic.<\/p>\n\n    <p>Adjusted for inflation, many of these groups saw real wage gains of 10\u201323%, a remarkable gap compared to the nationwide average of just 1.3% real wage growth! This means some low-paid professions are now noticeably better off in real terms than in 2016.<\/p>\n\n    <p>In contrast, many highly skilled technical professions, including IT, mechanical engineering, and electrical engineering, saw only moderate gains despite booming demand for skilled workers.<\/p>\n\n    <h3>Real Purchasing Power Change by Profession<\/h3>\n    \n    <p>The following chart shows both the nominal wage gains and the inflation-adjusted reality for a selection of professions with the strongest upward or downward trends since 2016.<\/p>\n\n    <div class=\"dp-chart-container\" style=\"width: calc(100% + 264px); margin-left: -132px; margin-right: -132px;\">\n        <iframe title=\"Wage Development by Profession in Germany\" aria-label=\"Interactive line chart\" id=\"datawrapper-chart-bKuTh\" src=\"https:\/\/datawrapper.dwcdn.net\/bKuTh\/1\/?dark=true\" scrolling=\"no\" frameborder=\"0\" style=\"width: 100%; border: none; height: 400px;\" data-external=\"1\"><\/iframe>\n        \n        <!-- Real Wage Growth Bar Chart -->\n        <div style=\"margin-top: 30px;\">\n            <h3 style=\"text-align: center; margin-bottom: 20px; font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'system-ui', 'Segoe UI', sans-serif; font-weight: 600; font-size: 21px; line-height: 27px; color: #FFFFFF;\">Real Purchasing Power Change by Profession, 2016\u20132024<\/h3>\n            <p style=\"text-align: center; margin-bottom: 20px; font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'system-ui', 'Segoe UI', sans-serif; font-weight: 400; font-size: 15px; line-height: 26px; color: #B8B8B8;\">Each bar shows how much more (or less) purchasing power a profession has today compared to 2016. A geriatric nurse earning \u20ac3,792 today can afford 24.0% more goods and services than a nurse earning \u20ac2,436 in 2016, despite all the inflation.<\/p>\n            \n            <!-- Improved bar chart with percentages inside bars -->\n            <div style=\"font-family: 'Inter', sans-serif; background: #141414; padding: 25px; border-radius: 8px;\">\n                <style>\n                    .prof-chart-container {\n                        position: relative;\n                        padding: 0;\n                    }\n                    .prof-chart-grid {\n                        position: relative;\n                        margin-left: 150px;\n                        margin-right: 20px;\n                        height: 320px;\n                    }\n                    .prof-x-axis {\n                        position: absolute;\n                        bottom: -25px;\n                        left: 0;\n                        right: 0;\n                        display: flex;\n                        justify-content: space-between;\n                        color: #999;\n                        font-size: 11px;\n                    }\n                    .prof-x-tick {\n                        position: absolute;\n                        color: #999;\n                        font-size: 11px;\n                    }\n                    .prof-gridline {\n                        position: absolute;\n                        top: 0;\n                        bottom: 20px;\n                        width: 1px;\n                        background: #333;\n                    }\n                    .prof-zero-line {\n                        position: absolute;\n                        top: 0;\n                        bottom: 20px;\n                        left: 20%;\n                        width: 1px;\n                        background: #666;\n                    }\n                    .prof-bar-row {\n                        display: flex;\n                        align-items: center;\n                        height: 32px;\n                        margin-bottom: 3px;\n                        position: relative;\n                    }\n                    .prof-label {\n                        position: absolute;\n                        left: -150px;\n                        width: 140px;\n                        text-align: right;\n                        color: #fff;\n                        font-size: 14px;\n                        font-weight: 500;\n                        padding-right: 10px;\n                    }\n                    .prof-bar-container {\n                        position: absolute;\n                        left: 0;\n                        right: 0;\n                        height: 26px;\n                    }\n                    .prof-bar {\n                        position: absolute;\n                        height: 26px;\n                        border-radius: 2px;\n                        display: flex;\n                        align-items: center;\n                        justify-content: flex-end;\n                        padding: 0 8px;\n                    }\n                    .prof-bar-positive {\n                        background: #49A3AC;\n                        left: 20%;\n                    }\n                    .prof-bar-negative {\n                        background: #EC5D4C;\n                        right: 80%;\n                    }\n                    .prof-value {\n                        color: white;\n                        font-size: 13px;\n                        font-weight: 600;\n                    }\n                <\/style>\n                \n                <div class=\"prof-chart-container\">\n                    <div class=\"prof-chart-grid\">\n                        <!-- Gridlines (matching x-axis scale) -->\n                        <div class=\"prof-gridline\" style=\"left: 0;\"><\/div>\n                        <div class=\"prof-gridline\" style=\"left: 20%;\"><\/div>\n                        <div class=\"prof-gridline\" style=\"left: 40%;\"><\/div>\n                        <div class=\"prof-gridline\" style=\"left: 60%;\"><\/div>\n                        <div class=\"prof-gridline\" style=\"left: 80%;\"><\/div>\n                        <div class=\"prof-gridline\" style=\"left: 100%;\"><\/div>\n                        <div class=\"prof-zero-line\"><\/div>\n                        \n                        <!-- X-axis labels -->\n                        <div class=\"prof-x-tick\" style=\"left: 0; bottom: -25px;\">\u221220%<\/div>\n                        <div class=\"prof-x-tick\" style=\"left: 20%; bottom: -25px;\">0%<\/div>\n                        <div class=\"prof-x-tick\" style=\"left: 40%; bottom: -25px;\">+5%<\/div>\n                        <div class=\"prof-x-tick\" style=\"left: 60%; bottom: -25px;\">+10%<\/div>\n                        <div class=\"prof-x-tick\" style=\"left: 80%; bottom: -25px;\">+15%<\/div>\n                        <div class=\"prof-x-tick\" style=\"left: 100%; bottom: -25px;\">+25%<\/div>\n                        \n                        <!-- Bars (scale adjusted: 0% at 20%, 25% at 100%) -->\n                        <div class=\"prof-bar-row\">\n                            <span class=\"prof-label\">Geriatric Care<\/span>\n                            <div class=\"prof-bar-container\">\n                                <div class=\"prof-bar prof-bar-positive\" style=\"width: 58%; left: 20%;\">\n                                    <span class=\"prof-value\">+24.0%<\/span>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                        <div class=\"prof-bar-row\">\n                            <span class=\"prof-label\">Hospitality<\/span>\n                            <div class=\"prof-bar-container\">\n                                <div class=\"prof-bar prof-bar-positive\" style=\"width: 36%; left: 20%;\">\n                                    <span class=\"prof-value\">+14.3%<\/span>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                        <div class=\"prof-bar-row\">\n                            <span class=\"prof-label\">Cleaning<\/span>\n                            <div class=\"prof-bar-container\">\n                                <div class=\"prof-bar prof-bar-positive\" style=\"width: 30%; left: 20%;\">\n                                    <span class=\"prof-value\">+11.6%<\/span>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                        <div class=\"prof-bar-row\">\n                            <span class=\"prof-label\">Transport & Logistics (Vehicle Driving)<\/span>\n                            <div class=\"prof-bar-container\">\n                                <div class=\"prof-bar prof-bar-positive\" style=\"width: 23%; left: 20%;\">\n                                    <span class=\"prof-value\">+9.1%<\/span>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                        <div class=\"prof-bar-row\">\n                            <span class=\"prof-label\">IT\/Computer Science<\/span>\n                            <div class=\"prof-bar-container\">\n                                <div class=\"prof-bar prof-bar-positive\" style=\"width: 7.5%; left: 20%;\">\n                                    <span class=\"prof-value\">+3.0%<\/span>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                        <div class=\"prof-bar-row\">\n                            <span class=\"prof-label\">Electrical Eng.<\/span>\n                            <div class=\"prof-bar-container\">\n                                <div class=\"prof-bar prof-bar-negative\" style=\"width: 8%; right: 80%;\">\n                                    <span class=\"prof-value\">\u22123.3%<\/span>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                        <div class=\"prof-bar-row\">\n                            <span class=\"prof-label\">R&D<\/span>\n                            <div class=\"prof-bar-container\">\n                                <div class=\"prof-bar prof-bar-negative\" style=\"width: 9%; right: 80%;\">\n                                    <span class=\"prof-value\">\u22123.5%<\/span>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                        <div class=\"prof-bar-row\">\n                            <span class=\"prof-label\">Mechanical Eng.<\/span>\n                            <div class=\"prof-bar-container\">\n                                <div class=\"prof-bar prof-bar-negative\" style=\"width: 9%; right: 80%;\">\n                                    <span class=\"prof-value\">\u22123.7%<\/span>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                        <div class=\"prof-bar-row\">\n                            <span class=\"prof-label\">Hotel Industry<\/span>\n                            <div class=\"prof-bar-container\">\n                                <div class=\"prof-bar prof-bar-negative\" style=\"width: 10%; right: 80%;\">\n                                    <span class=\"prof-value\">\u22124.1%<\/span>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n                <p style=\"margin-top: 35px; color: #999; font-size: 11px; text-align: center;\">Source: Federal Employment Agency, Federal Statistical Office. Inflation-adjusted with CPI (2016=100).<\/p>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <p>Since 2016, the median monthly salary in geriatric care has risen by 56% from \u20ac2,436 to \u20ac3,792. While inflation has consumed a large part of this, caregivers can still afford 24% more goods and services today than they could eight years ago.<\/p>\n\n    <p>This is crucial for housing: in cities with stable or only moderately increased rents (Wolfsburg, Salzgitter, Chemnitz, parts of eastern Germany), these wage increases help. However, in Germany's major cities, it remains difficult for caregivers to live where their work is most urgently needed, despite significant salary jumps. For example: <strong class=\"dp-highlight-yellow\">in Berlin, they lost 6 m\u00b2 of living space despite a pay raise, while in Munich, they only gained 3 m\u00b2 despite a 40% increase<\/strong>.<\/p>\n\n    <p>In contrast, several highly qualified, traditionally well-paid fields, such as mechanical and electrical engineering, as well as research & development, saw only moderate nominal wage growth. After accounting for inflation, this results in real income losses of 3\u20134%. Even IT and computer science only managed a 3% increase in purchasing power, despite a solid 29% nominal gain.<\/p>\n\n    <p>Electrical engineers now earn around \u20ac4,422, up from \u20ac3,642 in 2016\u2014a nominal increase of 21%, which, when adjusted for inflation, becomes a <em>purchasing power loss<\/em> of 3.3%.<\/p>\n\n    <div class=\"dp-profession-boxes\">\n        <div class=\"dp-gains-box\">\n            <h4 style=\"margin: 0 0 8px 0; font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'system-ui', 'Segoe UI', sans-serif; font-size: 16px; font-weight: 600; color: #FFFFFF;\">Purchasing Power Gains<\/h4>\n            <ul>\n                <li>Geriatric Care: +24.0%<\/li>\n                <li>Food & Beverage Services (Hospitality): +14.3%<\/li>\n                <li>Cleaning: +11.6%<\/li>\n                <li>Vehicle Operation: +9.1%<\/li>\n                <li>IT\/Computer Science: +3.0%<\/li>\n            <\/ul>\n        <\/div>\n        <div class=\"dp-decline-box\">\n            <h4 style=\"margin: 0 0 8px 0; font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'system-ui', 'Segoe UI', sans-serif; font-size: 16px; font-weight: 600; color: #FFFFFF;\">Purchasing Power Losses<\/h4>\n            <ul>\n                <li>Electrical Engineering: \u22123.3%<\/li>\n                <li>R&D: \u22123.5%<\/li>\n                <li>Mechanical Engineering: \u22123.7%<\/li>\n                <li>Hotel Industry: \u22124.1%<\/li>\n            <\/ul>\n        <\/div>\n    <\/div>\n\n    <p>Nationwide, the ability to keep up with rent depends, to some extent, on wage growth and geography. In affordable cities, rising wages in essential professions have actually improved financial stability. In expensive metropolitan regions, even strong wage growth cannot keep up with housing inflation.<\/p>\n\n    <p>The result is a new economic reality: for many, location now matters more than the salary increase itself. To understand what this means in everyday life, we have translated these wage developments into square meters to show how much living space different professions can afford today compared to 2016.<\/p>\n\n    <h2>The Shrinking Apartment. How Much Space Can You Afford?<\/h2>\n\n    <p><strong>In 2016, a geriatric caregiver in Berlin could afford a 44-square-meter apartment. Today, the same professional can only afford 38 square meters\u2014a loss of 6 square meters in less than a decade.<\/strong><\/p>\n\n    <p>In comparison, a software developer in Berlin lost as much as 14 square meters (78 m\u00b2 \u2192 64 m\u00b2).<\/p>\n\n    <p>But while Berlin professionals lost space, geriatric caregivers in Dresden actually gained 17 square meters. The same salary now buys completely different standards of living depending on the place of work.<\/p>\n\n    <!-- Tab Section Container -->\n    <div id=\"wohnraumvergleich\" style=\"background: #1a1a1a; border-radius: 12px; padding: 2rem; border: 1px solid #333; margin: 3rem auto; max-width: 800px;\">\n        <div style=\"text-align: center; margin-bottom: 1.5rem;\">\n            <h4 style=\"margin: 0; color: #ffffff; font-size: 18px; font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif; font-weight: 600;\">Affordable Living Space with 30% of Income<\/h4>\n            <p style=\"margin: 0.5rem 0 0 0; font-size: 14px; color: #999; font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;\">Median Salaries \u2022 Average Annual Rent 2016 vs. 2024<\/p>\n        <\/div>\n        \n        <div class=\"dp-tab-nav\">\n            <button class=\"dp-tab-btn active\" onclick=\"showCity('berlin')\" data-city=\"berlin\">Berlin<\/button>\n            <button class=\"dp-tab-btn\" onclick=\"showCity('hamburg')\" data-city=\"hamburg\">Hamburg<\/button>\n            <button class=\"dp-tab-btn\" onclick=\"showCity('frankfurt')\" data-city=\"frankfurt\">Frankfurt<\/button>\n            <button class=\"dp-tab-btn\" onclick=\"showCity('munich')\" data-city=\"munich\">Munich<\/button>\n            <button class=\"dp-tab-btn\" onclick=\"showCity('cologne')\" data-city=\"cologne\">Cologne<\/button>\n            <button class=\"dp-tab-btn\" onclick=\"showCity('dusseldorf')\" data-city=\"dusseldorf\">D\u00fcsseldorf<\/button>\n            <button class=\"dp-tab-btn\" onclick=\"showCity('dresden')\" data-city=\"dresden\">Dresden<\/button>\n            <button class=\"dp-tab-btn\" onclick=\"showCity('leipzig')\" data-city=\"leipzig\">Leipzig<\/button>\n        <\/div>\n\n        <!-- Tab content containers -->\n        <div id=\"berlin\" class=\"dp-tab-content active\">\n            <div class=\"dp-city-info\"><\/div>\n            <div class=\"dp-prof-grid\"><\/div>\n        <\/div>\n        <div id=\"hamburg\" class=\"dp-tab-content\">\n            <div class=\"dp-city-info\"><\/div>\n            <div class=\"dp-prof-grid\"><\/div>\n        <\/div>\n        <div id=\"frankfurt\" class=\"dp-tab-content\">\n            <div class=\"dp-city-info\"><\/div>\n            <div class=\"dp-prof-grid\"><\/div>\n        <\/div>\n        <div id=\"munich\" class=\"dp-tab-content\">\n            <div class=\"dp-city-info\"><\/div>\n            <div class=\"dp-prof-grid\"><\/div>\n        <\/div>\n        <div id=\"cologne\" class=\"dp-tab-content\">\n            <div class=\"dp-city-info\"><\/div>\n            <div class=\"dp-prof-grid\"><\/div>\n        <\/div>\n        <div id=\"dusseldorf\" class=\"dp-tab-content\">\n            <div class=\"dp-city-info\"><\/div>\n            <div class=\"dp-prof-grid\"><\/div>\n        <\/div>\n        <div id=\"dresden\" class=\"dp-tab-content\">\n            <div class=\"dp-city-info\"><\/div>\n            <div class=\"dp-prof-grid\"><\/div>\n        <\/div>\n        <div id=\"leipzig\" class=\"dp-tab-content\">\n            <div class=\"dp-city-info\"><\/div>\n            <div class=\"dp-prof-grid\"><\/div>\n        <\/div>\n    \n        <div id=\"hamburg\" class=\"dp-tab-content\">\n            <div class=\"dp-city-info\"><\/div>\n            <div class=\"dp-prof-grid\"><\/div>\n        <\/div>\n        <div id=\"frankfurt\" class=\"dp-tab-content\">\n            <div class=\"dp-city-info\"><\/div>\n            <div class=\"dp-prof-grid\"><\/div>\n        <\/div>\n        <div id=\"munich\" class=\"dp-tab-content\">\n            <div class=\"dp-city-info\"><\/div>\n            <div class=\"dp-prof-grid\"><\/div>\n        <\/div>\n        <div id=\"cologne\" class=\"dp-tab-content\">\n            <div class=\"dp-city-info\"><\/div>\n            <div class=\"dp-prof-grid\"><\/div>\n        <\/div>\n        <div id=\"dusseldorf\" class=\"dp-tab-content\">\n            <div class=\"dp-city-info\"><\/div>\n            <div class=\"dp-prof-grid\"><\/div>\n        <\/div>\n        <div id=\"dresden\" class=\"dp-tab-content\">\n            <div class=\"dp-city-info\"><\/div>\n            <div class=\"dp-prof-grid\"><\/div>\n        <\/div>\n        <div id=\"leipzig\" class=\"dp-tab-content\">\n            <div class=\"dp-city-info\"><\/div>\n            <div class=\"dp-prof-grid\"><\/div>\n        <\/div>\n    <\/div>\n    \n    <div style=\"border-top: 1px solid #333; margin-top: 1.5rem; padding-top: 1.5rem;\">\n        <div style=\"margin-bottom: 1rem;\">\n            <p style=\"margin: 0; font-size: 14px; line-height: 24px; color: rgb(255,255,255); font-family: 'Inter', -apple-system, 'system-ui', 'Segoe UI', sans-serif; font-weight: 400; font-style: normal;\">\n                <strong>Why these four professions?<\/strong> We chose contrasting examples across the spectrum of real purchasing power (2016\u20132024): Geriatric Care (+24%) and Hospitality (+14.3%) represent the biggest winners, while Software Development (+3%) and Electrical Engineering (\u22123.3%) show how even highly skilled professions failed to keep pace with inflation.\n            <\/p>\n        <\/div>\n        <p style=\"margin: 0 0 1rem 0; font-size: 14px; line-height: 23px; color: rgb(128, 128, 128); font-style: italic; font-weight: 400; font-family: 'Inter', -apple-system, 'system-ui', 'Segoe UI', sans-serif;\">\n            Apartment size calculated as 30% of net disposable professional income divided by the local rent per m\u00b2. Net income calculated using a progressive German tax model (deductions of 30%, 35%, and 40% depending on income level).\n        <\/p>\n        <p style=\"margin: 0; font-size: 14px; line-height: 23px; color: rgb(128, 128, 128); font-style: italic; font-weight: 400; font-family: 'Inter', -apple-system, 'system-ui', 'Segoe UI', sans-serif;\">\n            <strong>Data Note:<\/strong> Professional salary data is available at the state level. For non-city-states, the average salaries of the respective state were used (e.g., Frankfurt = Hesse, Munich = Bavaria). Rent data is city-specific.\n        <\/p>\n    <\/div>\n    <\/div>\n\n    <div class=\"dp-expert-quote\" style=\"max-width: 800px; margin: 3rem auto;\">\n        <img decoding=\"async\" class=\"dp-expert-image\" style=\"border-radius: 50%; border: 2px solid #5D60C4;\" src=\"https:\/\/res.cloudinary.com\/di8zzcozz\/image\/upload\/v1763344937\/Jan_Grade_-_CEO_Empirica_wiv2hj.jpg\" alt=\"Jan Grade\">\n        <div class=\"dp-expert-content\">\n            <p class=\"dp-expert-text\">\"It is one of the defining social and political challenges of our time. Some professional groups that are finally receiving significant wage increases can no longer find affordable housing in major cities. Particularly affected are people who have to move for a new job or need a different apartment because their family has outgrown their current one. Any increase in purchasing power is meaningless if it is immediately consumed by rent.\"<\/p>\n            <div class=\"dp-expert-name\">Jan Grade<\/div>\n            <div class=\"dp-expert-title\">Managing Director of empirica regio GmbH<\/div>\n        <\/div>\n    <\/div>\n\n    <h2 style=\"max-width: 800px; margin: 3rem auto 1rem auto;\">Outlook: What the Next Few Years Could Bring<\/h2>\n\n    <p style=\"max-width: 800px; margin: 1rem auto;\">A look ahead shows how serious the situation could become: if the current dynamic continues, the number of districts above the 30 percent threshold will rise from 26 today to over 90 by 2030. The average rent burden nationwide is then likely to reach 25%.<\/p>\n\n    <p style=\"max-width: 800px; margin: 1rem auto;\">For millions of people, where they live will in the future be less a matter of choice\u2014and more a matter of what they can afford.<\/p>\n\n    <div class=\"dp-methodology\" style=\"background: #1a1a1a; border-radius: 12px; padding: 2rem; margin: 3rem auto; border: 1px solid #333; max-width: 800px;\">\n        <h3>Methodology<\/h3>\n        <p>We analyzed wage and rent data for 400 German independent cities and districts from 2014 to 2024. The rent burden compares the median net income (tax class I, single) with the average monthly rent for a typical 50 m\u00b2 unit. Net income was calculated using a simplified progressive tax model: deduction rates of 30% (under \u20ac30,000), 35% (\u20ac30,000\u2013\u20ac60,000), and 40% (over \u20ac60,000) capture income tax and social security contributions typical for employment relationships.<\/p>\n        <p>Wage data comes from the Federal Employment Agency and shows median gross monthly earnings for full-time employees. For national wage trends, we use Destatis earnings data (Table 81000-0008). Inflation adjustment is done using the Consumer Price Index (2016\u20132024: 25.58%). Real wages are calculated using geometric linking rather than simple subtraction to avoid overstating the effect over the eight-year period.<\/p>\n        <p>Rent data is sourced from the Empirica real estate price index, based on the VALUE market database\u2014a collection of prepared real estate market data from more than 100 sources. The rents shown are calculated using a hedonic model to factor out qualitative differences (age, amenities, condition) and reveal pure price trends. The database uses a random sample independent of any specific date, with professional data-cleaning methods. Rents include a 25% flat surcharge to estimate 'warm' rent (including utilities\/heating). All values refer to asking rents for new contracts, not existing rents, which are typically lower due to tenant protection laws. The 30 percent threshold follows common economic principles; German law does not prescribe a fixed income-to-rent ratio.<\/p>\n        <p>For the living space analysis, profession-specific salaries are only available at the state level. Cities like Frankfurt use the Hesse averages, Munich the Bavarian ones; for the city-states of Berlin and Hamburg, exact values are available. The four professions shown (Geriatric Care, Hospitality, IT, and Electrical Engineering) represent the two biggest winners and two biggest losers in wage growth from 2016 to 2024, thus spanning the spectrum of wage development in Germany.<\/p>\n        <p><strong>Data Limitations:<\/strong> This simplified model is for comparative analysis, not individual financial planning. Regional tax differences, household composition, and existing rental agreements may yield different results.<\/p>\n    <\/div>\n<\/div>\n\n<script>\n\/\/ Datawrapper responsive script\n!function(){\"use strict\";window.addEventListener(\"message\",(function(a){if(void 0!==a.data[\"datawrapper-height\"]){var e=document.querySelectorAll(\"iframe\");for(var t in a.data[\"datawrapper-height\"])for(var r=0;r<e.length;r++)if(e[r].contentWindow===a.source){var i=a.data[\"datawrapper-height\"][t]+\"px\";e[r].style.height=i}}}))}();\n\n\/\/ Tab functionality and city data\nconst cityData = {\n    berlin: {\n        rent: \"Rent: \u20ac9.72\/m\u00b2 \u2192 \u20ac18.58\/m\u00b2 (+91%)\",\n        professions: [\n            { name: \"Geriatric Care\", m2016: 44, m2024: 38 },\n            { name: \"Food & Beverage Services (Hospitality)\", m2016: 33, m2024: 28 },\n            { name: \"Software Development\", m2016: 78, m2024: 64 },\n            { name: \"Electrical Engineering\", m2016: 64, m2024: 48 }\n        ]\n    },\n    hamburg: {\n        rent: \"Rent: \u20ac11.88\/m\u00b2 \u2192 \u20ac16.50\/m\u00b2 (+38.9%)\",\n        professions: [\n            { name: \"Geriatric Care\", m2016: 44, m2024: 44 },\n            { name: \"Food & Beverage Services (Hospitality)\", m2016: 31, m2024: 32 },\n            { name: \"Software Development\", m2016: 73, m2024: 65 },\n            { name: \"Electrical Engineering\", m2016: 65, m2024: 54 }\n        ]\n    },\n    frankfurt: {\n        rent: \"Rent: \u20ac13.62\/m\u00b2 \u2192 \u20ac19.33\/m\u00b2 (+41.8%)\",\n        professions: [\n            { name: \"Geriatric Care\", m2016: 34, m2024: 37 },\n            { name: \"Food & Beverage Services (Hospitality)\", m2016: 27, m2024: 28 },\n            { name: \"Software Development\", m2016: 66, m2024: 57 },\n            { name: \"Electrical Engineering\", m2016: 53, m2024: 48 }\n        ]\n    },\n    munich: {\n        rent: \"Rent: \u20ac14.88\/m\u00b2 \u2192 \u20ac22.81\/m\u00b2 (+53%)\",\n        professions: [\n            { name: \"Geriatric Care\", m2016: 30, m2024: 28 },\n            { name: \"Food & Beverage Services (Hospitality)\", m2016: 21, m2024: 22 },\n            { name: \"Software Development\", m2016: 53, m2024: 46 },\n            { name: \"Electrical Engineering\", m2016: 40, m2024: 35 }\n        ]\n    },\n    cologne: {\n        rent: \"Rent: \u20ac9.75\/m\u00b2 \u2192 \u20ac14.14\/m\u00b2 (+45%)\",\n        professions: [\n            { name: \"Geriatric Care\", m2016: 47, m2024: 47 },\n            { name: \"Food & Beverage Services (Hospitality)\", m2016: 32, m2024: 32 },\n            { name: \"Software Development\", m2016: 74, m2024: 61 },\n            { name: \"Electrical Engineering\", m2016: 61, m2024: 53 }\n        ]\n    },\n    dusseldorf: {\n        rent: \"Rent: \u20ac9.91\/m\u00b2 \u2192 \u20ac14.35\/m\u00b2 (+45%)\",\n        professions: [\n            { name: \"Geriatric Care\", m2016: 48, m2024: 49 },\n            { name: \"Food & Beverage Services (Hospitality)\", m2016: 32, m2024: 34 },\n            { name: \"Software Development\", m2016: 76, m2024: 63 },\n            { name: \"Electrical Engineering\", m2016: 62, m2024: 56 }\n        ]\n    },\n    dresden: {\n        rent: \"Rent: \u20ac6.65\/m\u00b2 \u2192 \u20ac9.39\/m\u00b2 (+41%)\",\n        professions: [\n            { name: \"Geriatric Care\", m2016: 47, m2024: 64 },\n            { name: \"Food & Beverage Services (Hospitality)\", m2016: 38, m2024: 44 },\n            { name: \"Software Development\", m2016: 79, m2024: 84 },\n            { name: \"Electrical Engineering\", m2016: 66, m2024: 64 }\n        ]\n    },\n    leipzig: {\n        rent: \"Rent: \u20ac5.70\/m\u00b2 \u2192 \u20ac9.92\/m\u00b2 (+74%)\",\n        professions: [\n            { name: \"Geriatric Care\", m2016: 56, m2024: 64 },\n            { name: \"Food & Beverage Services (Hospitality)\", m2016: 45, m2024: 44 },\n            { name: \"Software Development\", m2016: 94, m2024: 84 },\n            { name: \"Electrical Engineering\", m2016: 79, m2024: 64 }\n        ]\n    }\n};\n\nfunction createDotVisualization(cityName) {\n    const data = cityData[cityName];\n    if (!data) return '';\n    \n    let html = '';\n    data.professions.forEach(prof => {\n        const diff = prof.m2024 - prof.m2016;\n        const pct = ((prof.m2024 \/ prof.m2016 - 1) * 100).toFixed(1);\n        \n        \/\/ Create dots for 2016\n        let dots2016 = '';\n        for (let i = 0; i < prof.m2016; i++) {\n            dots2016 += '<div class=\"dp-space-dot\"><\/div>';\n        }\n        \n        \/\/ Create dots for 2024\n        let dots2024 = '';\n        for (let i = 0; i < prof.m2024; i++) {\n            dots2024 += '<div class=\"dp-space-dot\"><\/div>';\n        }\n        \n        html += `\n            <div class=\"dp-prof-card\">\n                <div class=\"dp-prof-card-name\">${prof.name}<\/div>\n                <div class=\"dp-years-comparison\">\n                    <div class=\"dp-year-column\">\n                        <div class=\"dp-year-header\">2016 \u2022 ${prof.m2016}&nbsp;m\u00b2<\/div>\n                        <div class=\"dp-dot-container\">${dots2016}<\/div>\n                    <\/div>\n                    <div class=\"dp-year-column\">\n                        <div class=\"dp-year-header\">2024 \u2022 ${prof.m2024}&nbsp;m\u00b2<\/div>\n                        <div class=\"dp-dot-container\">${dots2024}<\/div>\n                    <\/div>\n                <\/div>\n                <div class=\"dp-change-summary\">\n                    Change: <span class=\"${diff < 0 ? 'dp-change-negative' : 'dp-change-positive'}\">\n                        ${diff > 0 ? '+' : ''}${diff}&nbsp;m\u00b2\n                    <\/span>\n                    <span class=\"dp-change-percentage\">(${diff > 0 ? '+' : ''}${pct}&nbsp;%)<\/span>\n                <\/div>\n            <\/div>\n        `;\n    });\n    \n    return html;\n}\n\nfunction showCity(cityName) {\n    \/\/ Hide all tabs\n    const tabs = document.querySelectorAll('.dp-tab-content');\n    tabs.forEach(tab => {\n        tab.classList.remove('active');\n    });\n    \n    \/\/ Remove active class from all buttons\n    const buttons = document.querySelectorAll('.dp-tab-btn');\n    buttons.forEach(btn => {\n        btn.classList.remove('active');\n    });\n    \n    \/\/ Show selected tab\n    const selectedTab = document.getElementById(cityName);\n    if (selectedTab) {\n        selectedTab.classList.add('active');\n        \n        \/\/ Update the content\n        const gridElement = selectedTab.querySelector('.dp-prof-grid');\n        const cityInfo = selectedTab.querySelector('.dp-city-info');\n        \n        if (gridElement) {\n            gridElement.innerHTML = createDotVisualization(cityName);\n        }\n        \n        if (cityInfo && cityData[cityName]) {\n            cityInfo.textContent = cityData[cityName].rent;\n        }\n    }\n    \n    \/\/ Add active class to clicked button\n    const activeButton = document.querySelector(`[data-city=\"${cityName}\"]`);\n    if (activeButton) {\n        activeButton.classList.add('active');\n    }\n}\n\n\/\/ Initialize all tab contents on page load\ndocument.addEventListener('DOMContentLoaded', function() {\n    \/\/ Initialize all cities\n    ['berlin', 'hamburg', 'frankfurt', 'munich', 'cologne', 'dusseldorf', 'dresden', 'leipzig'].forEach(city => {\n        const grid = document.querySelector(`#${city} .dp-prof-grid`);\n        const info = document.querySelector(`#${city} .dp-city-info`);\n        if (grid && info && cityData[city]) {\n            grid.innerHTML = createDotVisualization(city);\n            info.textContent = cityData[city].rent;\n        }\n    });\n});\n\n\/\/ Fullscreen modal functionality\nfunction openFullscreen(img) {\n    var modal = document.getElementById(\"infographic-modal\");\n    var modalImg = document.getElementById(\"modal-img\");\n    modal.style.display = \"block\";\n    modalImg.src = img.src;\n}\n\nfunction closeFullscreen() {\n    document.getElementById(\"infographic-modal\").style.display = \"none\";\n}\n<\/script>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>German real wages grew just 1.3% in eight years while Berlin rents soared 91%. How wages and rents diverged and who can still afford space&#8230;.<\/p>\n","protected":false},"author":9,"featured_media":9105,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"elementor_header_footer","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[51,71,7,69,52],"tags":[],"class_list":["post-9316","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-economy","category-money","category-politics","category-real-estate","category-trending"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.datapulse.de\/en\/wp-json\/wp\/v2\/posts\/9316","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.datapulse.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.datapulse.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.datapulse.de\/en\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/www.datapulse.de\/en\/wp-json\/wp\/v2\/comments?post=9316"}],"version-history":[{"count":13,"href":"https:\/\/www.datapulse.de\/en\/wp-json\/wp\/v2\/posts\/9316\/revisions"}],"predecessor-version":[{"id":10632,"href":"https:\/\/www.datapulse.de\/en\/wp-json\/wp\/v2\/posts\/9316\/revisions\/10632"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.datapulse.de\/en\/wp-json\/wp\/v2\/media\/9105"}],"wp:attachment":[{"href":"https:\/\/www.datapulse.de\/en\/wp-json\/wp\/v2\/media?parent=9316"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.datapulse.de\/en\/wp-json\/wp\/v2\/categories?post=9316"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.datapulse.de\/en\/wp-json\/wp\/v2\/tags?post=9316"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}