One rule covers almost everything. Take the verb stem, add 았 if its final vowel is ㅏ or ㅗ, 었 for every other vowel, and 였 for 하다 verbs, then attach the ending. 먹다 becomes 먹었어요, 살다 becomes 살았어요, 공부하다 becomes 공부했어요. Adjectives follow the identical rule, because in Korean they conjugate like verbs.
Korean past tense is one of the few places in the language where a single rule really does do most of the work. The trouble learners hit is not the rule, it is everything sitting on top of it: contractions that look like exceptions and are not, a copula that behaves differently from real verbs, and seven irregular families that reshape the stem before the rule even applies. Take them in that order and the whole thing settles in an afternoon.
Step 1: find the stem
Every Korean verb in the dictionary ends in 다. Remove it and what remains is the stem.
| Dictionary form | Stem | Meaning |
|---|---|---|
| 먹다 | 먹 | to eat |
| 가다 | 가 | to go |
| 읽다 | 읽 | to read |
| 좋다 | 좋 | to be good |
That last one is an adjective, and it is in the table on purpose. Korean adjectives are technically descriptive verbs and take exactly the same endings, which means learning past tense once covers both. This is one of the genuine simplicities of Korean and worth appreciating early.
Step 2: check the stem's final vowel
| Final vowel of the stem | Past marker | Example |
|---|---|---|
| ㅏ | 았 | 살다 → 살았어요 |
| ㅗ | 았 | 좋다 → 좋았어요 |
| anything else | 었 | 먹다 → 먹었어요 |
| 하다 verbs | 였 | 하다 → 했어요 |
This is vowel harmony, the same principle that runs through the present tense endings, so if you already know -아요 against -어요 you have effectively already learned this. The 하다 case looks like an exception and is really a contraction: 하 plus 였 gives 했, and nobody writes the long form.
Step 3: the contractions
When the stem ends in a vowel, the stem vowel and the past marker collide and merge. This is where learners think they have found exceptions. They have not, they have found the only place Korean refuses to let two vowels sit next to each other.
| Verb | What you would expect | What Korean says |
|---|---|---|
| 가다 (to go) | 가았어요 | 갔어요 |
| 오다 (to come) | 오았어요 | 왔어요 |
| 보다 (to see) | 보았어요 | 봤어요 |
| 주다 (to give) | 주었어요 | 줬어요 |
| 배우다 (to learn) | 배우었어요 | 배웠어요 |
| 마시다 (to drink) | 마시었어요 | 마셨어요 |
| 되다 (to become) | 되었어요 | 됐어요 |
Two footnotes. 보았어요 and 되었어요 are both acceptable in writing, so you will meet them, but in speech the contracted forms are overwhelmingly what you hear. And 가았어요 is not merely unusual, it is wrong, because identical vowels must merge.
The past of 이다
The copula, meaning "to be" in the sense of identity, behaves on its own terms and depends on whether the noun in front of it ends in a consonant or a vowel.
| Noun ends in | Form | Example |
|---|---|---|
| consonant | 이었어요 | 학생이었어요 (I was a student) |
| vowel | 였어요 | 의사였어요 (I was a doctor) |
The negative is a separate word: 아니었어요, from 아니다. 학생이 아니었어요 means I was not a student, and note the subject particle 이 that 아니다 takes with it.
Formal past: -았/었습니다
Everything above uses the polite -어요 ending, which is what you want for most situations. The formal ending swaps in without changing the past marker at all.
| Polite | Formal | English |
|---|---|---|
| 먹었어요 | 먹었습니다 | I ate |
| 갔어요 | 갔습니다 | I went |
| 했어요 | 했습니다 | I did |
And for the casual form used with close friends, simply drop the 요: 먹었어, 갔어, 했어. Three registers, one past marker underneath all of them.
The irregular families
These are the verbs where the stem changes before the rule applies. They are not random. Each family behaves consistently, and between them they cover a large share of the most common verbs in the language, so learning the families is far cheaper than learning the words one by one.
| Family | What happens | Example |
|---|---|---|
| ㅂ | ㅂ becomes 우 before a vowel | 덥다 → 더웠어요 (it was hot) |
| ㄷ | ㄷ becomes ㄹ before a vowel | 듣다 → 들었어요 (I heard) |
| ㅅ | ㅅ drops before a vowel | 짓다 → 지었어요 (I built) |
| 르 | 르 becomes ㄹㄹ | 모르다 → 몰랐어요 (I did not know) |
| ㅡ | the ㅡ drops out | 바쁘다 → 바빴어요 (I was busy) |
| ㅎ | ㅎ drops and the vowel shifts | 그렇다 → 그랬어요 (it was like that) |
| ㄹ | ㄹ stays in the past, drops elsewhere | 살다 → 살았어요 (I lived) |
The ㅡ family deserves a second look because it catches everyone. 쓰다 (to write) becomes 썼어요, and 예쁘다 (to be pretty) becomes 예뻤어요. The rule is that when ㅡ vanishes, the syllable before it decides the harmony, which is why 바쁘다 takes 았 and 예쁘다 takes 었.
The ㄹ family is in the table mostly as reassurance. In the past tense nothing happens to it at all. It only misbehaves in front of certain other endings, which is a different lesson.
Negative past
| Korean | Romanization | English |
|---|---|---|
| 안 갔어요 | an gasseoyo | I did not go. (short form, most common) |
| 가지 않았어요 | gaji anasseoyo | I did not go. (long form, slightly more formal) |
| 못 갔어요 | mot gasseoyo | I could not go. (inability, not choice) |
The distinction between 안 and 못 is worth getting right early, because it carries real meaning. 안 갔어요 says you chose not to. 못 갔어요 says something stopped you. In English both collapse into "I did not go," which is why learners under use 못 for years.
Note also that the past marker attaches to the verb, never to 안 or 못. There is no such thing as 안았 갔어요.
The double past: -었었-
Korean can stack a second past marker, and it is not simply emphasis. It pushes the event further away and signals that the state no longer holds.
| Korean | Reading |
|---|---|
| 한국에 살았어요 | I lived in Korea. (a fact about the past) |
| 한국에 살았었어요 | I used to live in Korea. (clearly over, some time ago) |
Use it sparingly. Learners who discover it tend to apply it everywhere, and in most sentences the plain past is what a Korean speaker would say.
Three mistakes worth checking yourself for
- Attaching the past marker to the ending instead of the stem. It is 먹었어요, never 먹어요았. The past sits between stem and ending, always.
- Forgetting that adjectives take it too. "It was pretty" is 예뻤어요, not a construction with 이었어요. Only real nouns use the copula.
- Using the past marker inside a noun modifier. To say "the food I ate," Korean uses the past modifier -(으)ㄴ, giving 먹은 음식, not 먹었는 음식. Modifiers have their own tense system.
Korean past tense in one glance
- Stem + 았 for ㅏ/ㅗ, 었 for everything else, 였 for 하다.
- Vowel final stems contract: 가 → 갔, 오 → 왔, 주 → 줬.
- Adjectives conjugate exactly like verbs.
- 이다 gives 이었어요 after a consonant, 였어요 after a vowel.
- Formal is -았/었습니다. Casual drops the 요.
- Seven irregular families reshape the stem first.
- 안 is choice, 못 is inability.
Conjugation becomes automatic through spaced repetition, not memorisation
You will not fix irregular verbs by reading a table twice. Hanguljo carries the full TOPIK 1 to 6 grammar bank with worked examples, then hands each point to a 7 stage SRS engine that brings it back on the day you were about to lose it. Foundation lessons teach Hangul and pronunciation with native audio first, so batchim and liaison are built in, and the conversation track adds full dialogues with play along highlighting and shadowing practice with your own microphone.
Learn Korean with Hanguljo - FreeFrequently asked questions
How do you make the past tense in Korean?
Stem plus 았 when the stem's last vowel is ㅏ or ㅗ, 었 otherwise, and 였 for 하다 verbs, then the ending. 먹다 → 먹었어요, 살다 → 살았어요, 하다 → 했어요.
Why is 가다 not 가았어요?
Because identical vowels must merge. 가 plus 았 contracts to 갔. The same happens with 오다 → 왔어요 and 보다 → 봤어요.
What is the past tense of 이다?
이었어요 after a consonant, as in 학생이었어요, and 였어요 after a vowel, as in 의사였어요.
What is the difference between 갔어요 and 갔었어요?
갔어요 is the plain past. 갔었어요 pushes the event further away and signals that the state is definitively over.
How do you make a negative past sentence?
Put 안 before the verb, or use the long form -지 않았어요. For inability rather than choice use 못. The past marker always attaches to the verb.