| Year | Title | Role | Notes |
| 1962–1963 | Emergency Ward 10 | Richard Moone | Series regular |
| 1963 | Drama 61-67 | Peter Harris | Episode: "Drama '63: Question of Guilt" |
| 1965 | The Sullavan Brothers | Norman Vincent | Episode: "Insufficient Evidence" |
| Londoners | Telfer, Rait's Assistant | Episode: "A Little Touch of Henry" |
| Six of the Best | Alf | Episode: "Annie Doesn't Live Here Anymore" |
| Love Story | Albert | Episode: "Twice Upon a Time" |
| 1966 | In the West End Tonight | Harold Crompton | TV film |
| 1968 | The Wednesday Play | Charley | Episode: "Mooney and His Caravans" |
| Thirty-Minute Theatre | Geoffrey Bell | Episode: "A Personal Affair" |
| Armchair Theatre | Peter | Episode: "One Night I Danced with Mr. Dalton" |
| Never a Cross Word | Blackdown | Episode: "Mr and Mrs Baldock and Friend" |
| Boy Meets Girl | Gerald | Episode: "Easy on the Clutch" |
| 1968–1971 | Please Sir! | Bernard Hedges | Series regular |
| 1969 | All Star Comedy Carnival | TV film |
| BBC Play of the Month | Octavius Caesar | Episode: "Julius Caesar" |
| Thirty-Minute Theatre | Richard Fox | Episode: "Roly Poly" |
| The Wednesday Play | Mike | Episode: "A Serpent in Putney" |
| 1970 | BBC Play of the Month | Bob Acres | Episode: "The Rivals" |
| Malcolm | Episode: "Macbeth" |
| 1971 | The Fenn Street Gang | Bernard Hedges | 3 episodes |
| 1972 | BBC Play of the Month | Tom Wrench | Episode: "Trelawny of the Wells" |
| ITV Sunday Night Theatre | Ben Spray | Episode: "Ben Spray" |
| My Wife Next Door | George Bassett | Series regular |
| 1972–1973 | Upstairs, Downstairs | Thomas Watkins | Recurring role |
| 1973 | ITV Play of the Week | Azarius | Episode: "Tobias and the Angel" |
| 1974–1975 | No, Honestly | Charles Danby | Series regular |
| 1975–1978 | Wodehouse Playhouse | Various roles |
| 1977 | The Upchat Line | Mike Upchat | Recurring role |
| 1979 | Thomas & Sarah | Thomas Watkins | Series regular |
| 1980 | Play for Today | Paul Clements | Episode: "A Walk in the Forest" |
| Tales of the Unexpected | Rev. George Duckworth | Episode: "Georgy Porgy" |
| 1983–1984 | Father's Day | Lyall Jarvis | Series regular |
| 1987–1994 | Fireman Sam | Narrator, all voices | Voice role |
| 1988 | Tales of the Unexpected | Robert Sandy | Episode: "The Surgeon" |
| 1989–1992 | Forever Green | Jack Boult | Series regular |
| 1990 | Screenplay | Doug | Episode: "Keeping Tom Nice" |
| 1991 | Tonight at 8.30 | Various roles | 3 episodes |
| 1996 | Testament: The Bible in Animation | Jonah | Episode: "Jonah", voice role |
| 1998 | Heartbeat | Jim Ryan | Episode: "The Enemy Within" |
| The Mrs Bradley Mysteries | Alastair Bing | Episode: "Speedy Death" |
| 1999 | Peak Practice | Harry Capper | Episode: "Before the Lights Go Out" |
| 2001 | Dalziel and Pascoe | Sgt Ted Lock | Episode: "Secrets of the Dead" |
| 2004 | Down to Earth | David Brewer | Episode: "Family Ties" |
| He Knew He Was Right | Mr. Outhouse | Miniseries |
| Doc Martin | John Slater | Episode: "Of All the Harbours in All the Towns" |
| 2008 | Little Dorrit | Mr. Casby | Series regular |