| Year | Title | Role | Notes |
| 1969 | Special Branch | Det. Constable Pearce | |
| 1971 | Merry-Go-Round | Saxon Prisoner | Episode: "The Raven and the Cross 1", TV Documentary |
| 1972 | Doomwatch | Stephen Grigg | Episode: "Enquiry" |
| Omnibus | Dante | Episode: "Max Beerbohm Remembers", TV documentary |
| 1973 | The Dragon's Opponent | First mate | Episode: "The Drawn Sword", historical miniseries |
| 1977 | Doctor Who | Goudry | Serial: The Sun Makers |
| 1978–1981 | Blake's 7 | Vila Restal | 52 episodes |
| 1980 | The Dawson Watch | TBA | 2 episodes: "The Future" & "Holidays", sci-fi comedy |
| 1981 | Yes Minister | Constable Ross | Episode: "The Death List" |
| 1983 | Paul Squire, Esq | TBA | Episode: "1 ", sketch and variety show |
| 1986 | Rainbow | Detective Inspector Frost | Episode: "Detectives" |
| 1988 | King & Castle | Inspector Bell | Episode: "Floppy Discs", crime drama |
| 1989 | The Play on One | Daniel / Charlie | 2 episodes: "Clowns" & "These Foolish Things" |
| Capital City | Estate agent | Episode: "Thanksgiving" |
| 1990 | The Two of Us | Police sergeant | Episode: "Dangers in the Night" |
| London's Burning | A. C. O. Howard | Episode "3 ", role uncredited |
| 1991 | Kinsey | Murray | Episode: "The Authentic Voice... Little Miss Goosestep" |
| 1993 | Between the Lines | Police Federation Rep. | Episode: "Some Must Watch" |
| 1994 | True Crimes | Reenactment | Episode: "The Deepest Secret", TV documentary |
| The Bill | Geoff Tilson | Episode: "Menace" |
| 1995, 2000 | Casualty | Graham Wingate / Pat Sadler | 2 episodes: "Bringing It All Back Home" & "States of Shock" |
| 2005–2013, 2015–2017 | EastEnders | Reverend George Stevens | 54 episodes |
| 2009 | Midsomer Murders | Derek Painter | Episode: "The Dogleg Murders" |