Composto vs Perfeito: When BR Uses Which

This is the page that fixes the single biggest false friend in the Brazilian Portuguese tense system. The compound perfect — tenho feito, tenho lido, tem chovidolooks exactly like the English present perfect (have done, have read) and English speakers reach for it constantly. But it does not mean the same thing. The Portuguese compound perfect has a narrow, specific meaning: a repeated or continuous action over a recent period that is still going on. For a single finished event — even one that happened five minutes ago — Brazilian Portuguese uses the simple preterite (eu fiz). This page gives you a clean test to choose between them.

The one-question test

Before you pick a tense, ask yourself:

Is this action still happening, or has it happened repeatedly over the recent period leading up to now?

  • Yes → use the pretérito perfeito composto (tenho feito).
  • No — it's a single, completed, bounded event → use the pretérito perfeito simples (eu fiz).

That is the whole decision. The composto is for ongoing or iterative recent activity; the simples is for completed, bounded events. Notice that "recent" alone does not trigger the composto — recency is not the deciding factor. I read a lot yesterday is recent but completed, so it is simples.

💡
The composto is NOT the English present perfect. The English perfect covers single past events ("I have read that book"); the Portuguese composto does not. Translate single completed events with the simples (eu li esse livro).

The composto: repeated or continuous, still going on

Use tenho + past participle when the action has been happening over and over across a recent stretch of time, or continuously up to now, and shows no sign of having stopped. Think of it as "I've been [doing] (lately, and still)."

Tenho lido muito ultimamente.

I've been reading a lot lately. (repeatedly, and it continues)

Tem chovido todos os dias.

It's been raining every day. (repeated pattern, still ongoing)

A gente tem trabalhado muito esse mês.

We've been working a lot this month. (continuing through now)

Você tem dormido bem?

Have you been sleeping well? (over the recent period)

Each of these carries the flavor "and it's still the case." If you said tenho lido muito ultimamente, the natural assumption is that you are still in a reading phase. The moment that phase is over, you would switch to the simples (li muito no mês passado — "I read a lot last month").

The simples: a single, finished, bounded event

Use the pretérito perfeito simples (eu fiz, eu li, choveu) for any action you view as a completed whole — done, over, with a boundary around it. This is the default past tense in Brazilian Portuguese, and it covers the vast majority of cases where English would use either the simple past or the present perfect.

Eu li muito ontem.

I read a lot yesterday. (one completed stretch)

Choveu ontem à noite.

It rained last night. (one event)

Já terminei o relatório.

I've already finished the report. (single completed action)

Você já comeu?

Have you eaten (already)?

Look hard at the last two. English uses the present perfect there ("have finished," "have eaten"), which is exactly what tempts you toward the composto — but each describes one completed event, so Brazilian Portuguese uses the simples. Já comi (I've eaten / I already ate) is right; tenho comido would mean "I've been eating (repeatedly lately)," a totally different idea.

Minimal pairs — drill these

The fastest way to internalize the split is to see the same verb both ways. Read each pair and feel the difference between one bounded event and a recent repeated/ongoing pattern.

Simples (single, completed)Composto (repeated/ongoing, still)
Eu li o jornal hoje de manhã.
I read the paper this morning.
Tenho lido o jornal toda manhã.
I've been reading the paper every morning.
Choveu ontem.
It rained yesterday.
Tem chovido muito.
It's been raining a lot.
Ele saiu cedo hoje.
He left early today.
Ele tem saído cedo.
He's been leaving early (lately).
Eu pensei nisso.
I thought about it.
Tenho pensado muito nisso.
I've been thinking about it a lot.
Estudei a noite toda.
I studied all night.
Tenho estudado todos os dias.
I've been studying every day.

Tenho pensado muito em você.

I've been thinking about you a lot. (ongoing)

Pensei em você quando vi aquele filme.

I thought of you when I saw that movie. (one moment)

The right-hand column always carries "lately, repeatedly, and probably still"; the left-hand column always describes a closed, finished event.

Why English makes this so hard

English assigns two jobs to its present perfect that Portuguese splits between two different tenses:

  1. A single completed event with present relevance — "I have lost my keys." → Portuguese uses the simples: Perdi minhas chaves.
  2. A repeated/ongoing recent pattern — "I have been losing my keys a lot lately." → Portuguese uses the composto: Tenho perdido muito as minhas chaves ultimamente.

Because the English perfect handles both, English speakers map have + participle directly onto tenho + participle and use the composto far too often. The fix is to stop translating the form and translate the meaning: ask the one-question test. If the action is a single done deal, it is the simples — no matter how recent and no matter that English used "have."

💡
If you can naturally insert "lately / these days / over and over" into the English, it's the composto. If the English is a one-shot event ("I lost...", "I've finished...", "Did you eat?"), it's the simples.

This also connects to the duration constructions: Eu moro aqui há cinco anos uses the present, not the composto, for a continuous state since a point. The composto is specifically for repeated or iterative activity, not a single unbroken state — tenho morado would oddly suggest "I've been (in the habit of) living here," which is not what you mean.

Common Mistakes

❌ Eu tenho perdido as chaves.

Incorrect IF you mean a single event — this says 'I've been losing my keys repeatedly'.

✅ Eu perdi as chaves.

I lost / have lost my keys. (single event)

❌ Você tem comido?

Incorrect for 'Have you eaten?' — this asks 'Have you been eating (lately)?'

✅ Você já comeu?

Have you eaten (already)?

❌ Eu tenho terminado o trabalho.

Incorrect — a single completed task takes the simples.

✅ Eu terminei o trabalho.

I've finished / I finished the work.

❌ Ontem tenho lido muito.

Incorrect — 'ontem' (yesterday) bounds the event, so it must be the simples.

✅ Ontem eu li muito.

I read a lot yesterday.

❌ Tenho morado aqui há cinco anos.

Incorrect — a continuous state since a point uses the present, not the composto.

✅ Moro aqui há cinco anos.

I've lived here for five years.

Key Takeaways

  • The composto (tenho feito) means repeated or continuous recent activity that is still going on — not the English present perfect.
  • The simples (eu fiz) is the default for single, completed, bounded events, even very recent ones.
  • The test: Still happening / happened repeatedly lately? → composto. One done event? → simples.
  • Time-bounding adverbs like ontem, hoje de manhã, na semana passada force the simples.
  • A continuous state since a point ("for five years") uses the present, not the composto.

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