# 2023–24 North Caledonian Football League

The 2023–24 North Caledonian Football League (known for sponsorship reasons as the Macleod & MacCallum North Caledonian League) was the 115th season of the North Caledonian Football League, and the third season as part of the sixth tier of the Scottish football pyramid system.
Invergordon won their seventh North Caledonian Football League title – and their second in three seasons; a 2–0 win over Inverness Athletic on 23 March 2024 gave them an unassailable seven-point lead over Loch Ness, with Loch Ness still having two games to play.

## Teams
### From North Caledonian Football League

Withdrew
* Nairn County 'A'

### Stadia and locations

| Team | Location | Home ground | Capacity | Seats | Floodlit |
| Alness United | Alness | Dalmore Park | 500 | 0 | Yes |
| Bonar Bridge | Bonar Bridge | Migdale Playing Fields | 500 | 0 | No |
| Clachnacuddin Reserves | Inverness | Grant Street Park | 2,074 | 154 | Yes |
| Fort William | Fort William | Claggan Park | 1,800 | 200 | Yes |
| Golspie Sutherland | Golspie | King George V Park | 1,000 | 0 | Yes |
| Halkirk United | Halkirk | Morrison Park | 1,000 | 0 | Yes |
| Invergordon | Invergordon | Recreation Grounds | 500 | 0 | No |
| Inverness Athletic | North Kessock | Ferry Brae Park | 500 | 0 | No |
| Loch Ness | Fortrose | King George V Park | 500 | 0 | No |
| Orkney | Holm | The Rockworks | 1,000 | 0 | No |
| St Duthus | Tain | Grant Park | 500 | 0 | No |
| Thurso | Thurso | Sir George's Park | 1,000 | 0 | No |

## League table

| Pos | Team | Pld | W | D | L | GF | GA | GD | Pts | Promotion or qualification |
| 1 | Invergordon (C) | 22 | 18 | 3 | 1 | 61 | 23 | +38 | 57 | Ineligible for the Highland League play-off |
| 2 | Loch Ness | 22 | 17 | 3 | 2 | 78 | 24 | +54 | 51 | |
| 3 | Halkirk United | 22 | 15 | 2 | 5 | 59 | 21 | +38 | 47 | |
| 4 | Golspie Sutherland | 22 | 14 | 1 | 7 | 56 | 42 | +14 | 43 | |
| 5 | Fort William | 22 | 13 | 2 | 7 | 61 | 37 | +24 | 41 | |
| 6 | St Duthus | 22 | 9 | 2 | 11 | 44 | 59 | −15 | 29 | |
| 7 | Inverness Athletic | 22 | 7 | 2 | 13 | 57 | 51 | +6 | 23 | |
| 8 | Orkney | 22 | 7 | 2 | 13 | 38 | 52 | −14 | 23 | |
| 9 | Clachnacuddin Reserves | 22 | 4 | 5 | 13 | 37 | 63 | −26 | 20 | Ineligible for promotion |
| 10 | Alness United | 22 | 5 | 4 | 13 | 42 | 68 | −26 | 19 | |
| 11 | Thurso | 22 | 5 | 1 | 16 | 25 | 81 | −56 | 16 | |
| 12 | Bonar Bridge | 22 | 4 | 1 | 17 | 28 | 65 | −37 | 13 | |
* ↑ Loch Ness deducted 3 points for fielding an ineligible player in their match on 19 August against Clachnacuddin Reserves.
* ↑ Clachnacuddin Reserves awarded 3 points, after Loch Ness fielded an ineligible player in their match on 19 August.

## Results

| Home \ Away | ALN | BON | CLA | FOW | GOL | HAL | INV | INA | LOC | ORK | STD | THU |
| Alness United | — | 3–2 | 2–2 | 1–4 | 2–6 | 1–3 | 2–4 | 1–2 | 3–3 | 3–3 | 5–1 | 3–1 |
| Bonar Bridge | 1–0 | — | 4–3 | 0–4 | 1–3 | 0–2 | 0–3 | 1–1 | 0–4 | 1–4 | 0–3 | 3–4 |
| Clachnacuddin Reserves | 0–2 | 7–3 | — | 2–3 | 0–2 | 1–7 | 0–1 | 2–4 | 1–7 | 6–1 | 4–4 | 1–0 |
| Fort William | 8–3 | 4–1 | 1–1 | — | 3–1 | 0–4 | 3–4 | 2–0 | 2–5 | 7–1 | 0–1 | 7–0 |
| Golspie Sutherland | 3–2 | 4–1 | 3–0 | 1–1 | — | 0–5 | 2–4 | 4–2 | 0–3 | 1–0 | 2–0 | 3–1 |
| Halkirk United | 0–2 | 3–0 | 4–0 | 1–0 | 2–1 | — | 0–0 | 2–0 | 0–1 | 6–1 | 5–0 | 2–0 |
| Invergordon | 3–0 | 3–2 | 3–0 | 3–0 | 0–3 | 1–1 | — | 4–2 | 4–4 | 2–1 | 3–0 | 4–0 |
| Inverness Athletic | 6–1 | 2–5 | 1–1 | 2–3 | 4–2 | 3–4 | 0–2 | — | 3–4 | 2–0 | 5–2 | 13–0 |
| Loch Ness | 7–0 | 3–1 | 5–0 | 3–0 | 6–2 | 3–0 | 0–3 | 2–0 | — | 2–0 | 4–2 | 7–0 |
| Orkney | 3–3 | 1–0 | 0–1 | 1–2 | 0–1 | 2–1 | 2–3 | 4–2 | 0–3 | — | 5–3 | 6–0 |
| St Duthus | 2–1 | 3–0 | 3–2 | 1–2 | 2–8 | 2–1 | 1–3 | 4–3 | 2–2 | 2–3 | — | 3–1 |
| Thurso | 4–2 | 1–2 | 3–3 | 1–5 | 3–4 | 3–6 | 0–4 | 1–0 | 1–0 | 1–0 | 0–3 | — |
* ↑ Match played at Dalmore Park, Alness.
* ↑ Match played at the Recreation Grounds, Invergordon.
* ↑ Match played on the second pitch at Dalmore Park, Alness.
* ↑ Match played at Dalmore Park, Alness.
* ↑ Match played at Dalmore Park, Alness.
* ↑ Match played at Culcairn Park, Evanton.
* ↑ Match played at Inverness Royal Academy.
* ↑ Match played at Inverness Royal Academy.
* ↑ Match played at Inverness Royal Academy.
* ↑ Match played at Inverness Royal Academy.
* ↑ Match played at Dalmore Park, Alness.
* ↑ Match played at Inverness Royal Academy.
* ↑ Match played at Culcairn Park, Evanton.
* ↑ Match played at Culcairn Park, Evanton.
* ↑ Match played at Inverness Royal Academy.
* ↑ Match played at Lochaber High School 3G.
* ↑ Match played at Lochaber High School 3G.
* ↑ Match played at Lochaber High School 3G.
* ↑ Match played at Recreation Grounds, Invergordon.
* ↑ Match awarded 1–0 to Golspie Sutherland, as Orkney were unable to field a team.
* ↑ Match awarded 1–0 to Halkirk United, as Fort William were unable to field a team.
* ↑ Match played at Highland Football Academy 3G, Dingwall.
* ↑ Match played at Dalmore Park, Alness.
* ↑ Match played at Inverness Royal Academy.
* ↑ Match played at Inverness Royal Academy.
* ↑ Match played at Dalmore Park, Alness.
* ↑ Match played at Inverness Royal Academy.
* ↑ Match played at Inverness Royal Academy.
* ↑ Match played at Inverness Royal Academy.
* ↑ Match played on the second pitch at Dalmore Park, Alness.
* ↑ Match played at Dalmore Park, Alness.
* ↑ Match played at Dalmore Park, Alness.
* ↑ Match played at Kirkwall Grammar School, Kirkwall.
* ↑ Match awarded 1–0 to Orkney, as Bonar Bridge were unable to field a team.
* ↑ Match played at Naver 3G, Thurso.
* ↑ Match played at Stromness 3G, Stromness.
* ↑ Match played at Naver 3G.
* ↑ Match played at Naver 3G.
* ↑ Match awarded 1–0 to Thurso, as Loch Ness were unable to field a team.