The main rule
Form: he, has, ha, hemos, habéis, han + participle (-ado or -ido). The participle never changes for gender or number, and nothing goes between haber and the participle: Ya he comido or He comido ya, never *He ya comido. Use it for experiences up to now and, in most of Spain, for today, this week and this year.
Forms: haber + participle
| Person | Haber | Example |
|---|---|---|
| I | he | he hablado |
| you (tú) | has | has comido |
| he, she, you (usted) | ha | ha hablado |
| we | hemos | hemos comido |
| you all (vosotros, Spain) | habéis | habéis hablado |
| they, you all (ustedes) | han | han comido |
In Spain, vosotros habéis is the plural "you" for friends and family, and ustedes han the polite one. In Latin America, ustedes han is the only plural "you".
Building the participle
| Ending | Infinitive | Participle |
|---|---|---|
| -ar | hablar | hablado |
| -er | comer | comido |
| -ir | vivir | vivido |
| -er / -ir after a vowel | leer, oír, traer | leído, oído, traído |
| Infinitive | Participle | Example |
|---|---|---|
| hacer | hecho | Ana ha hecho la cena. |
| decir | dicho | Pablo ha dicho la verdad. |
| ver | visto | ¿Has visto esta película? |
| escribir | escrito | Lucas ha escrito una carta. |
| poner | puesto | He puesto la mesa. |
| volver | vuelto | Marta ha vuelto de Bogotá. |
| abrir | abierto | Hemos abierto la ventana. |
| romper | roto | He roto un vaso. |
| morir | muerto | La planta ha muerto. |
| ser, estar, ir, tener | sido, estado, ido, tenido | He sido profesor. He estado en Lima. |
Word order and agreement
English puts adverbs between the two verbs: "I have already eaten", "I have never been". Spanish keeps haber and the participle together. Put ya, nunca, todavía before haber, or after the participle: Ya he comido / He comido ya; Nunca he estado / No he estado nunca; Todavía no he terminado / No he terminado todavía. No goes before haber: No he comido. A reflexive pronoun also goes before it: Me he levantado tarde.
The participle does not agree with the subject, unlike an adjective: Ana ha llegado, Las niñas han comido.
Experiences: where English and Spanish match
Like the English present perfect, the Spanish one links the past with now. It works for experiences in your life with alguna vez (ever) and nunca (never), and for ya (already) and todavía no (not yet, also aún no). "I have been to Rome" is He estado en Roma, with estar: never *He sido en Roma. The usual question is ¿Has estado alguna vez en...?, and the short answers are Sí, una vez. and No, nunca.
Today and this week: Spain and Latin America
Here English and Spanish differ. In most of Spain, a period that is not over yet takes the perfect: hoy, esta mañana, esta semana, este año. English would use the simple past: Hoy he comido paella ("I had paella today"), Esta semana he trabajado mucho.
In most of Latin America, and also in the Canary Islands and parts of north-west Spain, the indefinido is usual there: Hoy comí paella, ¿Ya comiste? Both are standard and correct. For experiences up to now, the perfect is understood everywhere, though many Latin American speakers use the indefinido there too. For a closed time (ayer, la semana pasada, en 2019), speakers everywhere usually take the indefinido.
Examples
- Hoy he comido paella. I had paella today. (Spain)
- Esta semana he trabajado mucho. This week I have worked a lot.
- ¿Has estado alguna vez en México? Have you ever been to Mexico?
- -¿Has viajado en tren? -No, nunca. -Have you travelled by train? -No, never.
- Ya he terminado el trabajo. I have already finished the work.
- Todavía no han llegado mis padres. My parents have not arrived yet.
- Lucía ha escrito un mensaje a su madre. Lucía has written a message to her mother.
- ¿Habéis visto esta película? (friends in Madrid) Have you all seen this film?
A quick check
Say the English with "have" and move the adverb: "I have already eaten" becomes Ya he comido. If the English is "I have been to", use he estado en. And write the auxiliary as ha, never as the preposition *a.
Common mistakes
He ya comido.Ya he comido. / He comido ya. nothing between haber and the participleHe nunca estado en Cuba.Nunca he estado en Cuba. nunca goes before haberHe no visto a Pedro.No he visto a Pedro. no goes before haberHe sido en Roma.He estado en Roma. "been to" is estarAna ha llegada.Ana ha llegado. the participle does not agreeHe hacido, he escribido, he rompido, he volvido.He hecho, he escrito, he roto, he vuelto. irregular participlesAna a llegado.Ana ha llegado. ha with h, not the preposition a
Frequently asked questions
What is the difference between pretérito perfecto and indefinido?
The perfecto links an action to now: experiences up to now and, in most of Spain, today, this week or this year. The indefinido is for a closed past time: ayer, la semana pasada, en 2019.
Is "Hoy comí" wrong?
No. In most of Latin America, and also in the Canary Islands, Hoy comí paella is the normal sentence. In most of Spain, speakers say Hoy he comido paella. Both are standard.
Where does ya go in the present perfect?
Before haber or after the participle: Ya he comido or He comido ya. Never between them: *He ya comido.
How do you say "I have been to..." in Spanish?
Use estar: He estado en Roma. Using ser (*He sido en Roma) is a common English-speaker mistake; ser gives He sido profesor.
Does the participle change with the subject?
No. After haber it stays the same: Ana ha llegado, Las niñas han comido.
How do you say "not yet"?
Use todavía no or aún no before haber: Todavía no he terminado. You can also put todavía at the end: No he terminado todavía.