Common Mistakes with the Perfeito Composto

The pretérito perfeito composto is where good Portuguese sentences go to die. It looks like English "have + past participle," sounds like Spanish he + participio, and behaves like neither of them. Speakers of both source languages instinctively reach for it in places where Portuguese wants a different tense, and the result is a steady drip of small mistakes that mark someone as a learner more reliably than almost any other feature of the language. This page catalogs the seven most common ones, shows exactly how to repair them, and explains the underlying rule so you can spot the same trap in a sentence you have never seen before.

Mistake 1: Using it for single past events

This is the single most common mistake, especially among speakers coming from English or peninsular Spanish. The composto does not describe a single, completed, bounded event -- even a very recent one.

❌ Tenho comido pizza ontem.

Incorrect -- a single meal on a specific day is not a pattern.

✅ Comi pizza ontem.

I ate pizza yesterday.

❌ Esta manhã tenho falado com o meu chefe.

Incorrect -- a single conversation in a bounded window takes the preterite.

✅ Esta manhã falei com o meu chefe.

This morning I spoke with my boss.

Why

The composto carries a built-in meaning of repetition or continuity over a still-open window. Ontem, esta manhã, há duas horas all name specific, bounded moments -- incompatible with that meaning. English "I have eaten pizza yesterday" is also ungrammatical, but speakers often misread the Portuguese form as neutral and deploy it anyway. It is not neutral. The simple preterite -- comi, falei, vi -- is the Portuguese tool for single past events, and it covers almost everything English handles with "have done" plus a specific time.

💡
If your sentence contains a specific time marker -- ontem, na terça-feira, há duas horas, em 2020 -- stop and use the preterite. No specific time marker ever coexists with the composto.

Mistake 2: Using it for states that began in the past and continue

Portuguese handles the English "have lived here for X years" and "have known him since X" idea with the present tense, plus desde or . The composto actively produces a different (and unintended) meaning when used here.

❌ Tenho morado aqui desde 2015.

Incorrect for continuous residence -- implies an on-and-off recent pattern.

✅ Moro aqui desde 2015.

I have lived here since 2015.

❌ Tenho conhecido o Pedro há muito tempo.

Incorrect -- *conhecer* as a continuous state takes the present.

✅ Conheço o Pedro há muito tempo.

I have known Pedro for a long time.

❌ Tenho estudado português há dois anos.

Incorrect for the 'since' meaning.

✅ Estudo português há dois anos.

I have been studying Portuguese for two years.

Why

English and Spanish both treat "for X time" and "since X" as present-perfect territory. Portuguese, uniquely among the major Romance languages, treats it as present-tense territory. The state is ongoing, so the verb stays in the present, with há + time (for durations) or desde + point in time (for start points) attached. The composto, by contrast, specifically demands a recent window and an iterative or temporary quality -- neither of which fits the idea of a long, continuous state.

💡
Memorize the two patterns as templates: [verb in present] + há + duration and [verb in present] + desde + start point. Whenever English would say "for/since X," one of these patterns is what you need -- not the composto.

Mistake 3: Using it instead of the preterite with "already" or "yet"

In Spanish and in English, "already" and "yet" often trigger a perfect tense. In Portuguese, and ainda não combine much more naturally with the simple preterite.

❌ Já tenho comido.

Incorrect -- *já* plus a single completion takes the preterite.

✅ Já comi.

I've already eaten.

❌ Ainda não tenho acabado o trabalho.

Incorrect -- use the preterite for a single uncompleted task.

✅ Ainda não acabei o trabalho.

I haven't finished the work yet.

❌ Já tenho lido esse livro.

Incorrect -- life experience of reading a book once.

✅ Já li esse livro.

I've already read that book.

Why

means "already" and signals that an event has now occurred -- a single, completed occurrence. Ainda não means "not yet" and signals a single, anticipated event that has not happened. Both of them point to one event, which is exactly what the composto refuses to do. The composto wants a pattern; and ainda não name a single point. The mismatch makes the composto feel wrong.

A rare exception: can combine with the composto when the sentence genuinely means "for some time now, it has been the case that" -- já tenho notado ("I've been noticing for a while now"). But this is the exceptional, not the default, reading.

Mistake 4: Trying to make the participle agree with an object

English speakers rarely make this mistake, but Spanish speakers occasionally do, having absorbed participle agreement from constructions like las he visto ("I have seen them," with agreement in other tenses). In Portuguese, the participle in the composto is invariable. It never agrees with the object, the subject, or anything else.

❌ Tenho escritas muitas cartas.

Incorrect -- the participle does not agree with the object *cartas*.

✅ Tenho escrito muitas cartas.

I have been writing a lot of letters.

❌ As cartas que tenho escritas.

Incorrect as a relative clause construction.

✅ As cartas que tenho escrito.

The letters that I have been writing.

Why

Portuguese does have a construction called ter + agreeing participle (tenho as cartas escritas, "I have the letters written" -- meaning the letters are now in a written state). That is a different construction entirely: stative, with a different meaning, where the participle is really an adjective modifying the object. In the composto, the participle is a pure verbal element paired with ter, and it stays in its invariable masculine-singular form no matter what. Do not confuse the two.

A quick test: if you can translate your sentence as "I have the X [past-participle-adjective]" in English -- meaning X is now in that state -- agreement is possible. If you mean "I have been doing X" as a composto, the participle is always invariable.

Mistake 5: Using haver instead of ter

In modern European Portuguese, the compound tenses use ter as the auxiliary. Haver is grammatically possible in the compound perfect, but in contemporary speech and writing it sounds archaic or literary -- except in set phrases like há de ("shall / will eventually"). Learners who know other Romance languages sometimes import haver and produce sentences that feel decades out of date.

❌ Hei falado com ele muitas vezes.

Incorrect in modern EP -- sounds archaic or hyper-literary.

✅ Tenho falado com ele muitas vezes.

I have been speaking with him many times.

❌ Havemos trabalhado muito este ano.

Incorrect for the compound perfect in everyday EP.

✅ Temos trabalhado muito este ano.

We have been working a lot this year.

Why

Historically, Portuguese (like Spanish) used haver for the compound tenses. Over the centuries, European Portuguese shifted almost entirely to ter, reserving haver for existential uses (há um problema, "there is a problem"), obligation constructions (hei de ir, "I shall go"), and a few archaic literary uses. In 2026, hei falado in conversation would be heard as a learner's error or as deliberately old-fashioned writing. Default to ter in every compound tense, every time. (Spanish speakers, this is especially worth rewiring: Spanish has kept haber as the auxiliary, but Portuguese has not.)

Mistake 6: Confusing the composto with the pluperfect

The pluperfect -- tinha falado -- looks structurally similar to the composto (tenho falado), but it locates the action before another past point, not up to the present. Learners sometimes blur the two, especially when narrating.

Quando cheguei, tenho falado com ele.

Incorrect -- the action is past relative to the arrival, not ongoing to now.

✅ Quando cheguei, já tinha falado com ele.

When I arrived, I had already spoken with him.

❌ Antes de ir para a universidade, tenho trabalhado num café.

Incorrect -- past-before-past takes the pluperfect.

✅ Antes de ir para a universidade, tinha trabalhado num café.

Before going to university, I had worked at a cafe.

Why

The composto anchors in now. The pluperfect anchors in then -- some past reference point. Compound tenses in Portuguese use ter as the auxiliary, and the tense of ter tells you where the action sits on the timeline. Present tenho → up to now (composto). Imperfect tinha → up to a past point (pluperfect). If you need the action to sit before another past event, swap tenho for tinha. See Mais-que-Perfeito Overview for a fuller treatment.

💡
A quick diagnostic: is the reference point "now" or "some moment in the past story"? Now → composto with present tenho. Past moment → pluperfect with imperfect tinha. Everything else follows from that choice of auxiliary.

Mistake 7: Importing English "have done" too freely

This is the subtlest mistake because the English present perfect feels like it should have a direct Portuguese equivalent. It does not. English "have + past participle" is a grab-bag that covers life experiences, recent completions, ongoing states, and iterative patterns. Portuguese distributes that work across three different tenses: the simple preterite, the present indicative with desde/há, and the composto.

❌ Tenho visitado Portugal três vezes.

Incorrect -- a finite count of life experiences takes the preterite.

✅ Já visitei Portugal três vezes.

I have visited Portugal three times.

❌ Tenho nunca estado no Japão.

Incorrect -- experience questions take the preterite.

✅ Nunca estive no Japão.

I have never been to Japan.

❌ Tenho acabado de chegar.

Incorrect -- recent completion is *acabar de*, not the composto.

✅ Acabei de chegar.

I've just arrived.

Why

The "have done" instinct is a reliable trap because it asks English speakers to transfer one tense into three different structures. The cure is to stop thinking of the composto as the Portuguese present perfect at all, and start thinking of it as the Portuguese "have been -ing." That remapping cuts the error rate dramatically. Then:

  • English "have done [once / already / ever]" → Portuguese simple preterite
  • English "have done [for X time / since X]" → Portuguese present indicative + desde / há
  • English "have been doing [lately / recently]" → Portuguese composto
💡
The most valuable single insight for English speakers: tenho falado translates as "I have been speaking (lately, repeatedly)," not "I have spoken." If the best English version of your sentence is a simple past or a stative present perfect, the Portuguese composto is almost certainly the wrong choice.

A final diagnostic checklist

Before committing to tenho + participle, mentally run through these four questions. If any answer is "no," choose another tense.

  1. Does the sentence describe a pattern of repeated events or a continuous state, not a single event?
  2. Is the window in which it is happening still open -- does it include today?
  3. Does the activity have a recent starting point (days, weeks, maybe a few months, not decades)?
  4. Is there an implicit expectation that it continues, at least for a little while?

If yes to all four, the composto is right. If no to any one, a different tense is right. This tiny checklist catches the vast majority of learner mistakes before they leave the mouth.

Common Mistakes

❌ Tenho ido a Paris no ano passado.

Incorrect -- closed past window with composto.

✅ Fui a Paris no ano passado.

I went to Paris last year.

❌ Tenho morado em Coimbra desde 2010.

Incorrect for continuous residence.

✅ Moro em Coimbra desde 2010.

I have lived in Coimbra since 2010.

❌ Já tenho terminado o livro.

Incorrect -- *já* plus single completion takes the preterite.

✅ Já terminei o livro.

I have already finished the book.

❌ Hei escrito muitos emails hoje.

Incorrect -- *haver* is archaic and *hoje* is bounded.

✅ Escrevi muitos emails hoje.

I've written a lot of emails today.

❌ Tenho acabadas as tarefas.

Incorrect -- no participle agreement in the composto.

✅ Tenho acabado as tarefas no prazo.

I have been finishing tasks on time (lately).

❌ Quando cheguei, tenho comido.

Incorrect -- past-before-past takes the pluperfect.

✅ Quando cheguei, já tinha comido.

When I arrived, I had already eaten.

Key Takeaways

  • The composto does not mean "have done." It means "have been -ing, over a recent open window, presumed to continue."
  • No specific past time marker (ontem, em 2020, há duas horas) ever coexists with the composto.
  • "Since / for X time" takes the present tense with desde or , not the composto.
  • and ainda não almost always take the preterite, not the composto.
  • The participle in the composto is invariable. Do not make it agree with the object.
  • The auxiliary is ter, never haver, in modern European Portuguese.
  • Tenho anchors in the present (composto); tinha anchors in the past (pluperfect).

For the positive definition of when the composto is right, see Repeated or Ongoing Actions Up to Now. For the Spanish-speaker trap in particular, see Portuguese vs Spanish Present Perfect.

Related Topics