Translating English Present Perfect into BR

This is the page that fixes the single most persistent error English speakers make in Brazilian Portuguese: assuming that I have done X equals Tenho feito X. It almost never does. The English present perfect is a wide umbrella covering several different real-world situations, and Brazilian Portuguese splits those situations across three completely different structures. Pick the structure by the situation, never by the English grammar. Once you see the three-way split, the whole tangle comes apart cleanly.

The three Brazilian translations of "have/has + done"

The situation in EnglishBrazilian structureExample
An ongoing state/action still true now ("for / since")present indicative + / fazI have lived here for 5 years → Moro aqui há 5 anos
A single completed action / experience ("just did," "ever," "already")simple preterite (often + )I have already eaten → Já comi
A repeated/continuous action over the recent past, still goingperfeito composto (tenho feito)I've been working a lot lately → Tenho trabalhado muito ultimamente
💡
English "have/has" has THREE Brazilian translations: present + há (ongoing duration), preterite + já (completed/experience), and perfeito composto (recent repeated/continuous). The composto is the narrowest of the three, yet learners overuse it the most.

Case 1: ongoing state or duration → present +

When English uses the present perfect for something that started in the past and is still true now — typically with for or since — Brazilian uses the present tense plus (or colloquial faz) for the duration. This is the case English speakers get most wrong, because the English verb is in a perfect form but the Brazilian verb is in the plain present.

Moro aqui há cinco anos.

I have lived here for five years. (and still live here)

Conheço a Marina faz uns dez anos.

I've known Marina for about ten years.

Estamos esperando há uma hora.

We've been waiting for an hour.

The logic: from the Brazilian point of view, you still live here right now, so the verb is simply present (moro), and há cinco anos tells you how long it has been going. English bundles duration into a perfect tense; Brazilian keeps the verb in the present and lets / faz carry the time.

💡
"I have known / I have lived / I have worked here for/since..." → present tense + (or faz). Never the composto. Tenho morado aqui há cinco anos is wrong.

Case 2: completed action or experience → preterite (+ )

When English uses the present perfect for a single completed action, a recent completion ("I have just..."), or an experience ("Have you ever...?"), Brazilian uses the simple preterite, very often with ("already / yet / ever").

Já comi, obrigado.

I've already eaten, thanks.

Você já foi ao Rio?

Have you ever been to Rio?

Ela já chegou?

Has she arrived yet?

Acabei de mandar o e-mail.

I have just sent the email.

This is the bucket the composto-overusers raid by mistake. Have you finished? is Você já terminou? (preterite), not Você tem terminado?. I have seen that film is Eu já vi esse filme (preterite), not Eu tenho visto. The English perfect here reports one finished thing, and the Brazilian tense for one finished thing is the preterite.

Case 3: recent repeated/continuous action → perfeito composto

This is the one place the composto belongs: an action that has been repeating or continuing over the recent past and is still going on. In English this often surfaces as have been doing (the present perfect continuous) or as have done with a sense of "lately, repeatedly."

Tenho trabalhado muito ultimamente.

I've been working a lot lately.

Tem chovido todos os dias.

It's been raining every day.

Eles têm saído bastante esses dias.

They've been going out a lot these days.

If you can paraphrase the English as "have been V-ing, lately" and it still makes sense, you are in composto territory. If you cannot — if it is really a single event or a still-true state measured in years — you are in one of the other two cases.

Walking through the decision

Faced with an English present perfect, ask in order:

  1. Is it a duration that is still true ("for X time / since Y")? → present + / faz. (Trabalho aqui há dois anos.)
  2. Is it one completed action, a "just," an "already/yet," or an "ever" experience? → preterite, usually + . (Já terminei. / Você já foi lá?)
  3. Is it a repeated/continuous pattern over the recent past, still going? → perfeito composto. (Tenho dormido mal.)

Trabalho nessa empresa há três anos.

I have worked at this company for three years. (Case 1: still true, present + há)

Já trabalhei nessa empresa. (no longer there)

I have worked at this company. (Case 2: completed experience, preterite + já)

Tenho trabalhado demais essa semana.

I've been working too much this week. (Case 3: recent repeated, composto)

Look at how the same English verb "have worked" lands in all three buckets depending on the situation. That is the entire skill: read the situation, not the English tense.

Common Mistakes

❌ Tenho morado aqui há cinco anos.

Incorrect — an ongoing duration uses the plain present, not the composto.

✅ Moro aqui há cinco anos.

I've lived here for five years.

Duration that is still true = present + . The composto cannot express "for X years."

❌ Você tem ido ao Rio? (intending: Have you ever been to Rio?)

Incorrect — an experiential question uses the preterite with já.

✅ Você já foi ao Rio?

Have you ever been to Rio?

"Have you ever...?" = Você já + preterite.

❌ Tenho terminado o projeto. (intending: I have finished the project)

Incorrect — a single completion takes the preterite.

✅ Já terminei o projeto.

I've finished the project.

One finished result = preterite (+ ), not the composto.

❌ Eu conheço ela desde 2010, então tenho conhecido ela há muito tempo.

Incorrect — duration of an ongoing acquaintance is present + há/desde, never the composto.

✅ Conheço ela desde 2010; conheço ela há muito tempo.

I've known her since 2010; I've known her for a long time.

❌ Translating 'I have been working a lot' as 'Trabalhei muito' when you mean it is still going on.

Incorrect nuance — the preterite closes off the action as finished.

✅ Tenho trabalhado muito.

I've been working a lot (and still am).

Here the composto is exactly right, because the work is a recent, still-ongoing pattern — this is its one home.

Key Takeaways

Do not translate the English present perfect by its form. Read the situation and route it to one of three Brazilian structures: present + há / faz for an ongoing duration still true now (moro aqui há cinco anos); the simple preterite, often with já for a single completed action, a "just," or an "ever/already" experience (já comi, você já foi ao Rio?); and the perfeito composto only for a recent repeated or continuous action still going on (tenho trabalhado muito ultimamente). The composto is the narrowest of the three — reach for it last, not first.

Now practice Portuguese

Reading grammar gets you part of the way. The exercises are where it sticks — free, no signup needed.

Start learning Portuguese

Related Topics

  • Pretérito Perfeito Composto: OverviewA2Why the Brazilian 'tenho falado' does NOT mean the English present perfect — it means an action repeated or continued from a past point up to now.
  • Iterative/Continuous Meaning: 'Tem feito'B1Drilling the one thing the Brazilian present perfect actually means: an action repeated or continued from a recent past point right up to now.
  • 'Há' / 'Faz' Constructions for Time DurationA2How Brazilian Portuguese expresses 'for X amount of time' using 'há' or 'faz' with the present tense — and why the verb is never the compound perfect.
  • Translating English 'Since' into BRB1How Brazilian Portuguese uses 'desde' for 'since', why it pairs with the present tense for ongoing situations, and how it differs from the duration words 'há' and 'faz'.
  • Pretérito Perfeito for Completed ActionsA1The core use of the Brazilian pretérito perfeito for finished, time-bounded past actions — and why English 'I have done' almost always maps to it, not to 'tenho feito'.
  • Preterite vs Composto vs English Present PerfectB1Why the Brazilian pretérito perfeito composto ('tenho feito') is a false friend of English 'I have done' — and how to map English present perfect to the right BR tense.