The current day including the present moment; today
When to use
current date, today's schedule, today's weather
The nuance
Use 오늘 to refer to the current date including the present time; it never indicates past or future days.
오늘 (o-neul, oneul) · 어제 (eo-je, eoje) · 내일 (nae-il, naeil)
오늘 (oneul), 어제 (eoje), and 내일 (naeil) represent today, yesterday, and tomorrow respectively, and must be used precisely according to time context.

One lane per word — no nested boxes, just the gist.
The current day including the present moment; today
When to use
current date, today's schedule, today's weather
The nuance
Use 오늘 to refer to the current date including the present time; it never indicates past or future days.
The day before today; yesterday
When to use
past events, yesterday's experience, yesterday's date
The nuance
Use 어제 to indicate the day before today, referring to past events or experiences; never confuse with 오늘 or 내일.
The day after today; tomorrow
When to use
future schedule, tomorrow's appointment, tomorrow's plan
The nuance
Use 내일 to refer to the day after today, especially for future plans or scheduled events; do not confuse with past or present.
오늘 날씨가 정말 좋네요.
o-neul nal-ssi-ga jeong-mal joh-ne-yo., o neul nal ssi ga jeong mal joh ne yo.
오늘 refers to the current date, so it's correct for today's weather.
어제 날씨가 정말 좋네요.
eo-je nal-ssi-ga jeong-mal joh-ne-yo., eo je nal ssi ga jeong mal joh ne yo.
어제 indicates past date, so it's correct for yesterday's weather.
내일 날씨가 정말 좋네요.
nae-il nal-ssi-ga jeong-mal joh-ne-yo., nae il nal ssi ga jeong mal joh ne yo.
내일 refers to the future date, so it's correct for tomorrow's weather.
어제는 지금 이 순간을 말해요.
eo-je-neun ji-geum i sun-gan-eul mal-hae-yo., eo je neun ji geum i sun gan eul mal hae yo.
어제 means past, so it cannot mean 'the present moment'; use 오늘 instead.
내일은 어제보다 먼저입니다.
nae-il-eun eo-je-bo-da meon-jeo-ip-ni-da., nae il eun eo je bo da meon jeo ip ni da.
내일 is future and 어제 is past, so tomorrow cannot be before yesterday.
오늘은 내일보다 늦었어요.
o-neul-eun nae-il-bo-da neuj-eoss-eo-yo., o neul eun nae il bo da neuj eoss eo yo.
오늘 is present and 내일 is future, so today cannot be later than tomorrow.
어제 회의는 오늘 취소되었습니다.
eo-je hoe-ui-neun o-neul chwi-so-doe-eoss-seup-ni-da., eo je hoe ui neun o neul chwi so doe eoss seup ni da.
어제 refers to past meeting, 오늘 to current cancellation; time order is correct.
내일 시험이 어제 끝났어요.
nae-il si-heom-i eo-je kkeut-nass-eo-yo., nae il si heom i eo je kkeut nass eo yo.
내일 is future, so an exam scheduled for tomorrow cannot have ended yesterday.
When should you use 오늘?
Which sentence does NOT correspond to 어제?
Which sentence correctly uses 내일?
What does it mean?