<p>What's the difference between <code>&lt;b&gt;</code> and <code>&lt;strong&gt;</code>, <code>&lt;i&gt;</code> and <code>&lt;em&gt;</code> in HTML/XHTML? When should you use each?</p>

```
<b>
```
and
```
<i>
```
are explicit - they specify bold and italic respectively.
```
<strong>
```
and
```
<em>
```
are semantic - they specify that the enclosed text should be "strong" or "emphasised" in some way, usually bold and italic, but allow for the actual styling to be controlled via CSS.  Hence these are preferred in modern web pages.