In standard southern BrE the vowels of GOOSE and GOAT begin with a central quality, but before /l/ in a syllable coda many speakers produce them as back vowels. To illustrate, here from the online Collins dictionary are food and fool, followed by their initial portions:
And here from the online Cambridge dictionary are code and coal, followed by their initial portions:
This backing of GOOSE and GOAT can be seen as the spreading of the coda-/l/’s darkness into the preceding vowel. The phenomenon is of phonological interest because many speakers maintain the backing even when suffixation makes the /l/ pre-vocalic. This means there’s a potential contrast between backed wholly (whole + ly) and non-backed holy, and between backed ruler (‘one who rules’, rule + er) and non-backed ruler (‘measuring stick’; the historic boundary in this word seems to be no longer transparent). To the extent that conditioning factors are lost, a split is considered to have occurred.
For some speakers, GOOSE and/or GOAT are actually replaced before coda-/l/ by the back vowels THOUGHT and LOT respectively. So for some speakers fool is identical with fall; likewise dole can be identical with doll. The audio for coal in the online Oxford Advanced Dictionary, for example, sounds to me very like a rhyme with doll:
Many speakers have not gone this far, and it’s a theoretical question whether these ‘intermediate’ speakers have extra vowels in their systems.
Transcription fans may be wondering how these sounds might be written down. Using the default transcription system of the CUBE dictionary, it’s fairly straightforward:
conservative (eg my own speech):
code kəwd, coal kəwl
food fʉwd, fool fʉwl
code kəwd, coal kɔl (rhymes with doll)
food fʉwd, fool foːl (= fall)
code kəwd, coal kɔwl
food fʉwd, fool fowl
It’s much harder to write these facts within the entrenched RP transcription system. The GOAT facts can be written using əʊ in code and ɒʊ for the backed variant in coal. But the backing of fool is impossible to indicate if, for the unbacked vowel of food, you cling to the IPA back vowel symbol uː. Actually pronouncing words like goose and food with fully back uː has not been mainstream for years: this was already being described by John Wells three decades ago as a feature of ‘Upper Crust’ (ie posh, old-fashioned) RP.
The GOOSE-backing facts themselves are widely known; John’s sorely missed blog featured this very nice post about them. But GOAT has tended to dominate discussion of backing. I suspect one of the reasons that GOOSE backing has been less discussed is that it forces you to grapple with the inaccurate and misleading nature of the established transcription. The Longman Pronunciation Dictionary, for example, indicates a vowel difference in code and coal but not in food and fool. The traditional symbols tend to push part of the phenomenon out of the picture.