There are a number of reasons why companies like to keep salaries a secret. The competitor angle is one. A big one: The general rule is that the first one to offer a number loses. For example, if you tell me your salary range is $75k-$90k, I can feel pretty safe telling you that I'm looking for $105k but your company is so awesome that I might just be willing to give up a bit in exchange for $AWESOME_PERK. Thus disclosing what you're willing to pay in your job listing puts you at an immediate disadvantage when the negotiation comes up.