The road starts at the Redhouse roundabout to the North of Kirkcaldy as a short stretch of dual-carriageway which ends at the A915 roundabout, before heading southwest towards the coast, bypassing Dysart, and a roundabout with the A955. From here, the former A92 was formerly the High Street and Links Street, but now the A921 follows the Promenade, part dual-, part single-carriageway.
At a roundabout with the B9157 (former A907) the A921 turns left and continues along the coast, as does the railway line which is crossed a number of times. The road follows the coast through Kinghorn to Burntisland, where it doubles back on itself at a mini-roundabout (the coast road has always done this - although the road ahead used to be the A909 this only went as far as the docks and the ferry across the Forth).
The next town to the west is Aberdour, after which the A921 meets the B9157 again at a roundabout, then acts as a by-pass, more by default than design, around Dalgety Bay before turning onto a genuine bypass of Inverkeithing (the A92 ended in the town centre on the A90 (now B981)). After running along what was the eastern end of the A985 past some industrial units the road meets the current route of that road and the A90 at M90J1.
A single map - an OS 1:10000 sheet from the late 1980s - shows the A921 on a different route between Burntisland and Kinghorn. This map shows the A921 entering Burntisland from the west along the former A92, Aberdour Road, as it does now. However, instead of taking the current route through the town centre, which is shown as the A909, connecting with the spur in the harbour, the A921 then follows the B923 route east towards Kinghorn. The rest of the former A92 route is left unnumbered. Unfortunately, a corresponding sheet covering Kinghorn has not yet been identified.
It is not clear if the situation shown on this map was ever genuinely the case, or if it is a mapping error, perhaps arising from a misunderstanding at the time that the new A92 route was opened.