There is no obligation on a company to promote an employee, no matter how many years he or she has worked for. Getting promoted is a function of a lot of factors and differs from case to case. In general, promotion depends on 2 factors- Performance and Behavior. And you should be good at both to get recognized and promoted. Look at the 4 types of employees that make every company’s culture and how companies look at them. The rule of thumb is to talk directly to your boss or manager, and understand where he/she believes you lacked. Some of you may not feel comfortable having this discussion, but this is often the best way to solve this problem. The advantage of such discussions is that they will often uncover what are called blind spots. Blind spots are problems/habits you never knew about. It can be eye-opening and will give you benefits in the long run, as you get to know yourself better. Another possibility is that after the discussion with your boss, you get to know that your performance and behavior were good enough, but there was some other factor which has influenced his/her decision. In such a case, it is not a bad idea to start looking for opportunities outside. Sometimes companies do not value an employee till the time he/she decides to leave. However, always have a valid and genuine reason for leaving, your next employer is definitely going to ask you for it.