Ask Not What Your Country Can Do For You speech
Vice President Johnson, Mr. Speaker, Mr. Chief Justice, President Eisenhower, Vice President Nixon, President Truman, reverend clergy, fellow citizens, we observe today not a victory of party, but a celebration of freedom - symbolizing an end, as well as a beginning - signifying renewal, as well as change. For I have sworn before you and Almighty God the same solemn oath our forebears prescribed nearly a century and three quarters ago. 
The world is very different now. For man holds in his mortal hands the power to abolish all forms of human poverty and all forms of human life. And yet the same revolutionary beliefs for which our forebears fought are still at issue around the globe - the belief that the rights of man come not from the generosity of the state, but from the hand of God. 
We dare not forget today that we are the heirs of that first revolution. Let the word go forth from this time and place, to friend and foe alike, that the torch has been passed to a new generation of Americans - born in this century, tempered by war, disciplined by a hard and bitter peace, proud of our ancient heritage - and unwilling to witness or permit the slow undoing of those human rights to which this Nation has always been committed, and to which we are committed today at home and around the world. 
Let every nation know, whether it wishes us well or ill, that we shall pay any price, bear any burden, meet any hardship, support any friend, oppose any foe, in order to assure the survival and the success of liberty. 
This much we pledge - and more. 
To those old allies whose cultural and spiritual origins we share, we pledge the loyalty of faithful friends. United, there is little we cannot do in a host of cooperative ventures. Divided, there is little we can do - for we dare not meet a powerful challenge at odds and split asunder. 
To those new States whom we welcome to the ranks of the free, we pledge our word that one form of colonial control shall not have passed away merely to be replaced by a far more iron tyranny. We shall not always expect to find them supporting our view. But we shall always hope to find them strongly supporting their own freedom - and to remember that, in the past, those who foolishly sought power by riding the back of the tiger ended up inside. 
To those peoples in the huts and villages across the globe struggling to break the bonds of mass misery, we pledge our best efforts to help them help themselves, for whatever period is required - not because the Communists may be doing it, not because we seek their votes, but because it is right. If a free society cannot help the many who are poor, it cannot save the few who are rich. 
To our sister republics south of our border, we offer a special pledge - to convert our good words into good deeds - in a new alliance for progress - to assist free men and free governments in casting off the chains of poverty. But this peaceful revolution of hope cannot become the prey of hostile powers. Let all our neighbours know that we shall join with them to oppose aggression or subversion anywhere in the Americas. And let every other power know that this Hemisphere intends to remain the master of its own house. 
To that world assembly of sovereign states, the United Nations, our last best hope in an age where the instruments of war have far outpaced the instruments of peace, we renew our pledge of support - to prevent it from becoming merely a forum for invective - to strengthen its shield of the new and the weak - and to enlarge the area in which its writ may run. 
Finally, to those nations who would make themselves our adversary, we offer not a pledge but a request: that both sides begin anew the quest for peace, before the dark powers of destruction unleashed by science engulf all humanity in planned or accidental self-destruction. 
We dare not tempt them with weakness. For only when our arms are sufficient beyond doubt can we be certain beyond doubt that they will never be employed. 
But neither can two great and powerful groups of nations take comfort from our present course - both sides overburdened by the cost of modern weapons, both rightly alarmed by the steady spread of the deadly atom, yet both racing to alter that uncertain balance of terror that stays the hand of mankind's final war. 
So let us begin anew - remembering on both sides that civility is not a sign of weakness, and sincerity is always subject to proof. Let us never negotiate out of fear. But let us never fear to negotiate. 
Let both sides explore what problems unite us instead of belabouring those problems which divide us. 
Let both sides, for the first time, formulate serious and precise proposals for the inspection and control of arms - and bring the absolute power to destroy other nations under the absolute control of all nations. 
Let both sides seek to invoke the wonders of science instead of its terrors. Together let us explore the stars, conquer the deserts, eradicate disease, tap the ocean depths, and encourage the arts and commerce. 
Let both sides unite to heed in all corners of the earth the command of Isaiah - to "undo the heavy burdens -. and to let the oppressed go free." 
And if a beachhead of cooperation may push back the jungle of suspicion, let both sides join in creating a new endeavour, not a new balance of power, but a new world of law, where the strong are just and the weak secure and the peace preserved. 
All this will not be finished in the first 100 days. Nor will it be finished in the first 1,000 days, nor in the life of this Administration, nor even perhaps in our lifetime on this planet. But let us begin. 
In your hands, my fellow citizens, more than in mine, will rest the final success or failure of our course. Since this country was founded, each generation of Americans has been summoned to give testimony to its national loyalty. The graves of young Americans who answered the call to service surround the globe. 
Now the trumpet summons us again - not as a call to bear arms, though arms we need; not as a call to battle, though embattled we are - but a call to bear the burden of a long twilight struggle, year in and year out, "rejoicing in hope, patient in tribulation" - a struggle against the common enemies of man: tyranny, poverty, disease, and war itself. 
Can we forge against these enemies a grand and global alliance, North and South, East and West, that can assure a more fruitful life for all mankind? Will you join in that historic effort? 
In the long history of the world, only a few generations have been granted the role of defending freedom in its hour of maximum danger. I do not shank from this responsibility - I welcome it. I do not believe that any of us would exchange places with any other people or any other generation. The energy, the faith, the devotion which we bring to this endeavour will light our country and all who serve it -- and the glow from that fire can truly light the world. 
And so, my fellow Americans: ask not what your country can do for you - ask what you can do for your country. 
My fellow citizens of the world: ask not what America will do for you, but what together we can do for the freedom of man. 
Finally, whether you are citizens of America or citizens of the world, ask of us the same high standards of strength and sacrifice which we ask of you. With a good conscience our only sure reward, with history the final judge of our deeds, let us go forth to lead the land we love, asking His blessing and His help, but knowing that here on earth God's work must truly be our own. 
