All three mark information you’re taking in right now, as opposed to something you already knew. -네요 (-neyo) is the everyday spoken one. -군요 (-gunyo) sounds bookish. -구나 (-guna) is the 반말 version and is extremely common.
Learners meet all three in the same chapter, conclude they’re interchangeable, and then use -군요 in conversation for a year while people quietly find it odd.
Side by side
비 오네요 (bi oneyo), “oh, it’s raining.” You just looked outside. Warm, spoken, normal.
비 오는군요 (bi oneun-gunyo), same information, but you sound like a character in a period drama.
비 오는구나 (bi oneun-guna), same again in 반말. To yourself, or to a friend.
잘하시네요 (jalhasineyo), “you’re good at this.” Noticing someone’s skill.
그렇군요 (geureoteun-gunyo), “I see.” The one -군요 form that’s genuinely common in speech, mostly as an acknowledgment token.
아 그렇구나 (a geureoguna), the 반말 version of the same, and one of the highest-frequency phrases in casual Korean.
What the ending is doing
Compare 비 와 (bi wa, “it’s raining”) with 비 오네 (bi one).
The first reports a fact. The second reports a discovery. It encodes that this is new to you as you say it, which makes the whole thing evidentiality rather than politeness or tense: you’re marking how you came to know the thing.
English does this with intonation and with “oh.” Korean does it with a suffix, so you can’t skip it. Leaving it off makes you sound like you already knew, which is occasionally rude and often just flat.
The attachment rule that trips people
-네요 attaches straight to the verb stem. 오네요, 좋네요, 크네요. No complications.
-군요 needs -는 in front of it on action verbs but not on adjectives:
- 오는군요, action verb, needs 는
- 춥군요, adjective, no 는
-구나 follows the same pattern: 오는구나 versus 춥구나.
That asymmetry is a real stumbling block, and it’s the practical reason to learn -네요 first. It has no such rule.
Where each one belongs
-네요 is your default for spoken Korean in 존댓말.
-군요 belongs in written Korean, formal speech, or deliberate performance. In casual conversation it reads stiff, and with the wrong tone it reads sarcastic, the way overly formal English can. 그렇군요 is the exception, having fossilized into a normal acknowledgment.
-구나 is 반말: self-directed observations, plus speech to close friends or juniors. Never upward.
-네 is the 반말 version of -네요 and is also extremely common. 비 오네.
My recommendation is narrower than most textbooks give: learn -네요 and -구나 properly, recognize -군요 in reading, and mostly leave it alone in speech apart from 그렇군요. Textbooks present the three as a neat set because they pattern together morphologically, and their frequency in actual speech is nothing like equal.
One register warning
-네요 as a compliment to someone senior can backfire. 잘하시네요 to your boss is grammatically polite and pragmatically odd, because noticing that someone is good at something implies you were assessing whether they were.
This isn’t a hard prohibition and plenty of people say it. If you want to compliment upward with less exposure, 대단하십니다 or a straightforward 감사합니다 carries less.
Pronunciation
-네요 is [ne-yo], straightforward. -군요 comes out as [gun-yo] though the ㄴ and ㅇ boundary often blurs toward [gu-nyo]. -구나 is [gu-na].
그렇군요 is the one with real sound change: [geu-reo-kun-yo]. The ㅎ in 그렇 fuses with the following ㄱ to make an aspirated k, which the spelling completely hides. Same thing in 그렇구나, which becomes [geu-reo-ku-na].
Romanized you’ll see -neyo, -gunyo and -kunyo, -guna and -kuna.
The 잘하시네요 warning is where I’d most expect to be overcautious. If you’ve said it to a boss or a professor and it passed without a ripple, I’d like to hear the setup, especially whether you were praising something inside their job or outside it. My suspicion is that the line falls there rather than on the ending.