The B520 is a winding road in the east of County Tyrone. The mainline of the road was originally numbered A29 but gained its present number in the 1960s; the spur came later.
The road starts at a roundabout on the A29 to the south of Cookstown and heads south along Tullywiggan Road. It climbs steeply out of the valley of the River Ballinderry before skirting the eastern edge of the College of Agriculture, Food and Rural Enterprise. After a sharp left-right zigzag across the River Killymoon we briefly follow the valley upstream before bearing left to enter Tullyhoge. We zigzag through town and then continue southeastwards across the fields.
Presently a spur of the B160 turns off to the right, whilst we continue ahead to reach the mainline of that road on the near side of Stewartstown. The B520 is then the dominant number in a multiplex into the village centre. We run along the narrow West Street to reach the market square and a T-junction. Here the B160 turns left whilst we TOTSO right. Soon we turn sharply left to leave town.
Over half a mile later the B520 splits. The mainline continues ahead and winds into Coalisland. On the near side of town the B161 comes in from the left at a mini-roundabout. Some maps claim the road ahead is a spur of the A45 whereas others show the B520 continuing ahead into the town centre. We cross a mini-roundabout then follow a relief road bypassing Main Street, rejoining the "old" road at another mini-roundabout. We then leave town along Dungannon Road to reach what is definitely the A45 at a mini-roundabout.
The left fork at the split above is signed to the M1. It briefly runs parallel to the B520 mainline then continues ahead when that bears off. The B161 is crossed at a roundabout, after which we run through Annaghmore then go over the abandoned Coalisland Canal. The road bears round to the right and then ends at a T-junction on the A45.