I start with 20%. If everything is average, thats where i'm at.
I go over 20% if I eat/drink what's on special - generally to 20% of whatever the regular price is. Also over 20% if the server is good or friendly or whatever.
If the tab is a bill, the difference between a shytty tip and a decent one is like $5. Not worth much to the customer, but if everyone did it, the server's night is different. If you can't deal with that difference, maybe just stay home.
I can't tell you the last time I had crappy service at a restaurant. My expectations must be low. I think I tipped 15% like six years ago, because my wife was annoyed with the server. So, she convinced me to tip lower than normal.