Modal verbs in the past: what should have been, could have been, must have been
Spanish forms modal perfects by putting the auxiliary in the conditional and adding haber + participle: could have, should have, must have (past).
debería haber + pp → should have (past): Debería haber llamado. (I should have called.)
podría haber + pp → could have: Podrías haber avisado. (You could have warned us.)
habría podido + inf → could have (alt.): Habría podido ganar. (He could have won.)
The preposition de changes meaning: obligation vs deduction.
debería haber + pp = should have (obligation not fulfilled)
debe de haber + pp = must have (logical deduction about past)
Deberías haber llegado antes. (You should have arrived sooner.)
Debe de haber llegado ya. (He must have already arrived.)
Two equivalent structures for "could have":
podría haber + pp: Podría haber ganado. (He could have won.)
habría podido + inf: Habría podido ganar. (same meaning)
Both forms are equally valid — choose one per sentence.
Note: Podría haberlo hecho — the object pronoun goes on haber or the infinitive.
For logical deduction about past events, use deber de haber + pp or the more colloquial tener que haber + pp.
Debe de haber salido ya. (He must have left already.)
Tiene que haber sido un error. (It must have been a mistake.)
Han debido de olvidarlo. (They must have forgotten it.) — alternative order
Avoid English-influenced errors with modal perfects.
Never: *debería de haber (mixing obligation with deduction marker)
Never: *podría de haber (de does not go with poder)
Colloquial: Tendría que haberlo visto. (You should have seen it!) — surprise/regret
Traps for English speakers
These are the errors English speakers make most often.