Hillary Diane Rodham Clinton (pronounced /ˈhɪləri daɪˈæn ˈrɒdəm ˈklɪntən/; born October 26, 1947) is the 67th United States Secretary of State, serving in the administration of President Barack Obama. She was a United States Senator for New York from 2001 to 2009. As the wife of the 42nd President of the United States, Bill Clinton, she was the First Lady of the United States from 1993 to 2001. In the 2008 election, Clinton was a leading candidate for the Democratic presidential nomination.

A native of Illinois, Hillary Rodham attracted national attention in 1969 for her remarks as the first student commencement speaker at Wellesley College. She embarked on a career in law after graduating from Yale Law School in 1973. Following a stint as a Congressional legal counsel, she moved to Arkansas in 1974 and married Bill Clinton in 1975. Rodham cofounded the Arkansas Advocates for Children and Families in 1977, and became the first female chair of the Legal Services Corporation in 1978. Named the first female partner at Rose Law Firm in 1979, she was twice listed as one of the 100 most influential lawyers in America. First Lady of Arkansas from 1979 to 1981 and 1983 to 1992 with husband Bill as Governor, she successfully led a task force to reform Arkansas's education system. She sat on the board of directors of Wal-Mart and several other corporations.

In 1994 as First Lady of the United States, her major initiative, the Clinton health care plan, failed to gain approval from the U.S. Congress. However, in 1997 and 1999, Clinton played a role in advocating the establishment of the State Children's Health Insurance Program, the Adoption and Safe Families Act, and the Foster Care Independence Act. Her time as First Lady drew a polarized response from the American public. She is the only First Lady to have been subpoenaed, testifying before a federal grand jury in 1996 due to the Whitewater controversy, but was never charged with wrongdoing in this or several other investigations during her husband's administration. The state of her marriage was the subject of considerable speculation following the Lewinsky scandal in 1998.

After moving to the state of New York, Clinton was elected as a U.S. Senator in 2000. That election marked the first time an American First Lady had run for public office; Clinton was also the first female senator to represent the state. In the Senate, she initially supported the Bush administration on some foreign policy issues, including a vote for the Iraq War Resolution. She subsequently opposed the administration on its conduct of the war in Iraq and on most domestic issues. Senator Clinton was reelected by a wide margin in 2006. In the 2008 presidential nomination race, Hillary Clinton won more primaries and delegates than any other female candidate in American history, but narrowly lost to Senator Barack Obama. As Secretary of State, Clinton became the first former First Lady to serve in a president's cabinet.
