Blog

Capital Gains Tax in Germany: A Complete Guide to Stocks, ETFs, Crypto & Real Estate

Selling an investment for a profit in Germany isn't taxed by one single rule. This guide walks through every common case in plain language, stocks, ETFs, bonds, crypto, real estate, and more, with real numbers throughout.

EswarPublished September 4, 202617 min read

Capital Gains Tax in Germany: a complete guide covering §20 EStG stocks and ETFs, §23 EStG crypto and real estate, and the €1,000 tax-free allowance

Quick answer

Germany doesn't tax "capital gains" as one single thing. Sell shares, ETFs, bonds, or similar financial investments for a profit, and that's capital income (Kapitalvermögen) under §20 EStG, generally taxed at a flat 25% rate (plus solidarity surcharge, and church tax if you belong to one), with the first €1,000 a year (€2,000 for married couples) tax-free. Sell cryptocurrency, real estate, or most other private property instead, and it falls under the private disposal rules of §23 EStG: usually tax-free once you've held the asset long enough (1 year for crypto, 10 years for real estate, with an exception for a home you lived in yourself), but taxed at your normal income tax rate if you sell too soon. Which rule applies, and how much you actually owe, changes a lot from one asset type to the next, that's what the rest of this guide walks through.

Disclaimer: This guide explains how Germany taxes capital gains for private individuals, in plain language, for general education only. It is not tax, legal, or financial advice, and it doesn't cover every edge case. Your own circumstances, filing status, and any applicable tax treaty can change the outcome, always confirm specifics with a Steuerberater (tax advisor) before acting on anything here.

25 % + SoliFlat capital income tax rate
1,000 € / 2,000 €Sparer-Pauschbetrag, tax-free every year
1 yearCrypto holding period to go tax-free
10 yearsReal estate holding period to go tax-free
On this page

Not All "Capital Gains" Are the Same

When people say "capital gains tax," they usually picture one single rule: sell something for more than you paid, hand over a slice to the tax office. In Germany, it's not that simple, and getting the distinction right from the start makes everything else in this guide much easier to follow.

German tax law splits almost everything you might sell at a profit into two entirely different regimes, depending on what you sold:

  • Financial investments (shares, ETFs, bonds, certificates, most derivatives) fall under §20 of the Einkommensteuergesetz (EStG, the Income Tax Act) as Einkünfte aus Kapitalvermögen, "income from capital assets." These are usually taxed at a flat 25% rate, regardless of how long you held them.
  • Almost everything else you might sell privately (cryptocurrency, real estate, art, and most other property) falls under §23 EStG instead, as a privates Veräußerungsgeschäft, a "private disposal transaction." Here, how long you held the asset before selling is the single most important fact: hold it long enough, and the entire gain is tax-free; sell too soon, and it's taxed at your normal income tax rate, on top of your salary.

Two completely different systems, two different rates, two different sets of rules for what counts as a loss you can offset. Assuming your crypto gains work like your stock gains, for example, is one of the most common and costly misunderstandings among first-time investors in Germany. The sections below go through each asset type in turn, then cover the allowance, the tax rate mechanics, loss offsetting, and the mistakes people make most often.

Every Asset Type at a Glance

Before the details, here's the whole picture in one table. §20 assets (blue) are always taxed the same flat way; §23 assets (violet) live or die by how long you held them.

Asset typeLegal basisTypical taxThe rule that matters most
Shares & stocks§20 EStG25% + SoliTaxed the same no matter how long you held them
ETFs & funds§20 EStG25% + SoliPartial exemption (Teilfreistellung) reduces the taxable share
Bonds§20 EStG25% + SoliInterest and sale gains both taxed the same way
Certificates & derivatives§20 EStG25% + SoliNo more €20,000 annual loss cap since 2025
Cryptocurrency§23 EStG0% after 1 year, otherwise your income tax rateThe 1-year holding period is everything
Real estate§23 EStG0% after 10 years or if owner-occupied, otherwise your income tax rate10-year rule, plus an owner-occupied exception
Other private assets§23 EStG0% after 1 year, up to €1,000/year combined exemptEveryday items are excluded entirely
Interest & dividends§20 EStG25% + SoliTaxed as received, not on sale

Stocks and Shares

Selling shares, whether it's a single company like SAP or Deutsche Bank, or a basket you picked yourself, is the clearest, most straightforward case: it's capital income under §20 Abs. 2 EStG, full stop, no matter how long you held the shares.

The entire gain is capital income for the year you sold, taxed at the flat rate described later in this guide (plus solidarity surcharge and church tax, if applicable), unless it's covered by your tax-free allowance first. Here's what that looks like on a real number:

In practice, you'll rarely have to calculate this yourself. If your shares are held with a German bank or broker, that institution withholds the tax automatically the moment you sell, the Kapitalertragsteuer (capital gains withholding tax), and pays it directly to the tax office. Your Depot (custody account) statement shows this as a separate deduction, and by default you generally don't need to mention it on your tax return, the tax has already been settled at source (you'd still declare it if you're requesting the Günstigerprüfung covered later, or if you have other capital income needing your Sparer-Pauschbetrag applied).

There's one important restriction specific to shares, covered in more detail in the loss-offsetting section below: a loss from selling shares can only be offset against a gain from selling other shares, not against your dividends, interest, or gains from funds or bonds. That's narrower than you might expect, and it's currently being challenged as potentially unconstitutional, more on that later.

Worked example

Purchase price10,000 €
Sale price14,000 €
Gain4,000 €
Tax (25% + Soli)-1,055.00 €
You keep2,945.00 €

ETFs and Investment Funds

If you invest through an ETF savings plan (Sparplan), a mutual fund, or any pooled investment vehicle, selling your units for a profit is also capital income under §20 EStG, the same broad category as individual shares. But funds carry one extra wrinkle worth knowing about: the Teilfreistellung (partial exemption).

Because a fund itself may already hold assets that generate their own separately-taxed returns, a portion of your gain (and of any distributions along the way) can be exempted from tax again at your level, to avoid taxing the same underlying profit twice. How much is exempted depends on the fund type:

  • Equity funds (at least 51% invested in shares): 30% of the gain is tax-free
  • Mixed funds (at least 25% in shares): 15% tax-free
  • Real estate funds: 60% or 80% tax-free, depending on whether they invest mainly in Germany or abroad
  • Other funds (e.g. pure bond funds): no partial exemption

Here's an equity fund gain split by the 30% Teilfreistellung, tax on the remainder, then your Sparer-Pauschbetrag on top of that (not shown below, since it depends on what else you've already used it on). Your broker's annual tax statement (Steuerbescheinigung) already does this arithmetic, you never calculate it by hand.

Accumulating funds carry one more wrinkle: the Vorabpauschale. If your ETF or fund reinvests its earnings instead of paying them out (thesaurierend, "accumulating"), German tax law doesn't let you defer all tax until you eventually sell. Each year, it assumes a minimum notional return, the Vorabpauschale, calculated as the fund's value on 1 January × that year's Basiszins (base rate, set annually, 3.20% for 2026) × 70%, and taxes that (through the same Teilfreistellung and 25% + Soli rules) even though you received no actual payout. It's automatically deducted from your account by your German broker in early January of the following year. Two things make this less painful than it sounds: it's capped at your fund's actual gain for the year (a fund that lost value, or gained less than the notional amount, owes less or nothing), and the tax you've already paid on it increases your cost basis, so you're not taxed on it again when you eventually sell.

Worked example: equity fund

Total gain2,000 €
Tax-free (30% Teilfreistellung)600 €
Taxable portion1,400 €
Tax (25% + Soli)-369.25 €
You keep1,630.75 €

The Teilfreistellung: how much of a fund's gain is exempted again before the 25% rate even applies, depending on what the fund itself invests in.

Bonds and Interest-Bearing Investments

Bonds and similar interest-bearing securities generate two separate kinds of taxable income, worth keeping apart in your head even though both ultimately fall under the same §20 EStG umbrella:

  • Interest payments you receive while holding the bond are capital income the moment they're paid, regardless of whether you ever sell the bond itself.
  • A profit from selling the bond itself before maturity, for more than you paid, is also capital income, taxed the same way a share sale would be.

A €5,000 corporate bond, two years of €150 interest, then sold for a €200 gain, all taxed the same way, the flat rate described below (before any Sparer-Pauschbetrag you haven't used up elsewhere that year):

Worked example

Interest, year 1150 €
Interest, year 2150 €
Gain from selling the bond200 €
Total capital income500 €
Tax (25% + Soli)-131.88 €
You keep368.12 €

Certificates and Derivatives

Certificates (Zertifikate, structured products issued by a bank that track an underlying index, commodity, or basket) and derivatives (options, futures, and similar contracts, known collectively as Termingeschäfte) are also generally taxed as capital income under §20 EStG when you close out a position at a profit.

Derivatives specifically used to carry a harsh restriction worth knowing has changed: from 2021 through 2024, losses from Termingeschäfte could only be offset against gains from Termingeschäfte (or option-writing premiums), capped at €20,000 a year, with the rest carried forward to future years, also capped at €20,000 annually. That cap was widely criticized as unfair and was formally abolished by the Jahressteuergesetz 2024 (in force since 6 December 2024), applying to all assessments not yet final rather than cleanly splitting at a single tax year: derivative losses can once again be offset against your other capital gains without that €20,000 ceiling.

This is a genuinely technical corner of German tax law. If you actively trade options, futures, or complex certificates, the exact classification of a given product (and whether it even counts as a Termingeschäft at all) can meaningfully change your tax bill, and it's one of the areas most worth a specific conversation with a Steuerberater rather than relying on a general guide like this one.

The old 20,000 euro annual loss cap for derivatives, abolished since 2025

Cryptocurrency

Here's the distinction that gets blurred most often, and the one this guide wants to make unmistakably clear: selling cryptocurrency is not taxed the same way as selling shares. Bitcoin, Ethereum, and similar crypto assets held as a private investment are not "capital income" under §20 EStG at all, they fall under the private disposal rules of §23 EStG instead, the same basic mechanism that applies to real estate and other private property.

The one-year rule is what actually matters. Hold a crypto asset for longer than one year before selling it, converting it to another cryptocurrency, or spending it, and the entire gain is completely tax-free, no matter how large. Sell it within one year of buying it, and the entire gain is included in your taxable income for the year and subject to the progressive income-tax rates, not the flat 25% used for shares, stacked on top of your salary and any other income for the year.

Example: you buy €5,000 of Bitcoin in March. Sell it in December of the same year for €9,000, and the €4,000 gain is added to your taxable income for the year and taxed at your marginal rate, potentially well above 25% if you're a higher earner. Wait until the following April instead, more than a year after you bought it, and sell for the same €9,000, and the entire €4,000 is tax-free.

Staking and lending don't extend the holding period. For most other assets, "using" them to generate income can stretch the holding period to 10 years. The Bundesministerium der Finanzen has explicitly clarified that this extension does not apply to crypto: staking or lending your coins does not turn a 1-year holding period into a 10-year one. That's a separate question from how the rewards themselves are taxed, though: staking and lending rewards are generally taxable as income in their own right when you receive them, regardless of what happens to the holding period of the coins you staked.

One thing worth watching: the Finance Ministry has floated abolishing the 1-year crypto holding-period exemption entirely, most recently in a July 2026 budget draft. A political proposal is not a change in the law, the 1-year rule described above remains what's actually in force unless and until new legislation is passed, but given how live this discussion is, it's worth checking the current status before relying on this rule for a decision you can't undo.

Cryptocurrency held for 1 year becomes tax-free in Germany

Real Estate

Selling privately owned real estate, an apartment, a house, or land, also falls under the §23 EStG private disposal rules, with its own version of the holding-period test: 10 years, generally counted from the date of the notarized purchase contract to the date of the notarized sale contract (the obligating agreements, not the later transfer of ownership), not from when you actually moved in or out.

Hold the property for more than 10 years before selling, and the entire gain is tax-free, regardless of how large it is or how you used the property in between. Sell within 10 years, and the gain is included in your taxable income and subject to the progressive income-tax rates, added on top of your salary for that year, unless one exception applies.

The owner-occupied exception. If you used the property as your own home for the entire time you owned it, or for the year you sold it plus the two full calendar years before that, the sale is generally completely tax-free no matter how long you owned it, even well under 10 years. That two-preceding-years rule is counted in calendar years, not full 24-month periods, so moving in during December, living there through the whole next year, and selling in January the year after can already qualify. Genuinely mixed-use situations, renting out a room, or a separate unit in the same building, while living in the rest yourself, can complicate this test rather than automatically failing it, and are worth checking specifically rather than assuming either way.

Example: you buy an apartment and rent it out for 6 years, then sell it at a €120,000 profit. Since you never lived there and it's under 10 years, that entire €120,000 is added to your taxable income for the year and taxed at your normal rate. Had you waited another 4 years past the 10-year mark, the same €120,000 would have been entirely tax-free.

A pure rental property you've never lived in gets no exception at all. If you're planning to sell within 10 years, budget for this tax from the day you buy, not as an afterthought.

Real estate held for 10 years, or lived in yourself, becomes tax-free in Germany

Other Private Assets

Many other privately held assets you might sell for a profit, art, jewelry, precious metals, a classic car, a valuable watch, can also fall under the §23 EStG private disposal rules, generally with the same one-year holding-period logic as crypto. Hold it more than a year, the gain is tax-free; sell within a year, it's included in your taxable income and taxed at the progressive rates that apply to your total income. One exception worth flagging: unlike crypto (where the BMF has explicitly confirmed no extension applies), an asset you've used to generate income, renting out a classic car or piece of art, for example, can have its holding period extended to 10 years instead of 1, the same income-generating-use rule that doesn't apply to crypto specifically.

Everyday items are excluded entirely. Gegenstände des täglichen Gebrauchs, ordinary things you use in daily life, like a used car you actually drove, secondhand furniture, or your old phone, are excluded from this rule altogether, regardless of gain or holding period, since they're not really bought as investments and mostly lose value rather than gain it.

The €1,000 Freigrenze. All your §23 gains for the year, crypto, art, everything covered by this rule, are added together into a single sum of profits (after netting off any §23 losses in the same category, see Offsetting Losses below). If that combined total is under €1,000 (raised from €600 on 1 January 2024), the whole amount is tax-free. But this is a Freigrenze, a hard cliff, not a Freibetrag, a gradual allowance: cross €1,000 by even a single euro, and the entire total becomes taxable, not just the amount over the line.

How Long Until It's Tax-Free?

Both are private disposal transactions under §23 EStG, but the holding period that makes the gain tax-free is completely different: 1 year for crypto, 10 years for real estate you didn't live in yourself.

The Tax-Free Allowance: Sparer-Pauschbetrag

Every private individual in Germany gets a standing tax-free allowance for capital income specifically, separate from the private-disposal Freigrenze covered above: the Sparer-Pauschbetrag, currently €1,000 a year for a single person, or €2,000 for a married couple or registered civil partnership filing jointly (unchanged since 1 January 2023). It applies automatically to your combined capital income for the year, interest, dividends, and gains from shares, funds, bonds, or certificates alike, not to a single transaction type.

To actually use it, you set a Freistellungsauftrag (exemption order) with your bank or broker, splitting your allowance across however many accounts you hold, so the bank knows not to withhold tax up to that limit. Without one on file, the bank withholds the full 25% on everything, and you'd have to claim the difference back via your tax return instead, an extra step, not a lost benefit, but worth avoiding.

Example: you earn €1,000 total in dividends and share-sale gains across the year, and your full Sparer-Pauschbetrag is available. None of it is taxed. Earn €1,300 instead, and only the €300 above the allowance is taxed.

The Sparer-Pauschbetrag: 1,000 euros single, 2,000 euros married, tax-free every year

How the 25% Tax Actually Works

The headline rate for capital income is 25%, officially called the Abgeltungsteuer, a "final withholding tax" (Abgeltung meaning it settles your tax liability on that income completely, no further income tax is owed on top once it's been withheld). But 25% is rarely the whole story:

  • Solidarity surcharge (Solidaritätszuschlag): an extra 5.5% of the tax itself, not of the gain, adds 5.5% × 25% = 1.375 percentage points, bringing the combined rate to 26.375%.
  • Church tax (Kirchensteuer): if you're a registered member of a church that levies it, your bank also withholds an additional 8% or 9% of the tax (depending on your state), though the taxable base is reduced slightly first to account for this, so it isn't a straight extra 8-9% on top.

A worked example: you have a €1,000 capital gain, no church tax, and your Sparer-Pauschbetrag is already used up elsewhere. Income tax: €250 (25%). Solidarity surcharge: €13.75 (5.5% of €250). Total tax: €263.75. You keep €736.25.

The Günstigerprüfung: worth knowing if you're a lower or middle earner. Your tax return can compare the flat Abgeltungsteuer against what you'd owe if that same capital income were taxed under the normal progressive tariff alongside your salary, and apply whichever is actually lower for you. This genuinely helps students, part-time workers, and anyone whose overall income sits in a lower tax bracket, but it isn't automatic, you have to actively request it, by ticking the relevant box on Anlage KAP.

Total1,000 €
What you keep736.25 €
Income tax + Soli263.75 €

A real €1,000 capital gain, no church tax, allowance already used up elsewhere: this is exactly where the money goes.

Try it yourself

Tax owed

263.75 €

You keep

736.25 €

Effective rate

26.38%

Assumes your Sparer-Pauschbetrag is already used up elsewhere and this gain is capital income under §20 EStG. Educational estimate only, not tax advice.

Offsetting Losses

Not every year goes your way, and German tax law has specific, sometimes narrow rules for how a loss reduces what you owe.

Within §20 (capital income), losses generally offset gains of the same broad category first. Ordinary capital losses (e.g. from bonds, certificates, most fund sales) can be offset against most other capital income, interest, dividends, other capital gains, in the same year, or carried forward indefinitely to future years if there isn't enough to offset now.

Shares are the one narrow exception. A loss from selling shares can only be offset against a gain from selling other shares (§20 Abs. 6 Satz 4 EStG), nothing else. But if your only capital income that year is €2,000 in dividends and a €2,000 loss on shares, you can't use the share loss to offset the dividends at all, it simply carries forward, unused, to a future year when you do have a share gain to offset it against.

This restriction has been formally challenged: the Bundesfinanzhof (Germany's federal tax court, case VIII R 11/18) considers it potentially unconstitutional and referred the question to the Bundesverfassungsgericht (Federal Constitutional Court). That case is still pending, with no fixed date for a ruling, and until it actually changes anything, the restriction remains current, binding law, don't assume it's already gone, check the current status if this matters to your own return.

Derivatives lost their special cap in 2025. As covered above, the old €20,000-a-year ceiling on offsetting Termingeschäfte losses was abolished by the Jahressteuergesetz 2024, so this is no longer a separate restriction to plan around.

§23 losses (crypto, real estate, other private assets) stay in their own lane entirely. A loss from a private disposal transaction can only be offset against a gain from another private disposal transaction, never against your salary, and never against your §20 capital income either. Lose money selling crypto within a year, and that loss is only useful against another crypto (or real estate, or other §23) gain, in the same year or carried forward.

Losses at one bank don't automatically offset gains at another. Each German broker only tracks and nets losses within its own internal Verlustverrechnungstopf (loss-offsetting pot), so a loss at Broker B sits there, unused, if your gain was actually at Broker A. To combine them on your tax return instead, you need to actively request a Verlustbescheinigung (loss certificate) from the broker holding the loss, by 15 December of that same year, a firm deadline with no retroactive exception, and then submit that certificate with your Steuererklärung. Miss the deadline, and the loss isn't gone, it's simply carried forward automatically within that same broker for a future year, just not usable against a different broker's gain for the year you missed.

Worked example

Loss on Stock A-2,000 €
Gain on Stock B3,000 €
Net taxable gain1,000 €
Tax (25% + Soli)-263.75 €
You keep736.25 €

Foreign Brokers and Your Tax Return

Everything described above about tax being "withheld automatically" assumes your investments sit with a German bank or broker, one legally required to calculate and withhold the Abgeltungsteuer on your behalf. Use a foreign broker, one based outside Germany with no German withholding obligation, and that automatic step simply doesn't happen.

You're still fully liable for the same tax, nothing about using a foreign platform changes what you owe, but the responsibility for declaring it shifts entirely to you. You report your capital income and gains yourself, on Anlage KAP as part of your annual Steuererklärung, calculate the tax due, and pay it directly, there's no bank standing between you and the Finanzamt doing the arithmetic automatically.

This is also where your Sparer-Pauschbetrag needs active attention: with no German bank applying a Freistellungsauftrag on your behalf, you claim the allowance directly on your tax return instead. Keep your own transaction records, purchase price, sale price, dates, throughout the year, since you won't get a tidy annual Steuerbescheinigung the way a German broker would provide one.

How This Interacts With Your Salary

If you're an employee, it's worth being clear about where capital gains sit relative to your paycheck, since they genuinely work differently.

§20 capital income (shares, ETFs, bonds) generally does not push you into a higher salary tax bracket. Because it's taxed separately at its own flat 25% Abgeltungsteuer rate, it isn't added to your salary before your income tax is calculated, the two are computed independently. A big stock-sale profit in December doesn't retroactively increase the withholding tax on your November paycheck.

§23 private disposal gains (crypto sold too soon, real estate, other assets) are the opposite. These are added directly to your total taxable income for the year, alongside your salary, and taxed together at your normal progressive rate. A large crypto gain realized within the one-year window can genuinely push part of your income into a higher tax bracket for that year, exactly like a large bonus would.

One more thing worth knowing: if your total income for the year is high enough that your marginal rate is already well above 25%, the flat Abgeltungsteuer on your §20 capital income is actually a relief compared to how your salary itself is taxed. That's also part of why the Günstigerprüfung exists in the other direction, for lower earners, and generally isn't available if your rate is already above 25%, there's simply nothing to gain from switching. Run your own salary numbers in the salary calculator to see your own marginal rate.

Common Mistakes to Avoid

A short list of the mistakes people most often make with capital gains in Germany:

  • Assuming crypto is taxed like stocks. It isn't, crypto follows the one-year §23 rule, not the flat 25% §20 rate that applies to shares and funds.
  • Forgetting to set a Freistellungsauftrag. Without one, your bank withholds 25% on everything from euro one, even though your first €1,000 (€2,000 married) should be tax-free.
  • Trying to offset a share loss against dividends or fund gains. It doesn't work, share losses can only offset share gains.
  • Not declaring foreign-broker income at all. The tax is still owed even though nothing was automatically withheld, and not declaring it is a real compliance risk, not a loophole.
  • Missing the Günstigerprüfung when your income is genuinely lower. If your marginal income-tax rate is below the 25% Abgeltungsteuer rate, this can mean a real refund, and it isn't automatic.
  • Selling crypto or a rental property one day too early. Both holding-period rules are hard cutoffs. A single day inside the window can mean the difference between a fully tax-free gain and one taxed at your full personal rate.

Sources

Every rule in this guide is cited against its actual paragraph of German tax law, not a secondhand summary.

See your own marginal tax rate, the number that decides whether the Günstigerprüfung above helps you

Open the salary calculator

Frequently asked questions

Do I owe any tax if I don't sell?

Generally no. Both §20 capital income and §23 private disposal gains are taxed on realization, meaning when you actually sell, convert, or otherwise dispose of the asset, not on paper gains from an asset you're still holding. An ETF that's doubled in value but that you haven't sold creates no tax bill at all. The one common exception worth knowing: dividends and interest are taxed as they're paid to you, even if you never sell the underlying shares or bonds.

What if my broker is foreign?

You're still fully liable for the same German tax, but nothing is withheld automatically the way a German bank would. You need to declare your capital income and gains yourself on Anlage KAP as part of your annual tax return, calculate what's owed, and claim your Sparer-Pauschbetrag directly there rather than through a Freistellungsauftrag. Keep your own transaction records throughout the year since you won't receive a German-style Steuerbescheinigung.

Is crypto really taxed differently from stocks?

Yes, fundamentally. Stock gains are capital income under §20 EStG, taxed at a flat 25% no matter how long you held the shares. Crypto gains for a private individual instead fall under the private disposal rules of §23 EStG: completely tax-free after a one-year holding period, but taxed at your full personal income tax rate if you sell within that year. They're governed by different sections of the law with different mechanics, not just different tax rates on the same rule.

Can I offset stock losses against my salary?

No. Stock losses can only be offset against gains from selling other shares, under §20 Abs. 6 Satz 4 EStG, not against your salary, not against dividends or interest, and not against gains from funds, bonds, or certificates. If you don't have an offsetting share gain in the same year, the loss simply carries forward to a future year when you do.

Do I pay both income tax and capital gains tax on the same money?

No, not on the same gain. §20 capital income is taxed once, at its own flat 25% Abgeltungsteuer rate, separately from your salary's progressive income tax, so it isn't double-taxed or stacked with your salary tax rate. §23 private disposal gains work differently: they're added directly to your total taxable income and taxed together with your salary at your normal progressive rate, but that's still one tax on that income, applied once, just calculated together with everything else rather than separately.

What counts as "owner-occupied" for the real estate exception?

You need to have used the property exclusively as your own home, not rented out to anyone, for either the entire period you owned it, or for the year you sell it plus the two full calendar years immediately before that. That two-year window is counted in calendar years, not 24-month periods, so moving in during December, living there through the following year, and selling in January the year after can already satisfy it. A property you rented out to someone else at any point during that window doesn't qualify, even if you lived there the rest of the time.

This article is for general informational and educational purposes only and does not constitute formal tax, legal, or insurance advice (Steuer-, Rechts- oder Versicherungsberatung).