-ㄴ/은 적이 있다 / 없다 — Korean's experiential perfect
Use -ㄴ/은 적이 있다 to say you've ever done something, and -ㄴ/은 적이 없다 to say you've never done it. The structure is: past modifier (-ㄴ/은) + the noun 적 ('time / occasion') + 이 있다 / 없다 ('there is / isn't'). Literally: 'There exists a time when I did X.' 한국에 가 본 적이 있어요 = 'I've been to Korea (at least once).' 본 적이 없어요 = 'I've never seen it.' This is different from a simple past: simple past 갔어요 ('I went') reports a specific event; 간 적이 있어요 ('I have gone') reports the experience as something on your résumé of life. English's 'have you ever / I've never' is the closest match.
How to form it
Take the verb's past modifier: 가다 → 간, 먹다 → 먹은, 만들다 → 만든, 공부하다 → 공부한. Then add 적이 있어요 ('have done') or 적이 없어요 ('have never done'). 간 적이 있어요 = 'I have been (there).' 먹은 적이 없어요 = 'I have never eaten (it).' For 'have you ever ~?' just add a question mark and rising intonation: 먹은 적이 있어요? = 'Have you ever eaten it?' The 이 marker is sometimes dropped in casual speech: 간 적 있어 instead of 간 적이 있어. Both are acceptable.
-아/어 본 적이 있다 — 'tried' nuance
Korean often pairs this with -아/어 보다 ('try doing'), giving -아/어 본 적이 있다. Literally 'have a time of having tried to V'. 먹어 본 적이 있어요 = 'I've tried eating (it before).' 김치를 먹어 본 적이 있어요? = 'Have you ever tried kimchi?' This is the most natural way to ask about food, places visited, or activities sampled: 제주도에 가 본 적이 있어요 = 'I've been to Jeju (at least once).' 번지점프를 해 본 적이 없어요 = 'I've never tried bungee jumping.' For mundane verbs without the 'try' nuance (자다 = 'sleep'), drop the -아/어 보 part: 자 본 적이 있어요 sounds odd, 잔 적이 있어요 is fine.
vs. simple past
갔어요 = 'went' (a specific event, often recent or mentioned earlier). 간 적이 있어요 = 'have gone (at some point in life).' Use -ㄴ/은 적이 있다 when the time isn't specified or doesn't matter — you're tallying experience. Use simple past for specific times: 어제 갔어요 ('went yesterday'), not 어제 간 적이 있어요 (sounds wrong — you don't 'have an experience of going yesterday' with this phrasing). Words like 한 번 ('once'), 두 번 ('twice'), 여러 번 ('several times'), 자주 ('often') pair naturally: 한국에 두 번 간 적이 있어요 = 'I've been to Korea twice.'
Negation — never vs. didn't
-ㄴ/은 적이 없다 = 'have never (done)' — universal negation across time. 간 적이 없어요 = 'I have never been.' This is stronger than simple 안 갔어요 ('didn't go', a specific occasion). Useful contrast: "어제 간 적이 없어요" sounds wrong; you'd say "어제 안 갔어요" for 'I didn't go yesterday'. Reserve -ㄴ/은 적이 없다 for sweeping 'never in my life' statements: 거짓말한 적이 없어요 = 'I've never lied.' Common pairing: 한 번도 ~ 적이 없다 = 'never even once': 한 번도 본 적이 없어요 = 'I've never seen it, not once.'
Time-frame restrictions
You CAN restrict the experience to a window: 작년에 한국에 간 적이 있어요 = 'I went to Korea (at some point) last year.' Here 작년에 sets the bracket; the experience is still being reported as 'I have' rather than 'I went on a specific day'. But avoid 어제 / 오늘 아침 type narrowly-specific times — those naturally take simple past. Pairs with before: 전에 = 'previously / before': 전에 본 적이 있어요 = 'I've seen it before.' Common opener: 혹시 ~ 적이 있어요? = 'Have you, by any chance, ever ~?'
Frequency words that go with this pattern
한 번 ('once'), 두 번 ('twice'), 세 번 ('three times'), 여러 번 ('several times'), 많이 ('a lot'), 가끔 ('sometimes'), 자주 ('often'), 한 번도 ('not even once', with negative): all pair freely. 여러 번 들어 본 적이 있어요 = 'I've heard it several times.' 자주 간 적이 있어요 is acceptable but 자주 갔어요 ('I used to go often') is more natural — for habitual past, simple past or -곤 했다 is better than experiential -ㄴ 적이 있다.
