We use SO when we want to emphasize something, usually in a positive way.
For example, She has so many friends! / I love him so much! / It was so great! / This is so cool!.
However, we can also use SO when we want to emphasize something in a negative way....
For example, You are so wrong! / This is so terrible!
We also use SO with a following action or consequence.
For example, He was so late, he missed the train. / She was so hungry she ate two plates of food. / The road was so slippery that many cars went in the ditch.
Be careful! You can’t use SO before an adjective and noun. Use SUCH.
For example: X [She is so good person] √ She is such a good person! / This is such a big house!
Use SO MANY (countable) or SO MUCH (non-count) before nouns.
For example, She has so many friends. / There is so much snow on the road!
TOO is used to emphasize a negative idea or situation. In this case, TOO indicates that something is past the limit of acceptance.
For example, There is too much traffic! / This box is too heavy! / I have too much homework! / My girlfriend has too many shoes, there is no more room in her closet! / He was too late for his class.
You would never hear someone say “I have too much money” (that would be a good problem)
There are some slang expressions that contradict these rules. For example, You are too funny! You are too nice!
You have a choice in some situations.
This swimming pool is TOO shallow. [complete thought expressing a problem or negative observation]
This swimming pool is SO shallow! [complete thought expressing surprise]
This swimming pool is SO shallow [THAT] we cannot dive in it. [use SO /THAT when you want to add more information, a consequence or related idea] [THAT] is optional
TOO can be used like ALSO but is generally placed at the end of a sentence.
For example, I have a big brother too! / We went to that movie too! / Me too!
TOO can be placed at the beginning of the sentence after the subject or subject pronoun.
For example, They, too, had blood on their clothes. / John, too, had given up.