唐京兆三原(今陕西三原东北)人,字光国。明法中第。累授大理丞。神龙二年(706),桓彦范等为武三思构陷,他坚持未经审问清楚不应定罪,险遭贬逐。旋出为闻喜令,调任长安令,拒绝宦官请托,受睿宗嘉奖。开元二年(714),任吏部侍郎,铨叙平允,与卢从愿并为当世所称。四年,出为滑州刺史,转同州刺史,迁河南尹。十年,任大理卿,因反对法外加刑,与玄宗力争,终于使犯者免死。后为御史大夫。晚年为岭南采访处置使,在任病死。