Audiences appear to like characters with grey shades.
But it can get quite tricky.
If you carry it too far or miss a nuance, the audience can get totally turned off.
That's why it's see nice to see actors get their flawed characters right from time to time.
Joginder Tuteja looks at 10 flawed characters through the years -- and we're not talking villains here -- and how successful they have been at the box office.
Aamir Khan, Dangal
Box office collections: Rs 387.38 crore
He could not fulfill his dream of become a champion wrestler, so he forced his daughters to do it.
Aamir's Haryanvi wrestler in Dangal, inspired from a true life story, turned out to be a major success, thanks to its inspirational theme and happy ending.
Ranbir Kapoor, Sanju
Box office collection: Rs 342.53 crore
Real life people are rarely flawless, and that was proved in the Sanjay Dutt biopic, Sanju.
Women, drugs and alcohol, Dutt did it all, and while Director Rajkumar Hirani was accused of whitewashing the titular character, he still wasn't perfect.
Shahid Kapoor, Kabir Singh
Box office collections: Rs 275 crore and counting
Shahid's character in Kabir Singh is probably one of the most discussed characters in Hindi cinema.
Some have loved him while others have hated him.
But almost *no one* has ignored him.
That's what has made Kabir Singh Shahid's biggest solo hit till date.
Ranveer Singh, Simmba
Box office collection: Rs 240.31 crore
He may have had a heart of gold, but Ranveer's Simmba took bribes from the bad and scared away the good.
He only thought about himself.
In the world created by Rohit Shetty, Ranveer pretty much lived the part of a corrupt cop, who eventually stood up for what was right.
Vidya Balan, The Dirty Picture
Box office collection: Rs 80 crore
Bollywood's heroines are always shown to be righteous, but Vidya broke the rules when she played Silk Smitha in The Dirty Picture.
Producer Ekta Kapoor and Director Milan Luthria backed her up, as she showed us a world many would not agree with, and yet, provided 'entertainment, entertainment and entertainment'.
Dhanush and Sonam Kapoor, Raanjhanaa
Box office collection: Rs 60 crore
When it comes to love, there cannot be any boundaries.
That's what Dhanush thought in Aanand L Rai's romantic drama. The simpleton crossed all limits when it came to getting the love of his life, played by Sonam.
Even Sonam's character came with grey shades, making this love story as beautiful as it was sad.
Shah Rukh Khan, Don
Box office collection: Rs 50 crore
Shah Rukh started his career playing flawed characters in films like Baazigar, Darr and Anjaam, and making audiences fall in love with him.
After turning romantic hero, he showed off his mean streak yet again in Don.
He was ruthless and yet, so charming.
Emraan Hashmi, Jannat
Box office collection: Rs 32 crore
Emraan has enjoyed played characters with grey shades from his first film Footpath to his latest release, Why Cheat India.
The one that audiences seemed to love him in the most was Jannat, where he played a match fixer.
Akshay Kumar, Ajnabee
Box office collection: Rs 17 crore
What we remember most about Ajnabee is Akshay's indecent proposal of swapping wives, and then dancing to Mehbooba Mehbooba with Bipasha Basu.
And of course, that naughty grin.
Audiences knew he was moralistically wrong and still loved him.
Sanjay Dutt, Khalnayak
Box office collection: Rs 10 crore
'Jee haan, main hoon khalnayak.'
More than an announcement, it was a challenge.
Subhash Ghai created a villainous character for Sanjay Dutt in Khalnayak, who didn't mind wooing a woman (Madhuri Dixit), who was already someone's (Jackie Shroff) beloved.
Yet, it made audiences love him and the film was a huge success.