Pick a 12-month window, add your US trips, and see whether you reach 330 full days abroad for the Foreign Earned Income Exclusion. The calculator also finds the window that gives you the most full days.
The window is any 12 consecutive months. You choose where it starts, and you can slide it to get the highest count.
Nothing you type leaves this page or is saved. The calculation runs entirely in your browser, and a result link keeps your dates after the #, a part of the URL the browser never sends to any server.
FEIE physical presence test. Calculated with zerocrew.ai/apps/flags-tax/tools/feie-physical-presence-test-calculator. Arithmetic only, not tax advice.
It's one of two ways a US taxpayer abroad can qualify for the Foreign Earned Income Exclusion: you're physically present in a foreign country or countries for at least 330 full days during any 12 consecutive months. Your tax home must also be in a foreign country, so the day count alone isn't enough.
What counts as a full day abroad?
A full day is a complete 24-hour period, starting at midnight, that you spend in a foreign country. A travel day that touches the United States isn't a full foreign day, and transit of 24 hours or more over international waters doesn't count either. That's why the test leaves you roughly 35 non-foreign days in a 365-day window.
Can I choose my 12-month period?
Yes. The 12 consecutive months can start on any day, and a well-chosen start is often the difference between qualifying and not. The calculator searches your dates for the window with the most full foreign days.
What is the bona fide residence test?
It's the other route to the exclusion: you're a bona fide resident of a foreign country for an uninterrupted period that includes a full tax year. It rests on facts like your home, your intentions, and your ties rather than on a day count, and you claim it on the same Form 2555.
Does this store my data?
No. The calculator runs entirely in your browser, and nothing you type leaves the page or is saved. A result link keeps your dates in the part of the URL after the #, which the browser never sends to a server.