A little Skye Terrier named Bobby is the pet of a Scottish farmer and his wife (Gordon Jackson and Rosalie Crutchley) but the dog loves a hired man on the farm called Auld Jock (Alex Mackenzie). When money grows scarce on the farm, Auld Jock is fired. He travels to Edinburgh, Scotland and Bobby follows him. Auld Jock dies in poverty and is buried in Greyfriar's Kirkyard. Bobby returns to Auld Jock's grave every night to sleep.
Against the wishes of his wife (Kay Walsh), the graveyard caretaker James Brown (Donald Crisp) tries to shoo Bobby away, but Bobby always finds his way back to the grave. Bobby endears himself to all, especially the neighborhood children. Brown and a restaurant owner, Mr. Traill (Laurence Naismith), compete for the affections of the dog. Brown alleges Traill should pay Bobby's licence fee, which he refuses on principle, not being Bobby's master.
Bobby's fate rests with the Lord Provost of Edinburgh (Andrew Cruickshank) and, without a license and someone to take responsibility for Bobby, he may be destroyed. The children of Edinburgh contribute their pennies for Bobby's license. Bobby is declared a Freeman of the City and adopted by the populace of Edinburgh.