Sanji is a slim, yet muscular, long-legged young man with blond hair and keeps his hair brushed over one side of his face. For the initial part of the series, this was the left side. Due to his left eye never being seen, many fans questioned whether he had one at all. In the manga it was usually covered one way or another, but is seen in the anime (Episodes 20, 21, 27, 82, and Movie 6 and 10 although usually very briefly and most likely due to animation errors). Later, after the two year timeskip, he switched his hairstyle so that it covers the right side. It also appears that Sanji's hair is less straight and scruffier after the timeskip.
Among Sanji's physical traits are his distinctive eyebrows. Both form a spiral but at different ends. His right eyebrow forms a spiral at the outer end, while his left eyebrow forms a spiral at the inner end; both resemble the numeral 6. This means his face is asymmetrical with the position of his eyebrow spirals. This, however, is not fully seen due to his hairstyle. He still gets very upset if somebody, typically Zoro, mocks him over the spirals. Though, on rare occasions, Sanji's other eye was seen in the anime, the spiral was never witnessed.
While Sanji's eyes usually seem black, he was depicted with grey-blue eyes in the anime at the beginning of Thriller Bark Arc.
Sanji almost always wears a black, double-breasted suit with a tie and a long-sleeved, buttoned shirt of varying colors, usually orange, blue, turquoise, or black, with or without pinstripes. His outfit changes on a more frequent basis than most of the crew.
During the Straw Hats' separation, Sanji was coerced into dressing as a typical okama, complete with a wig and heavy makeup, though reverts to his usual outfit and appearance sometime after that.
He also wears dress shoes, mostly for his Black Leg Style. These shoes are extremely durable, and were designed to increase the power of his attacks, though he can attack sufficiently without them as shown in his fight against Kuroobi. Sanji is also a chain-smoker, and is rarely seen without a cigarette.
After the Timeskip
After the two year timeskip, Sanji now covers his right eye, shows his left eye, and has grown his hair just slightly longer. He also sports a dark goatee, and stubble on his upper lip. Both his left and right eyebrow are curled to the right. Sanji's neck has gotten thicker as well, similar to Luffy and Zoro. He has grown taller, and therefore remains nearly the exact same height as Zoro. He wears a black and yellow 3-piece suit. In Punk Hazard, he wears a full black three-piece suit.
During the Dressrosa Arc, Sanji first wore a white dress shirt which he wore untucked, with a black tie, black trousers and a black, pinstriped waistcoat. Upon going incognito into Acacia, he wore a black double breasted suit, with a white shirt with the top button undone. In the anime he wears a blue tie as well. He also wore black glasses and a fake white beard and mustache. After being injured by Doflamingo, Sanji wore bandages around his chest and wore his shirt and suit jacket unbuttoned and over his shoulders.
After arriving on Zou, he sported a pair of sunglasses (with his hair still covering one of the glasses) an orange leather jacket, yellow trousers and a small backpack. He also slightly trimmed his beard. Later, he wore a black fur-trimmed coat over a dress shirt, and a beaded necklace.
During the Totto Land Arc, he wears a light colored, frilled dress shirt befitting the local style of clothing in Totland as well as his usual black dress pants and shoes. He keeps the collar of the shirt upturned and the first few buttons undone. He also has exploding wristlets fitted around his wrists by his sister Reiju in order to keep him from leaving Totto Land.